Polymarket Price History API
A bucketed price series for one outcome token, oldest point first.
GET /v1/polymarket/tokens/{tokenId}/price-history1 credit Failed requests are free
About this endpoint
GET /v1/polymarket/tokens/{tokenId}/price-history returns data.points, oldest first, with each point's at, price (a probability between 0 and 1) and bucketSeconds. data.tokenId repeats the token and data.page continues a long series.
Use interval (1h, 6h, 1d, 1w, 1m, max, all; default 1w) for a preset range, or pass from and to in unix seconds with bucketSeconds from 60 to 86400. A custom from and to window spans at most 15 days. Each interval has a minimum bucket size, from 60 seconds for short ranges to 600 seconds for max and all. limit is 1 to 1000 and defaults to 500.
Polymarket Price History API FAQ
Why was my from/to window rejected?
A custom window may span at most 15 days, and from must not be after to. Walk a longer history in several 15-day windows. With interval presets you do not pass from or to at all.
What bucket size should I use?
bucketSeconds controls the spacing. Short intervals allow 60 seconds, while 1w, 1m, max and all require at least 300 or 600 seconds. Omit it and the route chooses from the range. A larger bucket returns fewer points for the same window.
Why is no history returned for a token?
The token id is unknown, so lookupStatus is not_found. A known token with no points in the requested window comes back found with an empty points array. Check both keys before charting.
What does lookupStatus mean on this route?
found means the object or list was returned. not_found means no matching object exists. HTTP 200 only means the request finished, so branch on data.lookupStatus before storing a row.
How much does this route cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
Other Polymarket endpoints
- EventsGET /v1/polymarket/events
- EventGET /v1/polymarket/events/{eventIdOrSlug}
- Event insightsGET /v1/polymarket/events/{eventIdOrSlug}/insights
- Event annotationsGET /v1/polymarket/events/{eventIdOrSlug}/annotations
- Event commentsGET /v1/polymarket/events/{eventId}/comments
- MarketsGET /v1/polymarket/markets
- Markets batchGET /v1/polymarket/markets/batch
- MarketGET /v1/polymarket/markets/{marketIdSlugOrConditionId}