What OddsPapi does and who it is for

OddsPapi sits in a fairly specialized corner of the API market: it pulls live and historical betting odds from a large network of sportsbooks — over 300 by the provider's count — and exposes that data through a single, normalized REST API. The bookmaker list spans the full spectrum from sharp books with tight lines (Pinnacle, Matchbook, Smarkets) to the mass-market US operators (DraftKings, FanDuel, BetMGM, Caesars Sportsbook, ESPN BET) and a long tail of European and global brands like Bet365, Betfair, Unibet, 1xBet, SBOBET, and Betway.

With nearly 5,700 marketplace subscribers and a popularity score of 9.9 out of 10, OddsPapi is clearly the go-to choice for developers in this space. The primary audiences are:

  • Arbitrage and value-bet hunters who need cross-bookmaker odds in near-real time
  • Trading desk developers who want line-movement data and closing-line value (CLV) analytics
  • Sportsbook operators who need an odds feed to price their own markets
  • Sports analytics researchers who want historical odds time-series, granular down to the second
  • Media and content teams who want to display live lines alongside scores

Key capabilities and endpoint walkthrough

OddsPapi exposes 96 endpoints total. The logical groupings below cover the most important ones.

Real-time odds and markets

GET /odds returns current odds for a fixture across bookmakers, covering market types like moneylines, spreads, totals, and player props. GET /odds-by-tournaments lets you pull odds aggregated at the tournament level, which is useful when you want a broad snapshot rather than event-by-event calls.

GET /surebets surfaces arbitrage opportunities derived from the odds already requested by API users. The provider is explicit that this endpoint becomes more useful as more users call the odds endpoints simultaneously — it is essentially a crowd-sourced surebet detector rather than a standalone guaranteed-arbitrage engine.

GET /valuebets works similarly: it flags odds that diverge meaningfully from the consensus across bookmakers. The docs note that querying at least 10–20 bookmakers in your odds calls improves the quality of value-bet signals.

Fixtures, tournaments, and metadata

GET /fixtures can be filtered by sport, tournament, or participant. GET /sports and GET /allsports return the catalogue of supported sports. GET /tournaments and GET /competitions provide the hierarchical structure needed to build correct query parameters for odds and historical calls. GET /oddstypes enumerates the market types available for a given sport.

Historical data

This is a notable differentiator. The historical suite — GET /historical/matches, GET /historical/events, GET /historical/odds, and GET /historical/scores — lets you reconstruct full odds time-series for past events, with the documentation noting granularity down to the second. The workflow is sequential: fetch competitions or tournaments to get IDs, then fetch events or matches using those IDs, then use the resulting eventId or matchId to pull historical odds. GET /futures/odds provides snapshots for outright/futures markets grouped by bookmaker.

Media assets and mapping

The /media namespace (/media/bookmakers/{bookmaker}, /media/tournaments/{tournamentId}, /media/participants/{participantId}, /media/categories/{a2}) returns image data for bookmakers, tournaments, and participants — handy for UI-facing applications that need logos. The API also provides mapping to external data providers including Betradar, Betgenius, Sofascore, and Flashscore, plus cross-bookmaker ID mapping, which significantly reduces the integration work when combining OddsPapi with other data sources.

WebSocket streaming

The API documentation describes a WebSocket gateway with sub-millisecond update delivery, JSON or MessagePack encoding, cursor-based resume/replay (entryId), and filtering by sport, league, or bookmaker. Channels include odds, fixtures, scores, futures, oddsFutures, stats, lineups, injuries, bookmakers, and currencies. However, WebSocket access is not available through the standard subscription tiers — you need to contact the provider directly at [email protected] for this.

Pricing breakdown

OddsPapi uses a freemium model with four tiers:

Plan Price Monthly requests Rate limit
BASIC $0 250
PRO $19 10,000 3,600 / hour
ULTRA $49 50,000 7,200 / hour
MEGA $199 300,000 10,000 / hour

The free BASIC tier grants only 250 requests per month, which is barely enough for exploratory testing — roughly 8 requests per day. It is not viable for any production polling scenario. PRO at $19/month gives you 10,000 requests, which works out to about 333 per day; at a 60-second polling interval across a handful of fixtures, that runs dry quickly. ULTRA (the recommended tier at $49/month) offers 50,000 monthly requests with a 7,200/hour ceiling — more realistic for a lightweight arbitrage tool covering a subset of sports. MEGA at $199/month provides 300,000 monthly requests and supports 10,000 requests per hour, which is the minimum realistic floor for any serious trading application polling dozens of bookmakers across multiple live events simultaneously.

For higher-throughput or real-time streaming needs, the WebSocket tier sits outside these plans and requires a custom commercial conversation.

Practical use cases

Arbitrage scanner: Call /odds across two or more bookmakers, feed the results to /surebets, and surface any two-way or three-way arb opportunities. The effectiveness scales with the number of bookmakers you query.

Closing line value tracker: Pull pre-match odds at open and periodically until kick-off using the REST API, then compare with closing lines stored from /historical/odds. This is a standard technique for evaluating the quality of your betting models.

Media odds widget: Use /fixtures and /odds to display live lines on a sports media site; supplement with /media/bookmakers/{bookmaker} to render bookmaker logos inline.

Model training dataset: Use the historical suite to assemble a large odds time-series dataset across multiple tournaments and sports for machine learning work. The second-level granularity and external provider mappings make this genuinely useful for researchers.

Limitations and things to check before integrating

The average success rate reported for OddsPapi is 87%. For an odds aggregation use case — particularly arbitrage or live trading — that figure warrants scrutiny. A 13% failure rate at the request level means you should build robust retry logic and fallback handling into your client. Test your target endpoints under realistic load before going to production.

The average response latency of 365ms is acceptable for snapshot polling but is not suitable for high-frequency trading without the WebSocket tier. If your use case depends on catching sub-second line movements, REST polling alone will not deliver that.

Request budgets on the lower tiers are tight. If you need to cover many bookmakers and sports simultaneously with short polling intervals, model your request volume carefully before committing to a plan — it is easy to underestimate consumption.

The surebet and valuebet endpoints are explicitly crowd-sourced in nature: their output depends on what other users have already queried. If you are on a low-traffic plan and calling niche sports, you may see sparse results from those endpoints.

WebSocket access, multilingual support, and enterprise onboarding all require out-of-band contact with the provider rather than self-serve signup.

Getting started

You can sign up for the BASIC tier immediately to explore the endpoint catalogue. The documentation lives at docs.oddspapi.io and includes an API reference and WebSocket guide. A useful starting sequence for most applications is: call /sports to get sport IDs, then /tournaments to get tournament IDs, then /fixtures to get event IDs, and finally /odds with those event IDs and your desired bookmaker list. The provider also ships a Python pandas helper endpoint (/odds-python-dataframe, /matches-python-dataframe) for developers who want to skip the deserialization boilerplate and go straight to DataFrame analysis.

For WebSocket or enterprise access, reach out to [email protected] directly.