---
title: "Stock sentiment"
method: GET
path: "/polymarket/stocks/v1/stock/{ticker}"
tags: ["Polymarket Stocks"]
---

# Stock sentiment

`GET /polymarket/stocks/v1/stock/{ticker}`

## Request

- Base URL: `https://api.adanos.com`
- URL: `https://api.adanos.com/polymarket/stocks/v1/stock/{ticker}`
- Auth: API key in header `X-API-Key`

Returns Polymarket-based sentiment and activity for one stock ticker.

The response combines:
- Period metrics for the date window defined by `from`/`to`.
- Representative market-level evidence in `top_mentions`.
- A compact current market read in `pulse`.

**Fields:**
- `sentiment_score`, `bullish_pct`, `bearish_pct`: outcome-aware sentiment derived from Polymarket market prices and outcomes
- `buzz_score`: normalized activity score for the selected period; both bullish and bearish activity can increase buzz
- `trend`: recent flow momentum, comparing the current 3 UTC days with the previous 3 UTC days using trades, volume, market breadth and liquidity; this is not stock price movement
- `trade_count`, `market_count`, `unique_traders`, `total_liquidity`: period activity, breadth, observed participation and liquidity
- `daily_trend`: daily activity and sentiment values for the selected window
- `top_mentions`: representative Polymarket markets behind the ticker-level signals, including market-level `sentiment_score` and `buzz_score`
- `pulse`: compact current interpretation from the latest stored open-market snapshots

**Notes:**
- `pulse` describes the current state and does not repeat the aggregate fields. Use `top_mentions` for concrete market examples.
- `top_mentions` includes only markets observed active/open in the selected period; ranking prioritizes outcome-aware directional evidence, keeps opposing signals visible when present, then uses trade count, market status, volume and liquidity as tie-breakers.
- Prices, volume and liquidity in `top_mentions` come from the selected in-period snapshot, not necessarily the latest live market state.
- `active` indicates whether the market is currently open, so older in-period evidence can now be inactive, resolved or expired.
- `market_status` can be `tradable`, `open`, `resolved`, `expired` or `inactive`.
- For windows longer than snapshot retention, aggregate metrics still come from daily aggregates, while `top_mentions` is limited to retained market snapshots.
- `ticker` is an Instrument Graph key: a stock's company key (`SKHY` for SK hynix, `BNY`), an ETF's product key (`EWG`). Use `/search` to find a key by name or listing symbol.
- Returns `200` with `found: false` when the key is a Graph key but this service has no qualifying data in the requested window. Returns `404` when the key is not a Graph key, including keys used before the Graph switch (for example `BK`, `DAX`); there is no fallback or redirect. Returns `503` when the key lookup is unavailable.

## Path parameters

- `ticker` string, required: Instrument Graph key, case-insensitive: the company key for a stock (AAPL, BNY, BRK, SKHY), the product key for an ETF (SPY, EWG). 1-32 ASCII letters/digits with an optional documented venue suffix (SAP.DE). Share classes (BRK.A, BRK-B), cashtags and unknown suffixes return 422; other keys that are not Graph keys return 404. Listing aliases and keys used before the Graph switch are not accepted; use `/search` to find a company's key.

## Query parameters

- `from` string, date, nullable: Start date in YYYY-MM-DD. Inclusive UTC date.
- `to` string, date, nullable: End date in YYYY-MM-DD. Inclusive UTC date. Omit to use the current UTC date.

## Response `200`

Successful Response

- PolymarketStockDetailResponse: Detailed Polymarket data for a single stock.
  - `ticker` string, required: Instrument Graph key: the company key for a stock (AAPL, BNY), the product key for an ETF (EWG)
  - `company_name` string, nullable: Instrument Graph company name; the product name for an ETF
  - `found` boolean, required: Legacy v1 data-availability flag. `true` means this service has qualifying data for this asset/window. `false` means the asset is supported, but this service has no qualifying data for the requested window. Planned for removal in v2.
  - `buzz_score` number, nullable: Buzz score (0-100)
  - `trend` 'rising' | 'falling' | 'stable', nullable: Flow momentum over the current 3 UTC days vs previous 3 UTC days using trades, volume, market breadth and liquidity; not price movement. For `from`/`to`, anchors at `to` (or now when `to` is today).
  - `period_days` integer, nullable: Analysis period in days
  - `trade_count` integer, nullable: Trade count in period
  - `market_count` integer, nullable: Distinct markets that existed for ticker within the selected UTC window, counted by market-catalog lifetime overlap
  - `current_market_count` integer, nullable: Number of currently open markets in the latest UTC-day snapshot for ticker; use this for live-only market breadth
  - `unique_traders` integer, nullable: Exact distinct union of observed proxy and explicit maker wallet hashes for the delivered scope and UTC window; null when retained wallet-level trades do not fully cover the window; not a complete market-wide participant census
  - `sentiment_score` number, nullable: Orderbook-aware implied sentiment; null when no directional sentiment evidence exists in the selected period
  - `positive_count` integer, nullable: Deprecated. Outcome-aware bullish market count retained for v1 compatibility; prefer bullish_pct with trade_count and market_count for public analysis.
  - `negative_count` integer, nullable: Deprecated. Outcome-aware bearish market count retained for v1 compatibility; prefer bearish_pct with trade_count and market_count for public analysis.
  - `neutral_count` integer, nullable: Deprecated. Outcome-aware neutral/unclassified market count retained for v1 compatibility; prefer bullish_pct, bearish_pct, trade_count and market_count for public analysis.
  - `bullish_pct` integer, nullable: Outcome-aware bullish market percentage
  - `bearish_pct` integer, nullable: Outcome-aware bearish market percentage
  - `total_liquidity` number, nullable: Windowed aggregated liquidity signal in USD over the selected period; not a current snapshot
  - `daily_trend` PolymarketDailyTrendItem[], nullable: Daily activity breakdown for the selected period
    - `date` string, required: Date in YYYY-MM-DD format
    - `trade_count` integer, required: Trade count on this date
    - `sentiment_score` number, nullable: Outcome-aware implied sentiment on this date; can come from orderbook evidence or legacy traded price evidence, null when no sentiment evidence exists
    - `buzz_score` number, nullable: Buzz score on this date; null when neither a daily aggregate nor a live fallback could be computed for this date
    - `bullish_pct` integer, nullable: Outcome-aware bullish market-direction percentage for this date
    - `bearish_pct` integer, nullable: Outcome-aware bearish market-direction percentage for this date
  - `top_mentions` PolymarketTopMention[], nullable: Top markets with an active/open snapshot during the retained snapshot portion of the selected UTC-day period for this ticker (including the current UTC day so far), capped at 10 and sorted as representative sentiment evidence: outcome-aware directional markets first, opposing signals kept visible when present, then trade count, with non-open markets de-prioritized and 24h volume and liquidity as tie-breakers. For windows longer than raw snapshot retention, ticker analytics still use daily aggregates, while this list is limited to retained market snapshots. Item prices and liquidity come from the selected in-period snapshot, not necessarily the current market state. `active` indicates whether the market is currently open, so historical in-period evidence can now have a non-open current state. `market_status` gives the compact current state.
    - `condition_id` string, required: Polymarket condition ID
    - `question` string, required: Market question/title
    - `market_type` string, required: Derived market type
    - `trade_count` integer, nullable: UTC-day trade count from the selected in-period snapshot
    - `sentiment_score` number, required: Outcome-aware market price sentiment for the selected in-period snapshot; prefers orderbook midpoint when available, falls back to YES/NO price and returns neutral 0.0 when direction is unclassified
    - `buzz_score` number, nullable: Market-level activity buzz score for this selected in-period snapshot
    - `yes_price` number, nullable: YES price from the selected in-period snapshot; not necessarily live
    - `no_price` number, nullable: NO price from the selected in-period snapshot; not necessarily live
    - `liquidity` number, required: Selected in-period snapshot liquidity in USD; not necessarily live
    - `volume_24h` number, required: Selected in-period snapshot rolling 24h volume in USD; not necessarily live
    - `end_date` string, nullable: Market end date (ISO)
    - `active` boolean, required: Whether the representative market state is open; snapshot-backed rows use current state, historical daily examples use stored representative state
    - `market_status` 'tradable' | 'open' | 'resolved' | 'inactive' | 'expired', required: Compact market status for this representative item; snapshot-backed rows use current state, historical daily examples use stored representative state
  - `pulse` PolymarketTickerPulse: Compact interpretation layer for current ticker-level Polymarket data.
    - `mood` 'bullish' | 'bearish' | 'mixed' | 'event_driven' | 'illiquid' | 'unclear', required: Current compact Polymarket interpretation for this ticker
    - `confidence` number, required: Interpretation confidence capped by coverage, trade breadth, spread, liquidity and recency
    - `thin_data` boolean, required: True when current evidence is insufficient for a strong directional interpretation
    - `why` string[], required: Stable machine-readable reason codes explaining the pulse interpretation
    - `warnings` string[]: Stable machine-readable data quality, freshness and tradability warnings
    - `evidence` PolymarketPulseEvidence, required: Compact data-quality evidence for the ticker-level Polymarket pulse.
      - `directional_coverage` number, nullable: Share of current open snapshot markets with outcome-aware directional evidence
      - `traded_market_pct` number, nullable: Share of current open snapshot markets with trades in the latest UTC day
      - `zero_trade_market_pct` number, nullable: Share of current open snapshot markets without trades in the latest UTC day
      - `avg_spread` number, nullable: Average YES-token spread across current open snapshot markets with bid/ask spread evidence
      - `snapshot_at` string, date-time, nullable: Latest stored snapshot timestamp used by the pulse read model

## Other responses

- `401`: Authentication failed
- `403`: Historical data limit exceeded
- `404`: Unsupported ticker
- `422`: Invalid period or query parameters
- `429`: Rate limit exceeded
- `503`: Instrument Graph key lookup or database service unavailable; no legacy fallback is used
- `504`: Analytics request deadline exceeded

## Changes

- **2026-11-04** `7e8bdb1e7e75`: 1 warning
  - changed the pattern of the `path` request parameter `ticker` from `^\$?(?:[A-Za-z0-9]{1,8}[.-][A-Za-z]|[A-Za-z0-9]{0}[A-Za-z][A-Za-z0-9]{0,9}|[A-Za-z0-9]{1}[A-Za-z][A-Za-z0-9]{0,8}|[A-Za-z0-9]{2}[A-Za-z][A-Za-z0-9]{0,7}|[A-Za-z0-9]{3}[A-Za-z][A-Za-z0-9]{0,6}|[A-Za-z0-9]{4}[A-Za-z][A-Za-z0-9]{0,5}|[A-Za-z0-9]{5}[A-Za-z][A-Za-z0-9]{0,4}|[A-Za-z0-9]{6}[A-Za-z][A-Za-z0-9]{0,3}|[A-Za-z0-9]{7}[A-Za-z][A-Za-z0-9]{0,2}|[A-Za-z0-9]{8}[A-Za-z][A-Za-z0-9]{0,1}|[A-Za-z0-9]{9}[A-Za-z][A-Za-z0-9]{0,0}|[0-9]{3,10})$` to `^(?=[A-Za-z0-9.]{1,32}$)[A-Za-z0-9]+(?:\.(?:[Aa][Ee]|[Aa][Ss]|[Aa][Tt]|[Aa][Xx]|[Bb][Aa]|[Bb][Dd]|[Bb][Kk]|[Bb][Oo]|[Bb][Rr]|[Cc][Aa]|[Cc][Ll]|[Cc][Nn]|[Cc][Oo]|[Dd][Ee]|[Dd][Uu]|[Ff]|[Hh][Aa]|[Hh][Ee]|[Hh][Kk]|[Hh][Mm]|[Ii][Cc]|[Ii][Rr]|[Ii][Ss]|[Jj][Kk]|[Jj][Oo]|[Kk][Ll]|[Kk][Qq]|[Kk][Ss]|[Kk][Ww]|[Ll]|[Ll][Ss]|[Mm][Cc]|[Mm][Ii]|[Mm][Uu]|[Mm][Xx]|[Nn][Ee]|[Nn][Ss]|[Nn][Zz]|[Oo][Ll]|[Pp][Aa]|[Pp][Rr]|[Pp][Ss]|[Qq][Aa]|[Rr][Oo]|[Ss][Aa]|[Ss][Aa][Uu]|[Ss][Gg]|[Ss][Ii]|[Ss][Nn]|[Ss][Ss]|[Ss][Tt]|[Ss][Ww]|[Ss][Zz]|[Tt]|[Tt][Aa]|[Tt][Oo]|[Tt][Ww]|[Tt][Ww][Oo]|[Vv]|[Vv][Ii]|[Vv][Nn]|[Ww][Aa]))?$(?![\s\S])`
- **2026-09-30** `a74a23b969c4`: 1 info
  - deleted the `query` request parameter `days` with deprecation

[Operation history](https://skmtc.dev/adanos/apis/adanos-market-sentiment-api/changes/polymarket/stocks/v1/stock/:ticker/get.md)

---

[API](https://skmtc.dev/adanos/apis/adanos-market-sentiment-api.md) - [All operations](https://skmtc.dev/adanos/apis/adanos-market-sentiment-api/llms.txt) - [OpenAPI document](https://skmtc.dev/adanos/apis/adanos-market-sentiment-api/revisions/7e8bdb1e7e75?raw)
