Skip to content

PinBook Odds APIReal-Time Data

PinBook Sports API is a RESTful service for accessing pre-match and live odds from Pinnacle — a real API, not scraping. Real-time updates (100–200 ms), historical odds, scores, results, special markets, and player props in clean JSON.

PinBook Odds API

Why PinBook Odds API?

Building a serious betting product — a value-betting service, an arbitrage scanner, an odds comparison, or a prediction model — starts with one thing: quality data. If your odds arrive late, incomplete, or broken, everything built on top of them is late, incomplete, and broken too.

PinBook Odds API gives you direct, structured access to pre-match and live odds from Pinnacle, the sharpest bookmaker in the market. You get every market, every line movement, every price change — delivered in clean JSON over plain REST, updated in real time.

  • No data delay. The Pinnacle website shows delayed odds if you are not logged in. The API does not — you see prices the moment they move.
  • Everything in one place. Main markets, all periods (money line, spreads, totals, team totals), special markets, player props, corners, plus scores and results.
  • Built by developers, for developers. Predictable response structure, timestamps for delta updates, an OpenAPI specification, and copy-paste code examples.

🚀 Start in minutes

Get an API key, make your first call, and integrate it into your application today — see the Quickstart.


Real API vs. Web Scraping

Many "odds feeds" on the market are just scrapers in disguise — bots that load the bookmaker's website and parse the HTML. It looks cheaper until you count the real cost: delayed data, constant breakage, and infrastructure that never stops needing attention.

🕸️ Web Scraping⚡ PinBook Real API
Data freshnessDelayed — sites often serve delayed odds to anonymous visitorsReal-time, 100–200 ms updates
Market coverageOnly what the page renders; player props and special markets are often hiddenFull market tree: all periods, spreads, totals, specials, player props
ReliabilityAny HTML redesign breaks the parser — usually at match timeStable JSON contract with a versioned API
BlockingCaptchas, IP bans, rate limiting; needs rotating proxiesA simple API key — nothing to evade
MaintenanceAn endless cat-and-mouse game you have to fund and staffZero — we maintain the feed, you consume it
EfficiencyRe-downloads whole pages to check for changesDelta updates via since — only what changed
ResultFragile, late, expensiveFast, complete, predictable

In short: scraping gives you a screenshot of yesterday's page. A real API gives you the market as it is right now.


Built for Real-Time Workloads

The API is designed for continuous polling of live markets:

  1. Snapshot. Make your first request without since and cache the full state.
  2. Delta. Every response carries a last timestamp — pass it back as since and receive only the events and markets that changed.
  3. Loop. Repeat. You always have the current picture with minimal traffic and minimal requests.

Historical odds, scores, and results are available for deep analysis, backtesting, and machine learning — a complete archive of how the lines actually moved.


API Response Examples

Markets: all periods, money_line, spreads, totals, team_total

js
{
  "sport_id": 1,
  "sport_name": "Soccer",
  "last": 1769709175,
  "last_call": 1769709175,
  "events": [
    {
      "event_id": 1619860365,
      "sport_id": 1,
      "league_id": 2015,
      "league_name": "FIFA - World Cup Qualifiers Europe",
      "starts": "2026-03-26T19:45:00",
      "last": 1769709087,
      "home": "Czechia",
      "away": "Ireland",
      "event_type": "prematch",
      "live_status_id": 2,
      "parent_id": null,
      "resulting_unit": "Regular",
      "is_actual": true,
      "home_team_type": "Team1",
      "is_have_odds": true,
      "is_have_periods": true,
      "is_have_open_markets": true,
      "periods": {
        "num_0": {
          "line_id": 3428182754,
          "number": 0,
          "description": "Match",
          "cutoff": "2026-03-26T19:45:00",
          "period_status": 1,
          "money_line": {
            "home": 1.943,
            "draw": 3.32,
            "away": 4.02
          },
          "spreads": {
            "-0.5": {
              "hdp": -0.5,
              ....

Special Markets, Player Props

js

    ....
    {
      "special_id": 1623657207,
      "sport_id": 3,
      "league_id": 487,
      "event_id": 1623244146,
      "last": 1770314090,
      "live_status": "prematch",
      "live_status_id": 2,
      "bet_type": "OVER_UNDER",
      "units": "Points",
      "name": "Nic Claxton (Points)",
      "starts": "2026-02-06T00:10:00",
      "cutoff": "2026-02-06T00:10:00",
      "category": "Player Props",
      "status": "O",
      "event": {
        "id": 1623244146,
        "period_number": 0,
        "home": "Orlando Magic",
        "away": "Brooklyn Nets"
      },
      "is_actual": true,
      "max_bet": 250.0,
      "is_have_odds": true,
      "is_have_lines": true,
      "open": true,
      "lines": {
        "c_1623657208": {
          "id": 1623657208,
          "name": "Over",
          "rot_num": 516,
          "line_id": 5769188797,
          "price": 1.719,
          "handicap": 9.5
        },
        "c_1623657209": {
          "id": 1623657209,
          "name": "Under",
          "rot_num": 517,
          "line_id": 5769188798,
          "price": 2.05,
          "handicap": 9.5
        }
      }
    },
    ....


🚀 Connect

To connect the API to a project, you need an API key. Choose a plan, get your key, and make your first request in minutes.

👉 Connect To PinBook Odds API

We’re dedicated to providing the best API products