Polymarket hub

Polymarket Markets API

Filter the market catalog by tag, status, sports type, condition id or token id.

GET /v1/polymarket/markets

1 credit Failed requests are free

About this endpoint

GET /v1/polymarket/markets returns a page of full market records in data.markets. Each market carries id, slug, question, conditionId, eventId, eventSlug, status, outcomes[] with name, tokenId and price, volume, liquidity, bestBid, bestAsk, spread, fees, tickSize, resolution and dates.

Filter by status (open default, or closed), tagId, conditionIds (up to 50), tokenIds (up to 30), sportsMarketType, volume and liquidity bounds, and sort (volume, volume24h, liquidity, startDate, endDate, createdAt, closedTime). When you filter by condition ids or token ids and omit status, open and closed markets are both searched. limit is 1 to 100 and defaults to 50.

Polymarket Markets API FAQ

How do I look up more than 50 ids at once?

Use GET /v1/polymarket/markets/batch, which accepts up to 100 condition ids and token ids combined in one request. The list route caps condition ids at 50 and token ids at 30 to keep the query URL within limits.

What is the difference between this and markets/batch?

This route filters and lists markets by tag, status, volume and sort. The batch route takes a known set of ids and returns one result per id, in request order, with a summary. Use batch when you already have the ids.

Why were no closed markets returned?

status defaults to open. Pass status=closed for ended or resolved markets. When you pass conditionIds or tokenIds and leave status out, both open and closed markets are searched.

Where do I find a tag id?

Call GET /v1/polymarket/tags and use data.tags[].id, or use data.events[].tags[].id from an event. tagId takes the numeric id, not the slug.

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.