Polymarket API. Prediction markets as JSON.
Events, markets, order books, prices, price history, trades and trader profiles from Polymarket. Paginate with a cursor, branch on lookupStatus, and bill from meta.creditsCharged.
- Events and markets
- Books, prices and trades
- Perps and US exchange
- Failed requests aren't charged
Teams running monitoring, research, and enrichment pipelines
Why Social Fetch
Polymarket data as JSON. You build the product.
Live Polymarket data in one response shape, with platform changes handled for you.
Polymarket, plus every other platform
One key and one response envelope for Polymarket and 56 more platforms.
Pricing you can reason about
One request, one credit. Know how far your balance will go before you run your next batch.
Live data on every request
Fetch public data when you ask for it.
Nothing to maintain
We handle platform changes and breakages.
Built for production jobs
Run concurrent workloads with explicit statuses and request IDs.
Regular jobs. Better rates.
Running lookups every month? Get lower per-credit rates with a monthly plan. For occasional projects, choose pay as you go.
What Polymarket data can you get?
42 endpoints, one API key. Every response comes back as live JSON in the same envelope.
- +1 more events endpoints
Events
- +3 more markets endpoints
Markets
Prices & trading
Tags & series
Sports
Search
- +2 more people endpoints
People
Leaderboards
- +2 more perps endpoints
Perps
US exchange
Browse all 42 Polymarket endpoints
Events
Markets
Prices & trading
Tags & series
Sports
Search
People
Leaderboards
Perps
US exchange
What teams build with Polymarket data
Monitoring, enrichment, research and content workflows on Polymarket data, on the same API as every other platform.
How it works
Your first request in three steps.
Use TypeScript or your automation tool of choice.
Sources
+ 51 more platforms
One request
GET/v1/tiktok/profiles/
x-api-key: sk_live_••••••••
Same JSON shape
{
"data": {
"lookupStatus": "found",
"profile": {
"platform": "tiktok",
"handle": "charlidamelio",
"displayName": "charli d’amelio",
"verified": true
},
"metrics": {
"followers": 160263648
}
}
}Step 1
Create your free account
Get an API key with 100 requests included.
Step 2
Choose an endpoint
Pass a username, URL, keyword, or post ID.
Step 3
Get clean JSON
Use the response immediately or send it into your pipeline.
Works with your stack
Code, automate, or connect your AI.
TypeScript
n8n
- Make
- Apify
- MCP
- AI clients
Pricing
Social data, priced simply.
Start with 100 free credits. Monthly plans give you predictable volume and lower per-request rates.
Starter
18,000credits
$1.61 per 1k · $0.00161 per request
- Top up from $1.61 / 1k if you run out
- Up to 25 monitors
Growth
50,000credits
$1.58 per 1k · $0.00158 per request
- Top up from $1.58 / 1k if you run out
- 5 team seats
- Up to 100 monitors
Scale
150,000credits
$1.50 per 1k · $0.00150 per request
- Top up from $1.50 / 1k if you run out
- 25 team seats
- Up to 250 monitors
- Cancel anytime
- 30-day money-back guarantee
- Price locked while you stay
Need 1M+ credits, invoicing, or volume rates? Talk to us
Trust signals
DevHunt
Product Hunt
Uneed
Customers
Teams building on Social Fetch.
“Our TikTok and Instagram scrapers broke constantly. Social Fetch took us off that rotation — we ship product again.”
“Transcripts at volume from one endpoint. No broken scrapers for our small team to maintain.”
“Live profile data on every request. We never flag accounts from a stale cache.”
“Heavy concurrent load, no rate limits to negotiate. The rare API I haven't wrapped in retries.”
Polymarket API: common questions
Is there a Polymarket API for events and markets?
Yes. Social Fetch has 42 Polymarket routes under /v1/polymarket: events, event lookup, insights, annotations, comments, markets, market lookup by id, slug or condition id, batch market lookup, order books, prices, price history, trades, holders, tags, series, sports, teams, search, movers, user profiles, positions, activity, stats, PnL, leaderboards, biggest wins, Perps and Polymarket US. Authenticate with your Social Fetch API key in x-api-key.
How do I go from an event to an order book?
Call GET /v1/polymarket/events/{eventIdOrSlug}. On data.lookupStatus: found, each market in data.event.markets has a conditionId and an outcomes array. Each outcome has a tokenId. Pass up to 150 token ids to GET /v1/polymarket/books (query tokenIds, comma separated or repeated) or to GET /v1/polymarket/prices. The market endpoint returns the full record, including fees and resolution rules.
What does lookupStatus mean?
found means the object or list was returned. not_found means no event, market, tag, series, token or wallet matched. HTTP 200 only means the request finished, so branch on data.lookupStatus before writing. Some lists describe an empty result as found with an empty array, such as a market with no trades yet.
How do cursors work?
Every list response has data.page with hasMore and nextCursor. Pass data.page.nextCursor as the cursor query parameter and keep the other filters unchanged. The cursor is an opaque string tied to one operation; it is not a timestamp or an offset you can build yourself. When hasMore is false, stop.
How are batch routes billed?
GET /v1/polymarket/books and GET /v1/polymarket/prices charge one credit per token id, with a maximum of 150 ids per request. GET /v1/polymarket/markets/batch charges one credit per condition id or token id, with a maximum of 100 ids. The batch response summary reports requested, found and notFound. Confirm the charge with meta.creditsCharged.
How far back can price history go?
Use interval=1h, 6h, 1d, 1w, 1m, max or all for a preset range, or pass from and to as unix seconds with bucketSeconds between 60 and 86400. A custom from and to window spans at most 15 days. Points come oldest first, and each point carries at, price and bucketSeconds. Walk a longer history in several 15-day windows.
Can I read a wallet's positions and profit?
Use GET /v1/polymarket/users/{wallet}/positions for open, closed, redeemable or mergeable positions, GET /v1/polymarket/users/{wallet}/activity for the action history, GET /v1/polymarket/users/{wallet}/stats for headline figures and a PnL breakdown, and GET /v1/polymarket/users/{wallet}/pnl for a series over time. The leaderboard and biggest wins routes rank wallets across the market. A wallet that never traded returns an empty list or not_found, not an error.
Are Perps and Polymarket US the same market data?
No. Perpetual futures live under /v1/polymarket/perps (instruments, tickers, klines, book, trades, leaderboard), and the US exchange lives under /v1/polymarket/us (events, event, market, series). They have their own ids, fields and rules, so the route groups keep them separate. Polymarket US is a different exchange from the main Polymarket event market.
Do comments, insights and annotations cover every event?
Comments are keyed by numeric event id and return an empty list when an event has none; an id that does not exist returns not_found. Insights are machine-written context and can be null for an event that has none. Annotations explain dated price moves and only exist for events with large moves, so an empty array is normal. All three are read-only and never trade.
Does this place trades or connect a wallet?
No. Every Polymarket route on Social Fetch is read-only. There is no signing, order placement, cancellation, deposit or wallet connection. The routes return public market data, public trade and holder rows, and public wallet profiles and positions.
The Polymarket API in detailHow the Polymarket routes work, what they cost, and how they differ from the official API.
Why teams use Social Fetch for Polymarket
Social Fetch exposes 42 Polymarket routes under /v1/polymarket. The event and market routes cover discovery: GET /v1/polymarket/events lists events with their markets' headline numbers, GET /v1/polymarket/events/{eventIdOrSlug} returns one event with full market records, GET /v1/polymarket/markets lists markets, GET /v1/polymarket/markets/batch looks up to 100 condition ids or token ids at once, and GET /v1/polymarket/markets/{marketIdSlugOrConditionId} returns one market with outcomes, prices, fees and resolution rules.
Trading data sits alongside it. GET /v1/polymarket/books returns order books for up to 150 outcome tokens, GET /v1/polymarket/prices returns best bid, best ask, midpoint, spread and last trade for the same batch size, GET /v1/polymarket/tokens/{tokenId}/price-history returns a bucketed series, and GET /v1/polymarket/trades and GET /v1/polymarket/markets/{conditionId}/trades page the public tape. GET /v1/polymarket/markets/{conditionId}/holders lists the largest holders per outcome, while GET /v1/polymarket/markets/{conditionId}/stats gives open interest and taker volume.
The catalog routes are tags, series, sports and teams. GET /v1/polymarket/search searches events, tags and profiles in one call, and GET /v1/polymarket/movers returns the markets that moved most. People routes take a wallet: profile and stats, open or closed positions, activity, a PnL breakdown over time, the leaderboard, and the biggest winning positions. A username works on GET /v1/polymarket/users/{walletOrUsername} and costs one extra lookup to resolve.
Perps and the US exchange are separate products with their own ids and rules, kept under /perps/ and /us/ so route names cannot be confused. Every response uses the { data, meta } envelope. Lookups carry data.lookupStatus, lists carry data.page, and meta.creditsCharged is the billing source of truth. Nothing here places, signs or cancels an order.
How to call the Polymarket API
1. Create an API key
Sign up at Social Fetch and copy a key (
sfk_…). New accounts get 100 free credits, enough to read events, markets, books and a wallet profile before choosing a plan.2. Start from an event or market
Call
GET /v1/polymarket/events/30829for the 2028 Democratic nominee event. Each entry indata.event.marketscarriesconditionIdandoutcomes[].tokenId; pass those to the market, books, prices, trades and holders routes. Sendx-api-keyon every request.3. Page and branch
Check
data.lookupStatusbefore storing a row (foundornot_found), keep the same filters and passdata.page.nextCursorwhiledata.page.hasMoreis true, and bill frommeta.creditsCharged.
What each Polymarket route returns
- Events with every market they hold, and one event with full market records, outcomes and prices.
- Order books, midpoint prices and price history for outcome token ids.
- Trade tape by market or wallet, plus holders, open interest and taker volume.
- Tags, series, leagues, teams, search across events, tags and profiles, and the biggest movers.
- Wallet profiles, positions, activity, stats, PnL history, leaderboards and biggest wins.
- Separate Perps and Polymarket US route groups under
/perps/and/us/.
How much does the Polymarket API cost?
Most Polymarket routes charge a flat credit amount per completed request, shown on every endpoint page. The batch routes (books, prices, markets/batch) charge one credit per requested token or market id. Each page of a list is its own request. Credits never expire on pay-as-you-go packs, and meta.creditsCharged on every response is the billing source of truth.
Social Fetch vs the official Polymarket API
Polymarket publishes market data through several developer surfaces, each with its own hosts, identifiers and response shapes: numeric ids and slugs for events and markets, condition ids and token ids for trading data, and separate Perps and US exchange products. Social Fetch gives one envelope across all of them: data.lookupStatus, opaque cursors, decimal money as a number or exact string, typed not_found answers, and route groups that keep the two exchanges apart.
Pull your first Polymarket data.
Run a live Polymarket request in the playground. 100 free credits, no card, JSON back in seconds.
No credit cardSign up in 30 seconds withGoogleGitHub
