> **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/prices>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/polymarket/prices.mdx>

---

# Polymarket Prices API

Best bid, best ask, midpoint and spread for up to 150 outcome tokens.

`GET /v1/polymarket/prices` takes `tokenIds`, repeated or comma separated, up to 150. `data.results` has one entry per token id, in request order, with `tokenId`, `lookupStatus` and `price`. A price record carries `bestBid`, `bestAsk`, `midpoint`, `spread`, `lastTradePrice` and `lastTradeSide` (`BUY` or `SELL`).

Prices are probabilities between 0 and 1. The route charges one credit per token id. A token with no live prices, or an unknown token, is `not_found` with `price: null` while the rest of the batch still returns.

## Request

- **Endpoint:** `GET /v1/polymarket/prices`
- **Credits:** 1 credit per token id
Up to 150 token ids per request
Max 150 credits
Failed requests are free
- **Input:** by token ids
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/polymarket/prices/get)
- **Platform page:** [/platforms/polymarket](https://www.socialfetch.dev/platforms/polymarket)

## FAQ

### How is midpoint calculated?

It is halfway between best bid and best ask. When a side is missing, midpoint and spread can be null even though the token is found. Read bestBid and bestAsk directly if you need to handle a one-sided book.

### What is lastTradeSide?

The side the last trade took, BUY or SELL. It is not the side of the next trade. Use the order book route if you need the resting depth behind the quotes.

### Why is a token not_found?

The token id is unknown, or its market has closed and no longer has live prices. A closed market can still have a last trade price in its market record, so check that route if you need history.

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