{"id":2475,"date":"2026-02-22T16:17:03","date_gmt":"2026-02-22T16:17:03","guid":{"rendered":"https:\/\/oddspapi.io\/blog\/?p=2475"},"modified":"2026-03-12T21:09:57","modified_gmt":"2026-03-12T21:09:57","slug":"odds-feed-api-real-time-bookmaker-data","status":"publish","type":"post","link":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/","title":{"rendered":"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier)"},"content":{"rendered":"<h2>What Is an Odds Feed API?<\/h2>\n<p>An odds feed API is a structured data pipeline that delivers real-time bookmaker odds to your application via HTTP or WebSocket. If you&#8217;re building an odds comparison site, a sportsbook platform, a trading desk, or an arbitrage scanner, you need a feed that goes beyond the 40 soft bookmakers that generic APIs offer.<\/p>\n<p>The problem: enterprise feeds from Sportradar or OddsMarket start at $5,000+\/month and require sales calls. Generic APIs like The Odds API cap out at ~40 bookmakers \u2014 all softs, no sharps, no crypto books.<\/p>\n<p>OddsPapi is the third option. <strong>350+ bookmakers<\/strong> (including sharps like Pinnacle, Singbet, and SBOBet), 59 sports, JSON format, and a free tier that includes historical data. REST polling or WebSocket streaming \u2014 your choice.<\/p>\n<h2>What&#8217;s in the Feed: 350+ Bookmakers, 59 Sports<\/h2>\n<p>The OddsPapi odds feed covers every bookmaker category that matters for serious betting infrastructure:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Category<\/th>\n<th>Example Bookmakers<\/th>\n<th>Count<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Sharps<\/strong><\/td>\n<td>Pinnacle, Singbet (Crown), SBOBet<\/td>\n<td>3+<\/td>\n<\/tr>\n<tr>\n<td><strong>Softs (Global)<\/strong><\/td>\n<td>Bet365, Betway, Unibet, William Hill, Ladbrokes<\/td>\n<td>50+<\/td>\n<\/tr>\n<tr>\n<td><strong>US Sportsbooks<\/strong><\/td>\n<td>DraftKings, FanDuel, BetMGM, BetRivers, Hard Rock<\/td>\n<td>15+<\/td>\n<\/tr>\n<tr>\n<td><strong>Crypto \/ Niche<\/strong><\/td>\n<td>1xBet, Stake, BC.Game, Cloudbet, Rollbit<\/td>\n<td>20+<\/td>\n<\/tr>\n<tr>\n<td><strong>Exchanges<\/strong><\/td>\n<td>Betfair Exchange, Polymarket, Kalshi<\/td>\n<td>3<\/td>\n<\/tr>\n<tr>\n<td><strong>Regional (Brazil)<\/strong><\/td>\n<td>EstrelaBet, Sportingbet BR, Superbet BR, Blaze, KTO<\/td>\n<td>15+<\/td>\n<\/tr>\n<tr>\n<td><strong>Regional (Europe)<\/strong><\/td>\n<td>Betano, SNAI, Sisal, Eurobet, Goldbet, ZeBet<\/td>\n<td>40+<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>On a single English Premier League fixture, the feed typically returns <strong>130+ bookmakers<\/strong> with odds across 50-100+ markets. Here&#8217;s the JSON structure you&#8217;ll receive:<\/p>\n<pre class=\"wp-block-code\"><code>\r\n# Odds response structure (simplified)\r\n{\r\n  \"fixtureId\": \"id1000001761301055\",\r\n  \"bookmakerOdds\": {\r\n    \"pinnacle\": {\r\n      \"markets\": {\r\n        \"101\": {           # Full Time Result (1X2)\r\n          \"outcomes\": {\r\n            \"101\": {       # Home Win\r\n              \"players\": {\r\n                \"0\": { \"price\": 8.25 }\r\n              }\r\n            },\r\n            \"102\": {       # Draw\r\n              \"players\": {\r\n                \"0\": { \"price\": 4.55 }\r\n              }\r\n            },\r\n            \"103\": {       # Away Win\r\n              \"players\": {\r\n                \"0\": { \"price\": 1.46 }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    },\r\n    \"bet365\": { ... },\r\n    \"1xbet\": { ... },\r\n    \/\/ 130+ more bookmakers\r\n  }\r\n}\r\n<\/code><\/pre>\n<p>Each bookmaker object contains nested markets, outcomes, and player-level pricing. The path to any price is always:<\/p>\n<pre class=\"wp-block-code\"><code>\r\nprice = response['bookmakerOdds'][slug]['markets'][marketId]['outcomes'][outcomeId]['players']['0']['price']\r\n<\/code><\/pre>\n<p>Sports coverage spans <strong>59 sports<\/strong> \u2014 every major traditional sport plus esports (CS2, LoL, Dota 2, Valorant), prediction markets (Polymarket, Kalshi), and niche events.<\/p>\n<h2>Pinnacle Odds Feed: Sharp Lines Without Enterprise Access<\/h2>\n<p>Pinnacle is the benchmark for sharp bettors. Lowest vig in the industry, no account limits for winners, and their closing line efficiency is the standard that quantitative models are measured against. If you&#8217;re building anything that involves line comparison, CLV analysis, or model validation, you need Pinnacle data.<\/p>\n<p>The problem: <strong>Pinnacle&#8217;s own API is closed to the public.<\/strong> You need a commercial account with volume requirements to get access. Their documentation exists, but the endpoints are gated behind enterprise approval.<\/p>\n<p>OddsPapi aggregates Pinnacle odds alongside 350+ other bookmakers, accessible with a free API key. No sales calls, no commercial account needed.<\/p>\n<pre class=\"wp-block-code\"><code>\r\nimport requests\r\n\r\nAPI_KEY = \"YOUR_API_KEY\"\r\nBASE_URL = \"https:\/\/api.oddspapi.io\/v4\"\r\n\r\n# Get odds for a Premier League fixture\r\nresponse = requests.get(f\"{BASE_URL}\/odds\", params={\r\n    \"apiKey\": API_KEY,\r\n    \"fixtureId\": \"id1000001766905890\"\r\n})\r\ndata = response.json()\r\n\r\n# Extract Pinnacle vs Bet365 1X2 odds\r\npinnacle = data[\"bookmakerOdds\"][\"pinnacle\"][\"markets\"][\"101\"][\"outcomes\"]\r\nbet365 = data[\"bookmakerOdds\"][\"bet365\"][\"markets\"][\"101\"][\"outcomes\"]\r\n\r\nlabels = {\"101\": \"Home\", \"102\": \"Draw\", \"103\": \"Away\"}\r\n\r\nprint(f\"{'Outcome':&lt;10} {'Pinnacle':&gt;10} {'Bet365':&gt;10} {'Edge':&gt;10}\")\r\nprint(\"-\" * 42)\r\nfor oid in [\"101\", \"102\", \"103\"]:\r\n    pinn_price = pinnacle[oid][\"players\"][\"0\"][\"price\"]\r\n    b365_price = bet365[oid][\"players\"][\"0\"][\"price\"]\r\n    edge = ((b365_price \/ pinn_price) - 1) * 100\r\n    print(f\"{labels[oid]:&lt;10} {pinn_price:&gt;10.3f} {b365_price:&gt;10.3f} {edge:&gt;+9.1f}%\")\r\n<\/code><\/pre>\n<p>Output (Everton vs Manchester United):<\/p>\n<pre class=\"wp-block-code\"><code>\r\nOutcome     Pinnacle     Bet365       Edge\r\n------------------------------------------\r\nHome            3.770      3.600       -4.5%\r\nDraw            3.900      3.800       -2.6%\r\nAway            1.952      1.950       -0.1%\r\n<\/code><\/pre>\n<p>This is how you build a line shopping tool: fetch Pinnacle as the benchmark, compare every other bookmaker, and flag the edges. For a deeper dive into accessing Pinnacle data, see our <a href=\"https:\/\/oddspapi.io\/blog\/pinnacle-api-odds-access\/\">Pinnacle Odds API guide<\/a>.<\/p>\n<h2>Bet365 Odds Feed via API<\/h2>\n<p>Bet365 is the world&#8217;s largest online bookmaker by volume. They have no public API \u2014 zero documentation, no developer portal, no OAuth flow. If you want Bet365 odds programmatically, your options are scraping (fragile, against ToS, constant breakage) or an aggregator.<\/p>\n<p>OddsPapi includes Bet365 odds in the same unified feed as every other bookmaker. Same JSON structure, same endpoint, same API key.<\/p>\n<pre class=\"wp-block-code\"><code>\r\nimport requests\r\n\r\nAPI_KEY = \"YOUR_API_KEY\"\r\nBASE_URL = \"https:\/\/api.oddspapi.io\/v4\"\r\n\r\n# Get all odds for a fixture\r\nresponse = requests.get(f\"{BASE_URL}\/odds\", params={\r\n    \"apiKey\": API_KEY,\r\n    \"fixtureId\": \"id1000001766905890\"\r\n})\r\ndata = response.json()\r\n\r\n# Filter Bet365 markets\r\nbet365 = data[\"bookmakerOdds\"][\"bet365\"][\"markets\"]\r\nprint(f\"Bet365 markets available: {len(bet365)}\")\r\n\r\n# Show market IDs\r\nmarket_names = {\r\n    \"101\": \"Full Time Result\",\r\n    \"104\": \"Both Teams To Score\",\r\n    \"1010\": \"Over\/Under 2.5 Goals\",\r\n    \"1068\": \"Asian Handicap -0.5\"\r\n}\r\n\r\nfor mid, name in market_names.items():\r\n    if mid in bet365:\r\n        outcomes = bet365[mid][\"outcomes\"]\r\n        prices = []\r\n        for oid, o in outcomes.items():\r\n            price = o[\"players\"][\"0\"][\"price\"]\r\n            prices.append(f\"{oid}={price}\")\r\n        print(f\"  {name}: {', '.join(prices)}\")\r\n<\/code><\/pre>\n<p>On a major Premier League match, Bet365 typically provides <strong>100+ markets<\/strong> including 1X2, Asian Handicaps, Over\/Under lines, BTTS, correct score, and more. For historical Bet365 data and backtesting strategies, see our <a href=\"https:\/\/oddspapi.io\/blog\/bet365-historical-odds-guide-the-data-apis-and-strategy\/\">Bet365 Historical Odds guide<\/a>.<\/p>\n<h2>REST API vs WebSocket: Choosing Your Feed Method<\/h2>\n<p>OddsPapi delivers odds data through two channels. Which one you need depends on what you&#8217;re building.<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Feature<\/th>\n<th>REST API (Polling)<\/th>\n<th>WebSocket (Push)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Delivery<\/strong><\/td>\n<td>Request\/response \u2014 you poll<\/td>\n<td>Server pushes updates to you<\/td>\n<\/tr>\n<tr>\n<td><strong>Latency<\/strong><\/td>\n<td>Depends on poll interval (seconds)<\/td>\n<td>Sub-second updates<\/td>\n<\/tr>\n<tr>\n<td><strong>Best For<\/strong><\/td>\n<td>Pre-match, line shopping, backtesting<\/td>\n<td>Live betting, arb detection, trading<\/td>\n<\/tr>\n<tr>\n<td><strong>Data Format<\/strong><\/td>\n<td>JSON over HTTPS<\/td>\n<td>JSON over WebSocket<\/td>\n<\/tr>\n<tr>\n<td><strong>Free Tier<\/strong><\/td>\n<td>Yes \u2014 350+ bookmakers included<\/td>\n<td>Pro tier<\/td>\n<\/tr>\n<tr>\n<td><strong>Complexity<\/strong><\/td>\n<td>Simple \u2014 standard HTTP requests<\/td>\n<td>Moderate \u2014 persistent connection<\/td>\n<\/tr>\n<tr>\n<td><strong>Rate Limits<\/strong><\/td>\n<td>Per-plan request quotas<\/td>\n<td>Streaming \u2014 no polling needed<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h3>When to Use REST Polling<\/h3>\n<p>REST is the right choice for most use cases: odds comparison sites, pre-match analytics, model training, backtesting, and any workflow where you don&#8217;t need sub-second updates. You poll the API on your schedule, parse the JSON, and process the data.<\/p>\n<pre class=\"wp-block-code\"><code>\r\n# REST: Poll for odds every 30 seconds\r\nimport requests, time\r\n\r\nAPI_KEY = \"YOUR_API_KEY\"\r\n\r\nwhile True:\r\n    response = requests.get(\"https:\/\/api.oddspapi.io\/v4\/odds\", params={\r\n        \"apiKey\": API_KEY,\r\n        \"fixtureId\": \"id1000001766905890\"\r\n    })\r\n    odds = response.json()\r\n    bookmakers = odds[\"bookmakerOdds\"]\r\n    print(f\"[{time.strftime('%H:%M:%S')}] {len(bookmakers)} bookmakers updated\")\r\n    time.sleep(30)\r\n<\/code><\/pre>\n<h3>When to Use WebSocket<\/h3>\n<p>WebSocket is for latency-sensitive applications: live in-play arbitrage detection, automated trading, real-time dashboards where every millisecond matters. The server pushes odds changes to your client as they happen \u2014 no polling delay.<\/p>\n<p>WebSocket access is available on Pro tier plans. For a detailed technical comparison, see our <a href=\"https:\/\/oddspapi.io\/blog\/websocket-odds-api-real-time-betting-data\/\">WebSocket Odds API guide<\/a>.<\/p>\n<h2>Odds Feed Providers Compared (2026)<\/h2>\n<p>Here&#8217;s how OddsPapi stacks up against other odds feed providers in the market:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Provider<\/th>\n<th>Bookmakers<\/th>\n<th>Sports<\/th>\n<th>Format<\/th>\n<th>Free Tier<\/th>\n<th>WebSocket<\/th>\n<th>Best For<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>OddsPapi<\/strong><\/td>\n<td><strong>350+<\/strong><\/td>\n<td>59<\/td>\n<td>JSON<\/td>\n<td><strong>Yes<\/strong><\/td>\n<td>Yes (Pro)<\/td>\n<td>Broadest coverage + free tier<\/td>\n<\/tr>\n<tr>\n<td>OddsMarket<\/td>\n<td>300+<\/td>\n<td>30+<\/td>\n<td>XML \/ JSON<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<td>Enterprise B2B, XML integrations<\/td>\n<\/tr>\n<tr>\n<td>OpticOdds<\/td>\n<td>200+<\/td>\n<td>20+<\/td>\n<td>JSON<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<td>Fastest live latency<\/td>\n<\/tr>\n<tr>\n<td>The Odds API<\/td>\n<td>~40<\/td>\n<td>18<\/td>\n<td>JSON<\/td>\n<td>Yes (limited)<\/td>\n<td>No<\/td>\n<td>Simple US\/UK sportsbook coverage<\/td>\n<\/tr>\n<tr>\n<td>OddsJam<\/td>\n<td>100+<\/td>\n<td>10+<\/td>\n<td>JSON<\/td>\n<td>No<\/td>\n<td>No<\/td>\n<td>Consumer-facing arb tool<\/td>\n<\/tr>\n<tr>\n<td>Sportradar<\/td>\n<td>600+<\/td>\n<td>70+<\/td>\n<td>XML \/ JSON<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<td>Enterprise \u2014 $10K+\/month<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p><strong>Key differentiators:<\/strong> OddsPapi is the only provider that combines 350+ bookmakers (including sharps and crypto books) with a free tier. OpticOdds claims faster live latency for in-play trading. OddsMarket offers XML feeds for legacy integrations. The Odds API is simpler but limited to ~40 soft bookmakers. Sportradar is the enterprise standard but priced accordingly.<\/p>\n<p>If you need the broadest bookmaker coverage at a developer-friendly price, OddsPapi is the clear choice. If you need the absolute fastest live feed for high-frequency trading, OpticOdds is worth evaluating. If you need XML, OddsMarket has it.<\/p>\n<h2>Python Tutorial: Connect to the Odds Feed in 5 Minutes<\/h2>\n<p>Everything below uses tested code against the live OddsPapi API. Copy, paste, replace <code>YOUR_API_KEY<\/code>, and run.<\/p>\n<h3>Step 1: Get Your API Key<\/h3>\n<p>Sign up at <a href=\"https:\/\/oddspapi.io\">oddspapi.io<\/a> \u2014 free tier, no credit card. Your API key goes in the <code>apiKey<\/code> query parameter (not a header).<\/p>\n<pre class=\"wp-block-code\"><code>\r\nimport requests\r\n\r\nAPI_KEY = \"YOUR_API_KEY\"\r\nBASE_URL = \"https:\/\/api.oddspapi.io\/v4\"\r\n\r\n# Verify your key works\r\nresponse = requests.get(f\"{BASE_URL}\/sports\", params={\"apiKey\": API_KEY})\r\nprint(f\"Status: {response.status_code}\")  # 200 = good\r\n<\/code><\/pre>\n<h3>Step 2: Discover Available Sports<\/h3>\n<pre class=\"wp-block-code\"><code>\r\nresponse = requests.get(f\"{BASE_URL}\/sports\", params={\"apiKey\": API_KEY})\r\nsports = response.json()\r\n\r\nprint(f\"Total sports: {len(sports)}\\n\")\r\nfor sport in sports[:10]:\r\n    print(f\"  ID {sport['sportId']:&gt;3}: {sport['sportName']}\")\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre class=\"wp-block-code\"><code>\r\nTotal sports: 59\r\n\r\n  ID  10: Soccer\r\n  ID  11: Basketball\r\n  ID  13: Tennis\r\n  ID  14: American Football\r\n  ID  16: Baseball\r\n  ID  17: Ice Hockey\r\n  ID  18: League of Legends\r\n  ID  19: Dota 2\r\n  ID  20: CS2\r\n  ID  22: MMA\r\n<\/code><\/pre>\n<h3>Step 3: Get Fixtures with Odds<\/h3>\n<pre class=\"wp-block-code\"><code>\r\nfrom datetime import datetime, timedelta, timezone\r\n\r\nnow = datetime.now(timezone.utc)\r\nfrom_date = now.strftime(\"%Y-%m-%dT%H:%M:%SZ\")\r\nto_date = (now + timedelta(days=3)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\r\n\r\nresponse = requests.get(f\"{BASE_URL}\/fixtures\", params={\r\n    \"apiKey\": API_KEY,\r\n    \"sportId\": 10,        # Soccer\r\n    \"from\": from_date,\r\n    \"to\": to_date,\r\n    \"hasOdds\": \"true\"     # Only fixtures with odds\r\n})\r\nfixtures = response.json()\r\nprint(f\"Soccer fixtures (next 3 days): {len(fixtures)}\\n\")\r\n\r\nfor f in fixtures[:5]:\r\n    print(f\"  {f['participant1Name']} vs {f['participant2Name']}\")\r\n    print(f\"    Tournament: {f['tournamentName']}\")\r\n    print(f\"    Fixture ID: {f['fixtureId']}\")\r\n    print(f\"    Kickoff: {f['startTime']}\\n\")\r\n<\/code><\/pre>\n<h3>Step 4: Fetch Odds Across All Bookmakers<\/h3>\n<pre class=\"wp-block-code\"><code>\r\nfixture_id = fixtures[0][\"fixtureId\"]\r\n\r\nresponse = requests.get(f\"{BASE_URL}\/odds\", params={\r\n    \"apiKey\": API_KEY,\r\n    \"fixtureId\": fixture_id\r\n})\r\ndata = response.json()\r\nbookmakers = data[\"bookmakerOdds\"]\r\n\r\nprint(f\"Bookmakers with odds: {len(bookmakers)}\")\r\nprint(f\"Sample slugs: {list(bookmakers.keys())[:10]}\")\r\n<\/code><\/pre>\n<h3>Step 5: Build a Simple Odds Comparison<\/h3>\n<pre class=\"wp-block-code\"><code>\r\n# Compare 1X2 odds across Pinnacle, Bet365, and 1xBet\r\ntargets = [\"pinnacle\", \"bet365\", \"1xbet\"]\r\nlabels = {\"101\": \"Home\", \"102\": \"Draw\", \"103\": \"Away\"}\r\n\r\nprint(f\"{'Outcome':&lt;10}\", end=\"\") for slug in targets: print(f\"{slug:&gt;12}\", end=\"\")\r\nprint()\r\nprint(\"-\" * 46)\r\n\r\nfor oid, label in labels.items():\r\n    print(f\"{label:&lt;10}\", end=\"\") for slug in targets: try: price = bookmakers[slug][\"markets\"][\"101\"][\"outcomes\"][oid][\"players\"][\"0\"][\"price\"] print(f\"{price:&gt;12.3f}\", end=\"\")\r\n        except KeyError:\r\n            print(f\"{'N\/A':&gt;12}\", end=\"\")\r\n    print()\r\n<\/code><\/pre>\n<p>Output (Premier League fixture):<\/p>\n<pre class=\"wp-block-code\"><code>\r\nOutcome       pinnacle      bet365       1xbet\r\n----------------------------------------------\r\nHome            3.770       3.600       3.570\r\nDraw            3.900       3.800       3.880\r\nAway            1.952       1.950       2.020\r\n<\/code><\/pre>\n<h3>Step 6: Historical Odds for Backtesting<\/h3>\n<p>OddsPapi includes historical odds on the free tier \u2014 most competitors charge extra for this. Every odds movement is timestamped, so you can reconstruct line movement and measure closing line value (CLV).<\/p>\n<pre class=\"wp-block-code\"><code>\r\nresponse = requests.get(f\"{BASE_URL}\/historical-odds\", params={\r\n    \"apiKey\": API_KEY,\r\n    \"fixtureId\": fixture_id,\r\n    \"bookmakers\": \"pinnacle\",\r\n    \"marketId\": 101    # Full Time Result (1X2)\r\n})\r\nhistory = response.json()\r\n\r\n# Get Pinnacle Home Win line movement\r\nsnapshots = history[\"bookmakers\"][\"pinnacle\"][\"markets\"][\"101\"][\"outcomes\"][\"101\"][\"players\"][\"0\"]\r\n\r\nprint(\"Pinnacle Home Win \u2014 Line Movement\")\r\nprint(f\"{'Timestamp':&lt;30} {'Price':&gt;8}\")\r\nprint(\"-\" * 40)\r\nfor snap in snapshots[:5]:\r\n    print(f\"{snap['createdAt']:&lt;30} {snap['price']:&gt;8.3f}\")\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre class=\"wp-block-code\"><code>\r\nPinnacle Home Win \u2014 Line Movement\r\nTimestamp                         Price\r\n----------------------------------------\r\n2026-02-22T16:05:11.364684+00:00    8.250\r\n2026-02-22T16:00:35.492689+00:00    8.050\r\n2026-02-22T16:00:23.929521+00:00    8.000\r\n2026-02-22T15:53:30.390068+00:00    7.950\r\n2026-02-22T15:43:03.304789+00:00    7.850\r\n<\/code><\/pre>\n<h2>What Can You Build with an Odds Feed?<\/h2>\n<p>The OddsPapi odds feed is infrastructure. What you build on top depends on your use case:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Use Case<\/th>\n<th>What You Need<\/th>\n<th>OddsPapi Feature<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Odds Comparison Website<\/strong><\/td>\n<td>Pre-match odds from 100+ books<\/td>\n<td>REST API (free tier)<\/td>\n<\/tr>\n<tr>\n<td><strong>Sportsbook Platform<\/strong><\/td>\n<td>Bulk feed for all sports\/markets<\/td>\n<td>REST API + full bookmaker coverage<\/td>\n<\/tr>\n<tr>\n<td><strong>Arbitrage Scanner<\/strong><\/td>\n<td>Real-time odds + low latency<\/td>\n<td>WebSocket (Pro) or REST polling<\/td>\n<\/tr>\n<tr>\n<td><strong>Line Shopping Tool<\/strong><\/td>\n<td>Cross-bookmaker comparison<\/td>\n<td>REST API (free tier)<\/td>\n<\/tr>\n<tr>\n<td><strong>Trading Desk<\/strong><\/td>\n<td>Sharp lines + exchange data<\/td>\n<td>Pinnacle + Betfair Exchange odds<\/td>\n<\/tr>\n<tr>\n<td><strong>Predictive Model<\/strong><\/td>\n<td>Historical odds for training<\/td>\n<td>Historical odds API (free tier)<\/td>\n<\/tr>\n<tr>\n<td><strong>CLV Tracker<\/strong><\/td>\n<td>Closing line data per bookmaker<\/td>\n<td>Historical odds with timestamps<\/td>\n<\/tr>\n<tr>\n<td><strong>White-Label Platform<\/strong><\/td>\n<td>Full market feed for resale<\/td>\n<td>REST + WebSocket + all markets<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>The free tier covers most pre-match use cases \u2014 odds comparison, line shopping, model training, and backtesting. WebSocket and sub-second latency are Pro tier features for live betting and arbitrage detection.<\/p>\n<h2>Odds Feed API FAQ<\/h2>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is an odds feed API?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"An odds feed API is a structured data service that delivers real-time bookmaker odds to your application. It provides pricing data from multiple sportsbooks in a standardized format (typically JSON or XML), enabling you to build odds comparison sites, trading tools, arbitrage scanners, and betting platforms.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is the OddsPapi odds feed free?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes. The OddsPapi free tier includes REST API access to 350+ bookmakers, 59 sports, and historical odds data. No credit card required. WebSocket streaming is available on Pro tier plans.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What format is the odds data?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"OddsPapi delivers odds data in JSON format via REST API (HTTPS) or WebSocket push. The JSON response contains nested bookmaker objects with markets, outcomes, and player-level pricing.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Does the feed include Pinnacle odds?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes. OddsPapi includes Pinnacle (sharp), Bet365, 1xBet, DraftKings, FanDuel, Betfair Exchange, and 350+ other bookmakers. Pinnacle's own API is closed to the public \u2014 OddsPapi is one of the few ways to access their odds programmatically.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the update frequency?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"REST API: odds are updated continuously and available whenever you poll. WebSocket: sub-second push updates as odds change. For pre-match markets, polling every 15-60 seconds is typical. For live betting, WebSocket provides the lowest latency.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I get XML odds feeds?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"OddsPapi uses JSON format exclusively. If you need XML feeds, OddsMarket offers XML\/JSON options. For most modern applications, JSON is the preferred format and is easier to parse in any programming language.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n<h3>What is an odds feed API?<\/h3>\n<p>An odds feed API is a structured data service that delivers real-time bookmaker odds to your application. It provides pricing data from multiple sportsbooks in a standardized format (JSON), enabling you to build odds comparison sites, trading tools, arbitrage scanners, and betting platforms.<\/p>\n<h3>Is the OddsPapi odds feed free?<\/h3>\n<p>Yes. The free tier includes REST API access to 350+ bookmakers, 59 sports, and historical odds data. No credit card required. WebSocket streaming is available on Pro tier plans.<\/p>\n<h3>What format is the odds data?<\/h3>\n<p>JSON format via REST API (HTTPS) or WebSocket push. The JSON response contains nested bookmaker objects with markets, outcomes, and player-level pricing.<\/p>\n<h3>Does the feed include Pinnacle odds?<\/h3>\n<p>Yes. OddsPapi includes Pinnacle (sharp), Bet365, 1xBet, DraftKings, FanDuel, Betfair Exchange, and 350+ other bookmakers. Pinnacle&#8217;s own API is closed to the public \u2014 OddsPapi is one of the few ways to access their odds programmatically.<\/p>\n<h3>What is the update frequency?<\/h3>\n<p>REST API: odds are updated continuously and available whenever you poll. WebSocket: sub-second push updates as odds change. For pre-match markets, polling every 15-60 seconds is typical. For live betting, WebSocket provides the lowest latency.<\/p>\n<h3>Can I get XML odds feeds?<\/h3>\n<p>OddsPapi uses JSON format exclusively. If you need XML feeds, OddsMarket offers XML\/JSON options. For most modern applications, JSON is the preferred format and is easier to parse in any programming language.<\/p>\n<h2>Start Building<\/h2>\n<p>350+ bookmakers. 59 sports. JSON format. Historical data included. Free forever.<\/p>\n<p><strong><a href=\"https:\/\/oddspapi.io\">Get your free API key<\/a><\/strong> \u2014 no credit card, no sales call, no enterprise approval. Start pulling odds in under 5 minutes.<\/p>\n<p><!-- Focus Keyphrase: odds feed api SEO Title: Odds Feed API: Real-Time Bookmaker Data from 350+ Sportsbooks Meta Description: Access real-time odds feeds from Pinnacle, Bet365 & 350+ bookmakers via one API. JSON format, free tier included. REST polling or WebSocket streaming. Slug: odds-feed-api-real-time-bookmaker-data --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Get a real-time odds feed from Pinnacle, Bet365 &#038; 350+ bookmakers. One API, JSON format, free tier. REST or WebSocket. No enterprise contract needed.<\/p>\n","protected":false},"author":2,"featured_media":2477,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[12,9,11,10],"class_list":["post-2475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to-guides","tag-betting-data","tag-odds-api","tag-python","tag-sports-betting-api"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier) | Odds API Development Blog<\/title>\n<meta name=\"description\" content=\"Unlock the power of the OddsPapi odds feed API for real-time bookmaker odds and elevate your betting platform beyond conventional options.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier) | Odds API Development Blog\" \/>\n<meta property=\"og:description\" content=\"Unlock the power of the OddsPapi odds feed API for real-time bookmaker odds and elevate your betting platform beyond conventional options.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/\" \/>\n<meta property=\"og:site_name\" content=\"Odds API Development Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-22T16:17:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-12T21:09:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1408\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Odds API Writer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@oddspapiapi\" \/>\n<meta name=\"twitter:site\" content=\"@oddspapiapi\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Odds API Writer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/\"},\"author\":{\"name\":\"Odds API Writer\",\"@id\":\"https:\/\/oddspapi.io\/blog\/#\/schema\/person\/b6f21e649c4f556f0a95c23a0f1efa13\"},\"headline\":\"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier)\",\"datePublished\":\"2026-02-22T16:17:03+00:00\",\"dateModified\":\"2026-03-12T21:09:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/\"},\"wordCount\":1411,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp\",\"keywords\":[\"Betting Data\",\"Odds API\",\"Python\",\"Sports Betting API\"],\"articleSection\":[\"How To Guides\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/\",\"url\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/\",\"name\":\"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier) | Odds API Development Blog\",\"isPartOf\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp\",\"datePublished\":\"2026-02-22T16:17:03+00:00\",\"dateModified\":\"2026-03-12T21:09:57+00:00\",\"description\":\"Unlock the power of the OddsPapi odds feed API for real-time bookmaker odds and elevate your betting platform beyond conventional options.\",\"breadcrumb\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#primaryimage\",\"url\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp\",\"contentUrl\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp\",\"width\":1408,\"height\":768,\"caption\":\"Odds Feed API - OddsPapi API Blog\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/oddspapi.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/oddspapi.io\/blog\/#website\",\"url\":\"https:\/\/oddspapi.io\/blog\/\",\"name\":\"OddsPapi\",\"description\":\"Sports Odds APIs Tutorials &amp; Guides\",\"publisher\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/#organization\"},\"alternateName\":\"Odds Papi\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/oddspapi.io\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/oddspapi.io\/blog\/#organization\",\"name\":\"OddsPapi\",\"url\":\"https:\/\/oddspapi.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/oddspapi.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2025\/11\/oddspapi.png\",\"contentUrl\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2025\/11\/oddspapi.png\",\"width\":135,\"height\":135,\"caption\":\"OddsPapi\"},\"image\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/oddspapiapi\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/oddspapi.io\/blog\/#\/schema\/person\/b6f21e649c4f556f0a95c23a0f1efa13\",\"name\":\"Odds API Writer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/oddspapi.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/33b204f24af3d02e35b25ae730c0536121ca6a783fdb196e7611c9e49fcd13eb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/33b204f24af3d02e35b25ae730c0536121ca6a783fdb196e7611c9e49fcd13eb?s=96&d=mm&r=g\",\"caption\":\"Odds API Writer\"},\"url\":\"https:\/\/oddspapi.io\/blog\/author\/andy-lavelle\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier) | Odds API Development Blog","description":"Unlock the power of the OddsPapi odds feed API for real-time bookmaker odds and elevate your betting platform beyond conventional options.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/","og_locale":"en_US","og_type":"article","og_title":"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier) | Odds API Development Blog","og_description":"Unlock the power of the OddsPapi odds feed API for real-time bookmaker odds and elevate your betting platform beyond conventional options.","og_url":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/","og_site_name":"Odds API Development Blog","article_published_time":"2026-02-22T16:17:03+00:00","article_modified_time":"2026-03-12T21:09:57+00:00","og_image":[{"width":1408,"height":768,"url":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp","type":"image\/webp"}],"author":"Odds API Writer","twitter_card":"summary_large_image","twitter_creator":"@oddspapiapi","twitter_site":"@oddspapiapi","twitter_misc":{"Written by":"Odds API Writer","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#article","isPartOf":{"@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/"},"author":{"name":"Odds API Writer","@id":"https:\/\/oddspapi.io\/blog\/#\/schema\/person\/b6f21e649c4f556f0a95c23a0f1efa13"},"headline":"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier)","datePublished":"2026-02-22T16:17:03+00:00","dateModified":"2026-03-12T21:09:57+00:00","mainEntityOfPage":{"@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/"},"wordCount":1411,"commentCount":0,"publisher":{"@id":"https:\/\/oddspapi.io\/blog\/#organization"},"image":{"@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#primaryimage"},"thumbnailUrl":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp","keywords":["Betting Data","Odds API","Python","Sports Betting API"],"articleSection":["How To Guides"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/","url":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/","name":"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier) | Odds API Development Blog","isPartOf":{"@id":"https:\/\/oddspapi.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#primaryimage"},"image":{"@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#primaryimage"},"thumbnailUrl":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp","datePublished":"2026-02-22T16:17:03+00:00","dateModified":"2026-03-12T21:09:57+00:00","description":"Unlock the power of the OddsPapi odds feed API for real-time bookmaker odds and elevate your betting platform beyond conventional options.","breadcrumb":{"@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#primaryimage","url":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp","contentUrl":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/odds-feed-api.webp","width":1408,"height":768,"caption":"Odds Feed API - OddsPapi API Blog"},{"@type":"BreadcrumbList","@id":"https:\/\/oddspapi.io\/blog\/odds-feed-api-real-time-bookmaker-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/oddspapi.io\/blog\/"},{"@type":"ListItem","position":2,"name":"Odds Feed API: Real-Time Data from 350+ Bookmakers (Free Tier)"}]},{"@type":"WebSite","@id":"https:\/\/oddspapi.io\/blog\/#website","url":"https:\/\/oddspapi.io\/blog\/","name":"OddsPapi","description":"Sports Odds APIs Tutorials &amp; Guides","publisher":{"@id":"https:\/\/oddspapi.io\/blog\/#organization"},"alternateName":"Odds Papi","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/oddspapi.io\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/oddspapi.io\/blog\/#organization","name":"OddsPapi","url":"https:\/\/oddspapi.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/oddspapi.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2025\/11\/oddspapi.png","contentUrl":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2025\/11\/oddspapi.png","width":135,"height":135,"caption":"OddsPapi"},"image":{"@id":"https:\/\/oddspapi.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/oddspapiapi"]},{"@type":"Person","@id":"https:\/\/oddspapi.io\/blog\/#\/schema\/person\/b6f21e649c4f556f0a95c23a0f1efa13","name":"Odds API Writer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/oddspapi.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/33b204f24af3d02e35b25ae730c0536121ca6a783fdb196e7611c9e49fcd13eb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/33b204f24af3d02e35b25ae730c0536121ca6a783fdb196e7611c9e49fcd13eb?s=96&d=mm&r=g","caption":"Odds API Writer"},"url":"https:\/\/oddspapi.io\/blog\/author\/andy-lavelle\/"}]}},"_links":{"self":[{"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/posts\/2475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/comments?post=2475"}],"version-history":[{"count":3,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/posts\/2475\/revisions"}],"predecessor-version":[{"id":2507,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/posts\/2475\/revisions\/2507"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/media\/2477"}],"wp:attachment":[{"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/media?parent=2475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/categories?post=2475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/tags?post=2475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}