Read the coverage table as documentation
The table summarizes the publicly documented offer, checked on 26 September 2026. It does not report a live inventory. Marketing pages and the reference disagree on the sports count, so use the named documentation categories and verify the competitions that matter to you. Do not turn a changing count into a completeness guarantee.
Coverage categories are documented rather than measured live; confirm the current terms at checkout before subscribing.
Match the event phase to the endpoint
For a live sport board, the documented route is /kit/v1/markets with sport_id. The response is an object containing events and a last cursor. It is not simply an array of prices.
For a prematch sport board, use /kit/v1/prematch/fixtures. The similarly named /kit/v1/prematch/markets accepts an individual event_id. Confusing the two can make a valid feed look empty or produce a parameter error. Use the correct scope before diagnosing coverage. Start with a single board request before scaling up.
The service’s sport IDs and Pinnacle’s internal sport IDs are separate namespaces. Use the documented mapping. Likewise, do not assume an identifier from a prematch row remains your stable application identifier through every lifecycle transition.
Preserve the market structure
Documented event records organize markets under period keys such as periods.num_0. Money line, spreads, totals and team totals have different shapes. The appropriate period and line matter: a full-match total and a first-half total are different markets, even when they share a numerical line.
Treat missing, empty and suspended markets as distinct states in your own model. Never substitute zero odds for absent data. Validate the fields your calculation needs and preserve the original identifier so unexpected records can be investigated.
Special markets are an opt-in expansion through include_specials. The reference describes extra rows linked by parent_id and separate special_markets structures. They can increase payload size, and their price changes do not all follow the same SSE alert behavior. A complete market feed and a filtered alert stream should not share one parser.
Check a representative sample
Before selecting a plan:
- List the competitions, phases, periods and market types your application requires.
- Request an authorized sample while relevant events are available.
- Check identifiers, decimal-price fields and optional-market handling against your parser.
- Observe a suspension, update or phase transition where possible; a successful first response is not the whole lifecycle.
- Record missing cases and ask the service whether they are unavailable, temporarily empty or outside your entitlement.
The free key is enough to run this sample against real responses. Only the plan you buy establishes your entitlement.
Know what to ask for separately
Pinnacle data describes its product as a current feed without a historical odds archive. Recording future data is a separate operational task and requires appropriate storage rights; it does not recover past seasons.
Redistribution permissions, a contractual SLA and guaranteed competition coverage were not established by this review. Obtain written terms when your use case depends on them, then choose the plan and transport that fit.
For one documented sport in practice, the esports match desk on pnclHUB draws CS2, League of Legends and Dota 2 match-winner prices from this feed and explains what it withholds when freshness is unconfirmed.