Skip to main content

Documentation Index

Fetch the complete documentation index at: https://polynode.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Returns every distinct tag slug currently in use, sourced from Polymarket’s event-level taxonomy. 5,779 tags at time of writing — refreshed hourly. The values returned by this endpoint are exactly what you pass to ?tag_slug= on /v2/wallets/{addr}/positions/onchain and /v2/onchain/positions. Use this endpoint to populate dropdowns, autocomplete inputs, or to discover new tags as Polymarket adds them.

Request

GET /v2/onchain/tags
ParameterTypeDescription
detailsboolean (optional)When true, returns enriched per-tag objects (markets, events, first/last seen timestamps). Default: returns just an array of slug strings.
prefixstring (optional)Case-sensitive starts-with match. ?prefix=nba returns nba, nba-finals, nba-playoffs, etc.
min_marketsinteger (optional)Filter out long-tail tags. ?min_markets=10000 returns ~48 mainstream tags. ?min_markets=100 returns the ~700 tags worth surfacing in a UI.
sortstring (optional)popularity (default, by market count desc) or alpha (alphabetical).
limitinteger (optional)Default 10,000 / max 10,000 (the full namespace fits comfortably in one response).

Response

Default (lightweight — just slugs)

{
  "count": 5779,
  "tags": [
    "sports",
    "games",
    "hide-from-new",
    "recurring",
    "crypto",
    "crypto-prices",
    "up-or-down",
    "esports",
    "5M",
    "soccer",
    "basketball",
    "..."
  ]
}
73 KB total payload, sorted by popularity. Suitable for caching client-side and using as the source list for filter UI.

With ?details=true

{
  "count": 5779,
  "tags": [
    {
      "slug": "sports",
      "markets": 468766,
      "events": 76449,
      "first_seen_at": 1680722387,
      "last_seen_at": 1777225921
    },
    {
      "slug": "nba",
      "markets": 58108,
      "events": 3418,
      "first_seen_at": 1702923075,
      "last_seen_at": 1777225921
    },
    {
      "slug": "bitcoin",
      "markets": 76117,
      "events": 16800,
      "first_seen_at": 1700000000,
      "last_seen_at": 1777225947
    }
  ]
}
FieldTypeDescription
slugstringThe tag value to use in ?tag_slug=
marketsnumberHow many markets on Polymarket carry this tag
eventsnumberHow many distinct parent events carry this tag
first_seen_atnumberUnix seconds — earliest market.created_at for any market with this tag
last_seen_atnumberUnix seconds — latest market.created_at for any market with this tag (use to detect freshly-active tags)

What’s in the namespace

The 5,779 tags break down roughly as follows:
CoverageTag countExamples
100K+ markets10sports, games, crypto, recurring, up-or-down
10K-100K38basketball, nba, bitcoin, ethereum, soccer, tennis, politics
1K-10K133weather, dota-2, counter-strike-2, weekly, nfl, mlb
100-1K516Specific sports leagues, asset themes, event categories
Long tail~5,000Event-specific tags (fema, dallas-stars, gustavo-petro, walmart)
For most filter UIs, only the top ~700 tags (those with min_markets >= 100) are useful — the long tail is dominated by one-off event tags that match a single market each.

Examples

Get all tags (default lightweight list)

curl "https://api.polynode.dev/v2/onchain/tags" \
  -H "x-api-key: YOUR_KEY"

Get only mainstream tags (worth surfacing in a UI)

curl "https://api.polynode.dev/v2/onchain/tags?min_markets=100&details=true" \
  -H "x-api-key: YOUR_KEY"
Returns ~700 tags with full enrichment — a reasonable size for populating an autocomplete or category dropdown.
curl "https://api.polynode.dev/v2/onchain/tags?prefix=nba&details=true" \
  -H "x-api-key: YOUR_KEY"
Returns nba, nba-playoffs, nba-finals, nba-draft, nba-all-star, etc. — useful for narrowing a sports filter to a specific basketball context.

Find recently-introduced tags

curl "https://api.polynode.dev/v2/onchain/tags?details=true&sort=alpha" \
  -H "x-api-key: YOUR_KEY" \
| jq '.tags | sort_by(-.first_seen_at) | .[0:20]'
Sorts newest tags first by their initial appearance — useful for catching newly-added Polymarket categories.

Refresh cadence

The materialized view backing this endpoint refreshes once per hour. New tags appearing on Polymarket show up here within an hour of the metadata-ingester picking them up (typically minutes). Existing tags’ markets / events counts and last_seen_at lag by at most 60 minutes. This endpoint is read-only and additive — calling it does not affect any other endpoint or response shape.