Discover/Pinnacle API
live

Pinnacle APIpinnacle.com

Access live and pre-event odds, matchups, scores, and prop markets from Pinnacle across sports, politics, and entertainment via 8 structured endpoints.

Endpoint health
verified 7h ago
get_odds
get_sports
get_live_odds
get_leagues
get_live_matchups
8/8 passing latest checkself-healing
Endpoints
8
Updated
14d ago

What is the Pinnacle API?

The Pinnacle API exposes 8 endpoints covering pre-event odds, live markets, real-time scores, and deep prop markets across sports, politics, and entertainment. Starting with get_sports to enumerate available sport IDs, you can chain through get_leagues and get_matchups to retrieve structured event data, then pull moneyline, spread, total, and alternate-line odds from get_odds or get_live_odds for in-progress events.

Try it

No input parameters required.

api.parse.bot/scraper/0f6b4408-6448-445a-82a9-134f066c2d53/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/0f6b4408-6448-445a-82a9-134f066c2d53/get_sports' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace pinnacle-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.pinnacle_betting_data_api import Pinnacle, Sport, League, Matchup, Market, EventDetail, BettingCategory, PoliticalBetting

pinnacle = Pinnacle()

# List all available sports
for sport in pinnacle.sports.list():
    print(sport.id, sport.name, sport.matchup_count, sport.primary_market_type)

# Construct a sport by ID and list its leagues
soccer = pinnacle.sport(id=29)
for league in soccer.leagues.list():
    print(league.id, league.name, league.group, league.matchup_count)

# Get pre-event matchups for a league
world_cup = pinnacle.league(id=2686)
for matchup in world_cup.matchups.list():
    print(matchup.id, matchup.start_time, matchup.status, matchup.type)

# Get odds for the league
for market in world_cup.odds.list():
    print(market.matchup_id, market.type, market.period, market.cutoff_at)

# Get detailed markets for a specific matchup
event = pinnacle.matchup(id=1627278051)
detail = event.details()
for m in detail.markets:
    print(m.matchup_id, m.type, m.status, m.is_alternate)

# Check live matchups and odds for soccer
for live in soccer.live_matchups.list():
    print(live.id, live.is_live, live.start_time)

for live_market in soccer.live_odds.list():
    print(live_market.matchup_id, live_market.type, live_market.period)

# Get political and entertainment betting
political = pinnacle.politicalbettings.get()
for pm in political.politics.matchups:
    print(pm.id, pm.status, pm.start_time)
for em in political.entertainment.odds:
    print(em.matchup_id, em.type, em.period)
All endpoints · 8 totalmissing one? ·

List all available sports and their IDs from Pinnacle. Returns a flat array of sport objects including matchup counts and feature ordering. Sports with matchupCount=0 have no active events.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "items": "array of sport objects with id, name, matchupCount, primaryMarketType, and feature flags"
  },
  "sample": {
    "data": {
      "items": [
        {
          "id": 3,
          "name": "Baseball",
          "isHidden": false,
          "isSticky": false,
          "isFeatured": true,
          "featureOrder": 5,
          "matchupCount": 31,
          "matchupCountSE": 31,
          "primaryMarketType": "moneyline"
        },
        {
          "id": 29,
          "name": "Soccer",
          "isHidden": false,
          "isSticky": false,
          "isFeatured": true,
          "featureOrder": 0,
          "matchupCount": 546,
          "matchupCountSE": 523,
          "primaryMarketType": "moneyline"
        }
      ]
    },
    "status": "success"
  }
}

About the Pinnacle API

Sports, Leagues, and Matchup Discovery

The get_sports endpoint returns a flat array of sport objects, each with an id, name, matchupCount, and feature flags. These IDs feed directly into get_leagues, which groups active leagues by region and returns id, name, group, and matchupCount alongside parent sport metadata. From there, get_matchups accepts either a sport_id or league_id and returns an array of matchup objects with participants, startTime, periods, and market availability flags — giving you a complete picture of upcoming events before querying odds.

Pre-Event and Live Odds

get_odds accepts either a sport_id (returns primary markets only) or a league_id (returns all markets including alternates). Each market object in the response carries matchupId, type (moneyline, spread, total, or team_total), prices, period, and cutoffAt. For in-play events, get_live_matchups and get_live_odds both require a sport_id and return real-time data — participant stats and scores in the matchup response, current live lines in the odds response. Both return empty arrays when no events are currently live for the requested sport.

Event-Level Depth and Specialty Markets

get_event_details takes a matchup_id from either get_matchups or get_live_matchups and returns the full matchup tree — the parent event plus all related child matchups — alongside an exhaustive markets array that includes props, alternative lines, and specials not visible in the top-level odds endpoints. This is the primary route for accessing granular betting markets on a single event.

Political and Entertainment Betting

get_political_betting requires no inputs and returns a single structured object with politics (sport ID 24) and entertainment (sport ID 58) keys. Each key contains matchups and odds arrays following the same schema as the sports endpoints. Either category may return empty arrays when no markets are currently listed on Pinnacle.

Reliability & maintenanceVerified

The Pinnacle API is a managed, monitored endpoint for pinnacle.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pinnacle.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official pinnacle.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
7h ago
Latest check
8/8 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate and compare Pinnacle's moneyline, spread, and total odds against other bookmakers for line-shopping tools
  • Track live scores and in-play odds shifts via get_live_matchups and get_live_odds for real-time alerting systems
  • Build an odds movement dashboard by polling get_odds at intervals and recording changes in price fields
  • Monitor political event betting markets using get_political_betting for election and geopolitical forecasting research
  • Pull prop and alternate-line markets for a specific match via get_event_details for detailed pre-game analysis
  • Populate a league browser by chaining get_sports → get_leagues with the group (region) field for geographic filtering
  • Feed matchup schedules and cutoffAt timestamps into a notification system for upcoming event reminders
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Pinnacle have an official developer API?+
Yes. Pinnacle offers an official API for partners and affiliates at https://www.pinnacle.com/en/api-services/api. It requires a separate application and approval process, and is not available to all users.
What is the difference between using sport_id and league_id in get_odds?+
Passing a sport_id returns primary markets only (moneyline, spread, total) across all leagues in that sport — useful for broad coverage with smaller response sizes. Passing a league_id returns all markets for that league, including alternate lines and additional period markets. league_id takes precedence if both parameters are provided.
Does get_event_details cover all prop types Pinnacle offers?+
It returns all market objects associated with the matchup tree, including props, specials, and alternate lines identified in the markets array. However, historical or settled markets and any markets that have already been taken off the board are not included in the response.
Does the API include historical odds or closing lines?+
Not currently. The API covers live and pre-event odds with current prices and cutoffAt timestamps, but does not return historical odds, line movement history, or closing lines. You can fork it on Parse and revise to add an endpoint targeting historical data if that surface becomes accessible.
Are player-level props returned separately, or mixed into the event markets?+
Player props are included as child matchups within the matchup tree returned by get_event_details — they are not broken out into a dedicated endpoint. The markets array for those child matchups contains the associated prices and types. The API does not currently expose a standalone player props listing endpoint. You can fork it on Parse and revise to add a filtered view of player-prop child matchups.
Page content last updated . Spec covers 8 endpoints from pinnacle.com.
Related APIs in SportsSee all →
oddsportal.com API
Track sports betting odds, matches, and results across multiple sports and leagues in real-time, while viewing team standings and match details to stay informed on upcoming games. Access comprehensive betting data and historical results from OddsPortal to compare odds and analyze sports outcomes.
oddschecker.com API
Compare betting odds across multiple bookmakers for a wide range of sports, markets, and events on Oddschecker. Retrieve match details, race cards, market outcomes, and bookmaker-by-bookmaker odds to identify the best available prices.
unibet.com API
Access live betting odds, browse sports categories and upcoming matches, and search for specific events across multiple leagues in real-time. Get detailed event information including current odds for thousands of sports matchups to inform your betting decisions.
stake.com API
Get live and detailed betting odds across popular sports fixtures from Stake.com, with the ability to search current odds by sport or dive into specific fixture market data. Monitor real-time odds movements to stay updated on the latest betting lines for your favorite sports events.
oddspedia.com API
Find profitable betting opportunities and compare real-time odds across dozens of bookmakers to identify sure bets, value bets, and dropping odds for various sports. Filter matches by sport, league, and region to make informed betting decisions with comprehensive odds comparisons and match information.
superbet.ro API
Access sports betting data from Superbet.ro, including the full sports and competition hierarchy, pre-match and live event listings, detailed odds, boosted prices, popular accumulator suggestions, and Bet Builder markets.
sportybet.com API
Get real-time betting odds and live scores for football, basketball, and other sports from SportyBet. Browse upcoming events with full market odds, monitor live matches as they happen, and view sport listings with event counts across multiple markets.
coolbet.ee API
Access sports betting data from Coolbet, including live and upcoming events, betting markets, odds, popular event recommendations, and active promotions. Browse the full sports navigation tree organized by sport, region, and league.