{"id":269,"date":"2026-02-05T16:50:08","date_gmt":"2026-02-05T16:50:08","guid":{"rendered":"https:\/\/oddspapi.io\/blog\/?p=269"},"modified":"2026-02-05T17:19:43","modified_gmt":"2026-02-05T17:19:43","slug":"live-betting-api-real-time-in-play-odds","status":"publish","type":"post","link":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/","title":{"rendered":"Live Betting API: Real-Time Odds for In-Play Markets"},"content":{"rendered":"<h2>What Is a Live Betting API?<\/h2>\n<p>A live betting API (also called an in-play odds API) delivers real-time odds for matches <em>already in progress<\/em>. Unlike pre-match odds that update every few hours, live odds can shift every few seconds as the game state changes\u2014a goal scored, a red card issued, momentum swinging.<\/p>\n<p>If you&#8217;re building anything that touches in-play markets, you need an API that can keep up.<\/p>\n<p><strong>Common use cases:<\/strong><\/p>\n<ul>\n<li>Live arbitrage scanners<\/li>\n<li>In-play trading dashboards<\/li>\n<li>Real-time odds comparison widgets<\/li>\n<li>CLV (Closing Line Value) trackers<\/li>\n<li>Automated in-play alerts<\/li>\n<\/ul>\n<h2>The Problem: Live Odds Are Hard to Get<\/h2>\n<p>Here&#8217;s the reality most developers hit:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Approach<\/th>\n<th>Problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Scraping bookmaker sites<\/td>\n<td>Blocked instantly. Cloudflare. Legal risk. Maintenance nightmare.<\/td>\n<\/tr>\n<tr>\n<td>Enterprise feeds (Sportradar, etc.)<\/td>\n<td>$50K+\/year minimum. 6-month sales cycles. Enterprise contracts.<\/td>\n<\/tr>\n<tr>\n<td>Consumer APIs (The Odds API)<\/td>\n<td>Limited bookmaker coverage. No sharps. Delayed live data.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>The sharp bookmakers (Pinnacle, Singbet, SBOBet) don&#8217;t offer public APIs. The enterprise data vendors want enterprise money. The free APIs only cover 20-40 soft bookmakers with minutes-old data.<\/p>\n<p><strong>OddsPapi is the bridge.<\/strong> We aggregate real-time odds from 350+ bookmakers\u2014including the sharps\u2014and expose them through a developer-friendly REST API. Free tier included.<\/p>\n<h2>Live Betting Coverage<\/h2>\n<h3>Sports With Live Odds<\/h3>\n<p>OddsPapi covers 59 sports. Here&#8217;s what&#8217;s typically available for in-play betting:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Sport<\/th>\n<th>Sport ID<\/th>\n<th>Live Coverage<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Soccer<\/td>\n<td>10<\/td>\n<td>100+ live fixtures daily<\/td>\n<\/tr>\n<tr>\n<td>Basketball<\/td>\n<td>11<\/td>\n<td>NBA, Euroleague, and international leagues<\/td>\n<\/tr>\n<tr>\n<td>Tennis<\/td>\n<td>12<\/td>\n<td>ATP, WTA, ITF matches<\/td>\n<\/tr>\n<tr>\n<td>Ice Hockey<\/td>\n<td>15<\/td>\n<td>NHL, KHL, European leagues<\/td>\n<\/tr>\n<tr>\n<td>Esports (CS2)<\/td>\n<td>17<\/td>\n<td>Major tournaments and tier 1\/2 matches<\/td>\n<\/tr>\n<tr>\n<td>Esports (LoL)<\/td>\n<td>18<\/td>\n<td>LCK, LEC, LCS, and regional leagues<\/td>\n<\/tr>\n<tr>\n<td>Table Tennis<\/td>\n<td>25<\/td>\n<td>24\/7 coverage<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h3>Bookmakers Streaming Live Odds<\/h3>\n<p>Not all bookmakers update prices during play. Here are the ones that do\u2014and that OddsPapi tracks live:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Bookmaker<\/th>\n<th>Type<\/th>\n<th>Slug<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Pinnacle<\/td>\n<td>Sharp<\/td>\n<td><code>pinnacle<\/code><\/td>\n<\/tr>\n<tr>\n<td>Singbet (Crown)<\/td>\n<td>Sharp Asian<\/td>\n<td><code>singbet<\/code><\/td>\n<\/tr>\n<tr>\n<td>SBOBet<\/td>\n<td>Sharp Asian<\/td>\n<td><code>sbobet<\/code><\/td>\n<\/tr>\n<tr>\n<td>Bet365<\/td>\n<td>Soft<\/td>\n<td><code>bet365<\/code><\/td>\n<\/tr>\n<tr>\n<td>1xBet<\/td>\n<td>Crypto\/High-limit<\/td>\n<td><code>1xbet<\/code><\/td>\n<\/tr>\n<tr>\n<td>Betfair Exchange<\/td>\n<td>Exchange<\/td>\n<td><code>betfair-ex<\/code><\/td>\n<\/tr>\n<tr>\n<td>Betway<\/td>\n<td>Soft<\/td>\n<td><code>betway<\/code><\/td>\n<\/tr>\n<tr>\n<td>Unibet<\/td>\n<td>Soft<\/td>\n<td><code>unibet<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>A single live soccer fixture typically has odds from <strong>80-100+ bookmakers<\/strong> simultaneously.<\/p>\n<h3>Live Market Types<\/h3>\n<p>OddsPapi provides live odds for the full range of markets:<\/p>\n<ul>\n<li><strong>Moneyline \/ 1X2<\/strong> (Market ID: 101)<\/li>\n<li><strong>Asian Handicap<\/strong> (Multiple IDs: 1064-1076)<\/li>\n<li><strong>Over\/Under Totals<\/strong> (Market ID: 1010 for O\/U 2.5)<\/li>\n<li><strong>Both Teams To Score<\/strong> (Market ID: 104)<\/li>\n<li><strong>Next Goal<\/strong> and period-specific markets<\/li>\n<\/ul>\n<h2>Live Odds API Comparison<\/h2>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Feature<\/th>\n<th>OddsPapi<\/th>\n<th>The Odds API<\/th>\n<th>OddsJam<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Total Bookmakers<\/td>\n<td><strong>350+<\/strong><\/td>\n<td>~40<\/td>\n<td>~70<\/td>\n<\/tr>\n<tr>\n<td>Sharp Bookmakers<\/td>\n<td>Pinnacle, Singbet, SBOBet<\/td>\n<td>None<\/td>\n<td>Pinnacle only<\/td>\n<\/tr>\n<tr>\n<td>Live Odds<\/td>\n<td>Yes (REST + WebSocket)<\/td>\n<td>Limited<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Free Tier Live Access<\/td>\n<td><strong>Yes<\/strong><\/td>\n<td>No<\/td>\n<td>No<\/td>\n<\/tr>\n<tr>\n<td>Sports Covered<\/td>\n<td>59<\/td>\n<td>~15<\/td>\n<td>~20<\/td>\n<\/tr>\n<tr>\n<td>Asian Markets<\/td>\n<td>Native support<\/td>\n<td>No<\/td>\n<td>Limited<\/td>\n<\/tr>\n<tr>\n<td>Historical Data (Free)<\/td>\n<td><strong>Yes<\/strong><\/td>\n<td>Paid add-on<\/td>\n<td>Paid<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h2>Python Tutorial: Get Live Odds<\/h2>\n<p>Let&#8217;s build a simple live odds fetcher. All examples use the free tier.<\/p>\n<h3>Step 1: Get Your Free API Key<\/h3>\n<p>Sign up at <a href=\"https:\/\/oddspapi.io\">oddspapi.io<\/a> and grab your API key. No credit card required.<\/p>\n<h3>Step 2: Find Live Fixtures<\/h3>\n<p>First, let&#8217;s find matches currently in progress:<\/p>\n<pre class=\"wp-block-code\"><code>import requests\r\nfrom datetime import datetime, timedelta\r\n\r\nAPI_KEY = \"YOUR_API_KEY\"\r\nBASE_URL = \"https:\/\/api.oddspapi.io\/v4\"\r\n\r\n# Date range for today\r\ntoday = datetime.now()\r\nfrom_date = today.strftime(\"%Y-%m-%dT00:00:00Z\")\r\nto_date = (today + timedelta(days=1)).strftime(\"%Y-%m-%dT23:59:59Z\")\r\n\r\n# Get soccer fixtures (sportId=10)\r\nresponse = requests.get(f\"{BASE_URL}\/fixtures\", params={\r\n    \"apiKey\": API_KEY,\r\n    \"sportId\": 10,\r\n    \"from\": from_date,\r\n    \"to\": to_date\r\n})\r\nfixtures = response.json()\r\n\r\n# Filter to live fixtures (statusId=1) with odds\r\nlive_fixtures = [\r\n    f for f in fixtures\r\n    if f.get(\"statusId\") == 1 and f.get(\"hasOdds\")\r\n]\r\n\r\nprint(f\"Live soccer fixtures with odds: {len(live_fixtures)}\")\r\n\r\nfor fixture in live_fixtures[:5]:\r\n    print(f\"  {fixture['fixtureId']} - Started: {fixture['trueStartTime']}\")<\/code><\/pre>\n<h3>Step 3: Get Live Odds for a Fixture<\/h3>\n<p>Once you have a fixture ID, fetch the current odds:<\/p>\n<pre class=\"wp-block-code\"><code># Get odds for a live fixture\r\nfixture_id = live_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\nodds_data = response.json()\r\n\r\n# List all bookmakers with odds\r\nbookmakers = list(odds_data.get(\"bookmakerOdds\", {}).keys())\r\nprint(f\"Bookmakers with live odds: {len(bookmakers)}\")\r\n\r\n# Get Pinnacle's 1X2 odds (if available)\r\nif \"pinnacle\" in odds_data[\"bookmakerOdds\"]:\r\n    markets = odds_data[\"bookmakerOdds\"][\"pinnacle\"][\"markets\"]\r\n\r\n    # Market 101 = Full Time Result (1X2)\r\n    if \"101\" in markets:\r\n        outcomes = markets[\"101\"][\"outcomes\"]\r\n        home = outcomes[\"101\"][\"players\"][\"0\"][\"price\"]\r\n        draw = outcomes[\"102\"][\"players\"][\"0\"][\"price\"]\r\n        away = outcomes[\"103\"][\"players\"][\"0\"][\"price\"]\r\n        last_update = outcomes[\"101\"][\"players\"][\"0\"][\"changedAt\"]\r\n\r\n        print(f\"Pinnacle 1X2: Home {home} | Draw {draw} | Away {away}\")\r\n        print(f\"Last updated: {last_update}\")<\/code><\/pre>\n<h3>Step 4: Poll for Line Movements<\/h3>\n<p>To detect line movements, poll periodically and compare prices:<\/p>\n<pre class=\"wp-block-code\"><code>import time\r\n\r\ndef get_pinnacle_odds(fixture_id):\r\n    \"\"\"Fetch current Pinnacle 1X2 odds for a fixture.\"\"\"\r\n    response = requests.get(f\"{BASE_URL}\/odds\", params={\r\n        \"apiKey\": API_KEY,\r\n        \"fixtureId\": fixture_id\r\n    })\r\n    data = response.json()\r\n\r\n    if \"pinnacle\" not in data.get(\"bookmakerOdds\", {}):\r\n        return None\r\n\r\n    markets = data[\"bookmakerOdds\"][\"pinnacle\"][\"markets\"]\r\n    if \"101\" not in markets:\r\n        return None\r\n\r\n    outcomes = markets[\"101\"][\"outcomes\"]\r\n    return {\r\n        \"home\": outcomes[\"101\"][\"players\"][\"0\"][\"price\"],\r\n        \"draw\": outcomes[\"102\"][\"players\"][\"0\"][\"price\"],\r\n        \"away\": outcomes[\"103\"][\"players\"][\"0\"][\"price\"],\r\n        \"timestamp\": outcomes[\"101\"][\"players\"][\"0\"][\"changedAt\"]\r\n    }\r\n\r\n# Poll every 10 seconds for 1 minute\r\nprevious_odds = None\r\nfor i in range(6):\r\n    current_odds = get_pinnacle_odds(fixture_id)\r\n\r\n    if current_odds and previous_odds:\r\n        # Check for movement\r\n        if current_odds[\"home\"] != previous_odds[\"home\"]:\r\n            print(f\"HOME moved: {previous_odds['home']} -&gt; {current_odds['home']}\")\r\n        if current_odds[\"draw\"] != previous_odds[\"draw\"]:\r\n            print(f\"DRAW moved: {previous_odds['draw']} -&gt; {current_odds['draw']}\")\r\n        if current_odds[\"away\"] != previous_odds[\"away\"]:\r\n            print(f\"AWAY moved: {previous_odds['away']} -&gt; {current_odds['away']}\")\r\n\r\n    previous_odds = current_odds\r\n    time.sleep(10)\r\n\r\nprint(\"Done monitoring.\")<\/code><\/pre>\n<h2>What Can You Build?<\/h2>\n<h3>Live Arbitrage Scanner<\/h3>\n<p>Compare odds across 100+ bookmakers in real-time. When Pinnacle moves, soft books lag behind\u2014that&#8217;s your window.<\/p>\n<h3>In-Play Trading Dashboard<\/h3>\n<p>Display live odds from multiple sharps side-by-side. Spot steam moves and react.<\/p>\n<h3>CLV Tracker<\/h3>\n<p>Record your entry price and compare against the closing line. Measure your actual edge over time.<\/p>\n<h3>Live Odds Widget<\/h3>\n<p>Embed real-time odds on your affiliate site. Show users what Pinnacle is offering right now, not cached data from an hour ago.<\/p>\n<h2>Free Tier vs. Pro: An Honest Take<\/h2>\n<p>Let&#8217;s be real about what each tier can do:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Use Case<\/th>\n<th>Free Tier (REST)<\/th>\n<th>Pro Tier (WebSocket)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Live odds display<\/td>\n<td>Viable (poll every 5-10s)<\/td>\n<td>Best<\/td>\n<\/tr>\n<tr>\n<td>Manual betting research<\/td>\n<td>Viable<\/td>\n<td>Overkill<\/td>\n<\/tr>\n<tr>\n<td>Casual arb scanning<\/td>\n<td>Viable (you won&#8217;t catch sub-second arbs)<\/td>\n<td>Recommended<\/td>\n<\/tr>\n<tr>\n<td>Serious arb trading<\/td>\n<td>Not ideal<\/td>\n<td>Required<\/td>\n<\/tr>\n<tr>\n<td>HFT-style trading<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Backtesting models<\/td>\n<td>Viable (historical data free)<\/td>\n<td>Same<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p><strong>REST polling latency:<\/strong> ~800-1000ms per request. That&#8217;s fine for displaying odds, building dashboards, or manual research. It&#8217;s not fast enough to catch arbs that close in milliseconds.<\/p>\n<p><strong>WebSocket streaming:<\/strong> Sub-second updates pushed to you. Required if you&#8217;re building anything latency-sensitive.<\/p>\n<p>Start with the free tier. If you find yourself rate-limited or missing opportunities, upgrade.<\/p>\n<h2>Start Building Your Live Betting Tool<\/h2>\n<p>Stop scraping. Stop paying enterprise prices for limited data.<\/p>\n<p>OddsPapi gives you real-time odds from <strong>350+ bookmakers<\/strong>\u2014including the sharps that actually matter for live betting\u2014through a single API.<\/p>\n<ul>\n<li>Free tier with live REST access<\/li>\n<li>59 sports covered<\/li>\n<li>Pinnacle, Singbet, SBOBet included<\/li>\n<li>Historical data free for backtesting<\/li>\n<\/ul>\n<p><strong><a href=\"https:\/\/oddspapi.io\">Get your free OddsPapi API key<\/a><\/strong> and start building.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Get live odds from Pinnacle, Bet365 &#038; 346 sportsbooks. Free tier for REST polling, WebSocket for pro. Python tutorial with tested code.<\/p>\n","protected":false},"author":2,"featured_media":1172,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-269","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to-guides"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Live Betting API: Real-Time Odds for In-Play Markets | Odds API Development Blog<\/title>\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\/live-betting-api-real-time-in-play-odds\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Live Betting API: Real-Time Odds for In-Play Markets | Odds API Development Blog\" \/>\n<meta property=\"og:description\" content=\"Get live odds from Pinnacle, Bet365 &amp; 346 sportsbooks. Free tier for REST polling, WebSocket for pro. Python tutorial with tested code.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/\" \/>\n<meta property=\"og:site_name\" content=\"Odds API Development Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-05T16:50:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-05T17:19:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1376\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Odds API Writer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/oddspapi.io\/logo-v2.webp\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/\"},\"author\":{\"name\":\"Odds API Writer\",\"@id\":\"https:\/\/oddspapi.io\/blog\/#\/schema\/person\/b6f21e649c4f556f0a95c23a0f1efa13\"},\"headline\":\"Live Betting API: Real-Time Odds for In-Play Markets\",\"datePublished\":\"2026-02-05T16:50:08+00:00\",\"dateModified\":\"2026-02-05T17:19:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/\"},\"wordCount\":765,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg\",\"articleSection\":[\"How To Guides\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/\",\"url\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/\",\"name\":\"Live Betting API: Real-Time Odds for In-Play Markets | Odds API Development Blog\",\"isPartOf\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg\",\"datePublished\":\"2026-02-05T16:50:08+00:00\",\"dateModified\":\"2026-02-05T17:19:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#primaryimage\",\"url\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg\",\"contentUrl\":\"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg\",\"width\":1376,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/oddspapi.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Live Betting API: Real-Time Odds for In-Play Markets\"}]},{\"@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":"Live Betting API: Real-Time Odds for In-Play Markets | Odds API Development Blog","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\/live-betting-api-real-time-in-play-odds\/","og_locale":"en_US","og_type":"article","og_title":"Live Betting API: Real-Time Odds for In-Play Markets | Odds API Development Blog","og_description":"Get live odds from Pinnacle, Bet365 & 346 sportsbooks. Free tier for REST polling, WebSocket for pro. Python tutorial with tested code.","og_url":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/","og_site_name":"Odds API Development Blog","article_published_time":"2026-02-05T16:50:08+00:00","article_modified_time":"2026-02-05T17:19:43+00:00","og_image":[{"width":1376,"height":768,"url":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg","type":"image\/jpeg"}],"author":"Odds API Writer","twitter_card":"summary_large_image","twitter_image":"https:\/\/oddspapi.io\/logo-v2.webp","twitter_creator":"@oddspapiapi","twitter_site":"@oddspapiapi","twitter_misc":{"Written by":"Odds API Writer","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#article","isPartOf":{"@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/"},"author":{"name":"Odds API Writer","@id":"https:\/\/oddspapi.io\/blog\/#\/schema\/person\/b6f21e649c4f556f0a95c23a0f1efa13"},"headline":"Live Betting API: Real-Time Odds for In-Play Markets","datePublished":"2026-02-05T16:50:08+00:00","dateModified":"2026-02-05T17:19:43+00:00","mainEntityOfPage":{"@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/"},"wordCount":765,"commentCount":0,"publisher":{"@id":"https:\/\/oddspapi.io\/blog\/#organization"},"image":{"@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#primaryimage"},"thumbnailUrl":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg","articleSection":["How To Guides"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/","url":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/","name":"Live Betting API: Real-Time Odds for In-Play Markets | Odds API Development Blog","isPartOf":{"@id":"https:\/\/oddspapi.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#primaryimage"},"image":{"@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#primaryimage"},"thumbnailUrl":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg","datePublished":"2026-02-05T16:50:08+00:00","dateModified":"2026-02-05T17:19:43+00:00","breadcrumb":{"@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#primaryimage","url":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg","contentUrl":"https:\/\/oddspapi.io\/blog\/wp-content\/uploads\/2026\/02\/live-betting-api-oddspapi.jpg","width":1376,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/oddspapi.io\/blog\/live-betting-api-real-time-in-play-odds\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/oddspapi.io\/blog\/"},{"@type":"ListItem","position":2,"name":"Live Betting API: Real-Time Odds for In-Play Markets"}]},{"@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\/269","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=269"}],"version-history":[{"count":2,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/posts\/269\/revisions"}],"predecessor-version":[{"id":1174,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/posts\/269\/revisions\/1174"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/media\/1172"}],"wp:attachment":[{"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/media?parent=269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/categories?post=269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oddspapi.io\/blog\/wp-json\/wp\/v2\/tags?post=269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}