On this page
If you are pulling Pinnacle prices from a feed for the first time, the JSON is full of small conventions that are obvious to traders and opaque to everyone else. This guide covers the ones you need to parse the data correctly: decimal odds, the three main market types, the sign of a handicap, period ids, quarter lines and the no-vig price. Examples use the conventions of the pinnodds feed, which match the old Pinnacle API; if you are migrating, the documentation page covers the endpoint side. Nothing here is betting advice.
Decimal odds and implied probability
Pinnacle prices are decimal: the number is the total return per unit staked, including the stake. The implied probability of a decimal price is one divided by the price, so 1.909 implies about 52.4 percent.
Decimal odds make the arithmetic straightforward, which is one reason data feeds prefer them over fractional or American formats. A price of 2.000 is even money. Anything below 2.000 is a favorite, anything above is an underdog. Because the bookmaker's margin is built into every price, the implied probabilities of the outcomes in a market add up to more than one; the section on the no-vig price shows how to strip that margin out.
Decimal price 1.909 -> implied probability = 1 / 1.909 = 0.5238 = 52.4%
Decimal price 2.100 -> implied probability = 1 / 2.100 = 0.4762 = 47.6%
Stake 100 at 1.909 -> return 190.90 (profit 90.90) Moneyline, spread and total
Almost every Pinnacle event carries three main market types: the moneyline, which prices who wins; the spread or handicap, which prices the margin; and the total, which prices whether combined scoring goes over or under a number. Team totals and period markets are variations on the same three.
In a feed each market row carries a type, a period, a line value where relevant, and one price per side. Moneylines have two or three sides depending on the sport: soccer includes the draw, most American sports do not. Spreads and totals have two sides and a line, and there is usually more than one line per market, which is where quarter lines come in. The pinnodds REST drop rows name these fields market, period, designation and points; the market data endpoints follow the same idea.
Handicaps are from the home side
Spread values are expressed from the home team's perspective. A handicap of −3 means the home side gives three points; the away side automatically receives +3. This is the convention of the old Pinnacle API and of pinnodds, and getting the sign wrong flips every spread bet in your model.
The practical consequence is that a feed only needs to store one number per spread line. If the row says hdp −3 with a home price and an away price, the home bet is "home −3" and the away bet is "away +3". Never negate the value twice. When a home handicap is positive, the home side is the underdog.
Market: spread, period 0, hdp = -3 (from the home side)
home -3 @ 1.952 -> home must win by 4 or more
away +3 @ 1.943 -> away wins, draws, or loses by 1 or 2
(a 3-point home win is a push: stakes returned) Period 0 and period ids
Period 0 always means the full match or full game. Other period numbers are sport-specific and identify halves, quarters, sets, innings or maps, so a total in period 1 for soccer is a first-half total while in tennis it is a first-set total.
Most models care only about period 0, and filtering on it is the first thing to do when you parse a board. If you work with period markets, keep a lookup table per sport rather than assuming period 1 means the same thing everywhere. The old Pinnacle API had a periods endpoint for this; in pinnodds the period id is present on each market row and the meaning follows the same per-sport pattern.
Quarter lines and why they exist
A quarter line such as a 2.25 total or a −0.75 handicap is a bet split equally across the two neighboring half-lines and whole-lines. Half your stake goes on 2.0 and half on 2.5, so one part can push while the other wins or loses. Bookmakers offer them to price the market more finely than half-point steps allow.
Quarter lines matter to data consumers for two reasons. First, they are where much of the information lives: Pinnacle often has a ladder of alternate lines around the main one, each with its own price, and the shape of that ladder tells you more about the market's view than a single line does. Second, they are easy to mishandle. A naive parser that treats 2.25 as a simple over/under will settle it wrong. pinnodds includes quarter lines on every plan, and its guide to mapping Asian handicap lines between bookmakers goes further on converting between equivalent lines.
Total 2.25 over @ 1.900 (stake 100)
= 50 on over 2.0 + 50 on over 2.5
goals = 2 : over 2.0 pushes (50 back), over 2.5 loses -> net -50
goals = 3 : both win -> net +90
Handicap home -0.75 @ 2.050 (stake 100)
= 50 on home -0.5 + 50 on home -1.0
home wins by 1 : -0.5 wins (+52.50), -1.0 pushes (50 back) -> net +52.50
home wins by 2 : both win -> net +105 No-vig price and fair probability
The no-vig price (often written nvp) is the price a market would show with the bookmaker's margin removed. For a two-way market you compute it by dividing each side's implied probability by the sum of both implied probabilities; the result is the fair probability, and one over that is the no-vig price.
This is the single most useful calculation in Pinnacle data, because Pinnacle's margin is low and its lines are sharp, so the no-vig price is widely used as the reference "true" probability for a selection. pinnodds returns an nvp field on every drop row and alert so you do not have to compute it yourself, but it is worth understanding what it represents. For three-way markets the same normalization works across all three sides. pinnodds explains the downstream uses in How to calculate EV from Pinnacle odds and What is closing line value.
Two-way market: home 1.909, away 2.000
implied: 1/1.909 = 0.5238 1/2.000 = 0.5000 sum = 1.0238 (2.38% overround)
fair prob (home) = 0.5238 / 1.0238 = 0.5116 -> no-vig price 1.955
fair prob (away) = 0.5000 / 1.0238 = 0.4884 -> no-vig price 2.048 Simple proportional normalization is the common method and is what the example shows. Other methods exist that assign more of the margin to the underdog; if you use a feed's nvp field, check which method the provider documents.
Max stake as a confidence signal
Pinnacle publishes a maximum stake per selection, and it rises as the event approaches and as the book grows more confident in its price. Many modelers read the limit as a signal: a line with a high max is one the book is willing to defend, while a low max often marks a fresh or uncertain price.
The old Pinnacle line endpoint returned the max bet alongside the price. In pinnodds the SSE drop alerts carry a limit field for the affected selection. Treat it as context rather than a rule; limits also vary by league and by time to kickoff for reasons unrelated to confidence. pinnodds has a full treatment in Pinnacle max bet limit explained.
Once the conventions are clear, the fastest way to make them concrete is to look at a real board. Get a free pinnodds trial key, follow the three-step start, and compare the JSON against the examples above. If you are deciding how to consume the data, the polling versus push guide is the next thing to read.