> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/polymarket/tokens-tokenid-price-history>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/polymarket/tokens-tokenid-price-history.mdx>

---

# Polymarket Price History API

A bucketed price series for one outcome token, oldest point first.

`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.

## Request

- **Endpoint:** `GET /v1/polymarket/tokens/{tokenId}/price-history`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by token id
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/polymarket/tokens/tokenid/price-history/get)
- **Platform page:** [/platforms/polymarket](https://www.socialfetch.dev/platforms/polymarket)

## 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.
