Polymarket API Guide: Prediction-Market Sentiment and Trending Markets
Polymarket prices everything from CPI prints to whether SPY closes above $735 today, with real money behind every quote. Getting that signal into your code takes one of two routes: Polymarket's own trading-grade APIs or an aggregation layer that filters thousands of event markets down to the roughly 900 that map to stock tickers. This guide covers both routes, with working calls.
What's in here
- The official surface: Polymarket's API families and which route needs authentication
- The aggregation problem: why "SPY closes above $735?" markets need mapping and weighting before they become a signal
- Quickstart: trending, per-ticker and market-wide sentiment with curl and real responses
- Limits: hourly cadence, ticker-mapped subset and free-tier boundaries
What Polymarket's own APIs expose
Polymarket documents several API families, each built for a different job. Knowing which is which saves an afternoon of reading the wrong reference:
- Gamma and Data APIs: public, no key required. Gamma serves markets, events and search; the Data API serves positions, trades and holder data. Together with the CLOB's public reads, this is the research surface
- CLOB API: the trading layer, with public read endpoints for orderbooks, prices and price history. Creating and canceling orders requires cryptographic signing tied to your wallet; official clients exist in TypeScript, Python and Rust
- WebSocket channels: a public market channel streams orderbook and trade updates in real time; authenticated user channels carry your own orders and fills
- Perps, Bridge and Relayer APIs: perpetual futures, cross-chain deposits and transaction submission. Perps trading and the Relayer are authenticated; the Bridge takes a wallet address without a key and Perps market data is public
Reading market data needs nothing but curl:
$ curl "https://gamma-api.polymarket.com/markets?limit=1"
That call returns the first market as JSON. The official documentation covers every family in depth; the read-only surface is public, well documented and free.
If you need every market on the platform (politics, sports, crypto), sub-hourly prices or order execution, stop here: Gamma, the Data API, the CLOB reads and the WebSocket channels are the right tools. The rest of this guide is for a narrower question, per-stock positioning.
From raw prediction market data to one signal per stock
Raw access is the easy half. The work starts when you want to know what prediction markets currently say about a ticker. Stock-related questions arrive as separate event markets with their own phrasing, strikes and expiry dates: "Will S&P 500 (SPY) hit $775 this week?", "SPY closes above $735 on July 16?", dozens more per index and single name. Each market answers its own narrow question. None of them answers "how is the crowd positioned on SPY?"
Getting there takes four steps, each of which the Adanos Polymarket Stock Sentiment API runs hourly across roughly 900 active markets mapped to 100+ tickers:
- Map: match every stock-related market to its ticker
- Price: read each market's YES price as a probability, preferring the live orderbook midpoint where usable bid and ask evidence exists
- Weight: discount prices that are barely tradeable, using spread, depth, liquidity and trade confidence
- Aggregate: roll the weighted reads up per ticker into one score from -1.0 to +1.0, plus a bullish and bearish split, a 0-100 activity buzz score and a trend direction
The weighting earns its keep on days like July 16, 2026. That afternoon the busiest SPY market, "SPY Up or Down on July 16?", traded at a YES of 0.245 on 1,272 trades: a liquid, near-the-money read leaning bearish for the day. Two strikes over, "SPY closes above $735?" showed a YES of 0.9875 with zero trades in the window. The second number looks strongly bullish, but a deep in-the-money strike mostly restates where the price already is; far strikes pin toward 0 or 1 into expiry regardless of what anyone expects next. Read a single market as a probability restatement rather than conviction. The information sits in the near-the-money, actively traded books, which is exactly what the weights favor: across all 52 active SPY markets the aggregate came out at -0.025 that afternoon, a dead-flat 50/50 split rather than the 99% bullishness a naive average over pinned strikes would suggest.
Three endpoints, three questions
Which stocks have the most prediction-market action right now? The trending endpoint ranks tickers by buzz:
$ curl "https://api.adanos.org/polymarket/stocks/v1/trending?limit=10&from=2026-07-16&to=2026-07-16" \
-H "X-API-Key: YOUR_FREE_KEY"
[
{
"ticker": "SPY",
"company_name": "SPDR S&P 500 ETF Trust",
"buzz_score": 70.0,
"trend": "rising",
"trade_count": 2336,
"market_count": 52,
"unique_traders": 210,
"sentiment_score": -0.025,
"bullish_pct": 50,
"bearish_pct": 50,
"total_liquidity": 413523.96
},
...
]
The response is an array; the first element is shown. Fields worth reading twice: market_count is how many distinct markets currently map to the ticker, unique_traders is participation breadth and total_liquidity is the capital sitting in those books. A high buzz on three traders is a different animal from the same buzz on two hundred.
What exactly is priced in for one ticker? The per-ticker endpoint adds the underlying markets:
$ curl "https://api.adanos.org/polymarket/stocks/v1/stock/SPY?from=2026-07-16&to=2026-07-16" \
-H "X-API-Key: YOUR_FREE_KEY"
{
"ticker": "SPY",
"sentiment_score": -0.025,
"bullish_pct": 50,
"bearish_pct": 50,
"top_mentions": [
{ "question": "SPY (SPY) Up or Down on July 16?",
"yes_price": 0.245, "sentiment_score": -0.52,
"trade_count": 1272, "volume_24h": 50058.79 },
{ "question": "S&P 500 (SPY) closes above $735 on July 16?",
"yes_price": 0.9875, "sentiment_score": 0.975,
"trade_count": 0, "volume_24h": 212.65 }
],
"pulse": {
"mood": "mixed", "confidence": 41.6, "thin_data": false,
"why": ["opposing_market_signals", "upside_targets_rejected", "floor_support"],
"evidence": { "zero_trade_market_pct": 0.404, "avg_spread": 0.039 }
}
}
The top_mentions array is the audit trail: each row carries the market question, its YES price, the sentiment that price implies, plus the trade count and 24-hour volume behind it. Before trusting an aggregate, count the live books: on July 16, 4 of the top 10 SPY markets had zero trades in the window. The pulse object does that math for you. It is a compact interpretation layer with a mood label, a confidence score capped by data quality, machine-readable reason codes and the evidence behind them; on this pull it read SPY as "mixed" at 41.6 confidence with a zero-trade share of 40% and an average spread of 0.039. When the evidence is too weak for any directional read, thin_data flips to true.
What does the whole prediction-market crowd say about equities today? The market-wide snapshot rolls everything up and names the drivers:
$ curl "https://api.adanos.org/polymarket/stocks/v1/market-sentiment?from=2026-07-16&to=2026-07-16" \
-H "X-API-Key: YOUR_FREE_KEY"
{
"buzz_score": 46.3,
"sentiment_score": 0.233,
"bullish_pct": 57,
"bearish_pct": 40,
"active_tickers": 101,
"total_liquidity": 1277408.81,
"drivers": [
{ "ticker": "GOOGL", "buzz_score": 70.0, "sentiment_score": 0.435 },
{ "ticker": "RKLB", "buzz_score": 61.0, "sentiment_score": -0.454 }
]
}
The remainder beyond the bullish and bearish percentages is neutral markets. Trending also comes sliced by sector and by country, plus compare and search endpoints for programmatic lookups. The Finance Sentiment CLI wraps the same surface for the terminal.
Practical notes for the first ten minutes: from and to bound the UTC aggregation window and make calls reproducible; the response echoes the span as period_days. Omitting both gives a 7-day window, and the older days parameter still works but is marked deprecated in the docs. History depth depends on tier. A bad key returns 401 with {"detail":"Invalid API key."}. Responses carry x-ratelimit-remaining-monthly and x-ratelimit-reset-monthly headers so you can watch the monthly quota; exceeding a limit returns HTTP 429.
What developers build with this
Dashboards with a real-money column. Social sentiment dashboards get one more input that cannot be farmed with a meme: what traders with capital at risk are pricing. The Polymarket Top 50 board is exactly this, built on the same trending endpoint.
Catalyst monitoring at hourly resolution. Event markets reprice within minutes of a headline; this API shows you that reprice on the next hourly refresh, not live. Use it to compare the pre-event baseline with the post-event level per ticker around known catalysts (earnings dates, product events, macro prints). For the minutes themselves, subscribe to Polymarket's public WebSocket market channel. Note that the free tier's 250 requests per month covers spot checks around catalysts, not continuous polling.
Cross-source validation. The same API key serves Reddit, X and news sentiment for stocks. Reddit euphoric while Polymarket prices a coin flip is a divergence worth knowing about before taking a crowded position; both bullish is a different, better-confirmed setup. On the research side, Wolfers and Zitzewitz (2004) found market-generated forecasts typically fairly accurate in liquid settings such as elections and sports, outperforming most moderately sophisticated benchmarks; the same survey documents the favorite-longshot bias, miscalibration exactly at extreme prices. Thin single-stock strikes sit closer to the second case, which is one more reason the aggregation discounts barely-tradeable prices instead of trusting every one as a clean probability.
What this does not do
- No tick data. Aggregated flow updates hourly. For live orderbook streams use Polymarket's public WebSocket market channel directly
- Ticker-mapped subset. Only markets mappable to stock tickers are scored. Politics, sports and crypto event markets are out of scope here
- No execution. Nothing in this API places orders. Trading runs through Polymarket's CLOB with wallet signing, subject to your jurisdiction and their terms
- Tier boundaries. Free covers 250 requests per month at up to 100 per minute, with 30 days of history; Hobby extends history to 90 days and Professional to up to 365. The full paginated per-market feed (/stock/{ticker}/mentions) is Professional-only; the top 10 markets embedded in the per-ticker response come with any tier
One caveat on the signal itself: prediction-market volume on single-stock questions is thinner than on elections or macro events. A strike far from the money can carry a lopsided price on little liquidity, which is why the aggregation weights by spread, depth, liquidity and trade confidence rather than averaging prices naively, plus why unique_traders, total_liquidity and the per-ticker pulse quality flags ship in the responses.
FAQ
Is the Polymarket API free?
Polymarket's own market-data endpoints are publicly documented and readable without an API key; authentication is only needed for trading. The Adanos Polymarket Stock Sentiment API, which aggregates those markets into per-stock signals, has a free tier of 250 requests per month with no credit card.
Do I need an API key for Polymarket?
Not for reading market data: Polymarket's data endpoints are public. Placing or canceling orders through the CLOB API requires cryptographic signing tied to your wallet. The Adanos aggregation layer uses a conventional X-API-Key header.
Does Polymarket allow API trading?
Yes. Order placement runs through Polymarket's CLOB API with signed requests; official clients exist in TypeScript, Python and Rust. Whether you may trade depends on your jurisdiction and Polymarket's terms. This guide covers the read-only data side, which needs no wallet, no signing and no key.
Can you access the Polymarket API in the US?
The read-only data endpoints are publicly reachable and the aggregated stock-sentiment calls in this guide work anywhere. Whether you can trade on Polymarket from the United States depends on Polymarket's current terms and your jurisdiction; check the official documentation for the live policy.
How does a prediction-market price become a stock sentiment score?
A market like "SPY closes above $735 today" trading at a YES price of 0.99 implies a 99% crowd probability. On its own that mostly restates where the price already is, since deep in- or out-of-the-money strikes pin toward 1 or 0 into expiry. The Adanos engine therefore reads the YES-token orderbook midpoint where usable bid and ask evidence exists, weights it by spread, depth, liquidity and trade confidence, then aggregates every mapped market into one -1.0 to +1.0 score per ticker.
What is the difference between Polymarket's API and the Adanos Polymarket API?
Polymarket's APIs serve raw markets, orderbooks and trading for every market on the platform. The Adanos Polymarket Stock Sentiment API is an aggregation layer on top: it maps stock-related markets to tickers, converts prices into sentiment, scores activity 0-100 and serves trending lists, per-ticker detail and a market-wide snapshot. Raw data and execution live with Polymarket; per-stock signals live here.
How fresh is the aggregated Polymarket data?
Polymarket flow is fetched hourly. Historical data covers 30 days on the free tier, 90 on Hobby and up to 365 on Professional. For tick-level freshness use Polymarket's own WebSocket channels; the aggregation trades latency for a liquidity-weighted per-ticker signal.
Sources
The responses above are real API output from July 16, 2026, lightly truncated for readability. External references: