Exchange Listings
Track which tokens get listed on the top 5 retail CEXs — Binance, OKX, Bybit, Gate.io, and MEXC — tagged by narrative. Updated daily. A forward signal for where retail capital is being deployed: when MEXC lists 20 AI-agent tokens in a week, that narrative is heating up.
Built on the exchange_listings dataset. Every new spot listing on a supported exchange is ingested within 24 hours, tagged to a Sharpe narrative via CoinGecko categories, and exposed through these endpoints.
Hub payload
Returns the full Exchange Listings hub payload: weekly and monthly aggregated counts by narrative and by exchange, recent listings for the last 90 days, and summary stats. This is the same data that powers the /listings terminal page.
Query parameters
- Name
narrative- Type
- string
- Description
Filter to a single narrative slug (e.g.
ai-agents,memes,layer-1,rwa,defi). When set, all returned counts are scoped to that narrative.
- Name
exchange- Type
- string
- Description
Filter to a single exchange. Valid:
binance,okx,bybit,gateio,mexc.
Response fields
- Name
weekly- Type
- array
- Description
Weekly buckets, last 26 weeks. Each element:
{ bucket_date, exchange, narrative_slug, listing_count }.bucket_dateis ISO-week Monday (UTC).
- Name
monthly- Type
- array
- Description
Monthly buckets, last 12 months. Same shape as
weeklybut with month-startbucket_date.
- Name
recent- Type
- array
- Description
Raw rows from the last 90 days, newest first. Each:
{ id, token_symbol, token_name, token_coingecko_id, exchange, listing_date, listing_date_source, narrative_slug }.
- Name
totals- Type
- object
- Description
{ thisWeek, lastWeek, thisMonth, lastMonth }— listing counts for UI delta calculations.
- Name
topNarrativesThisMonth- Type
- array
- Description
Top 5 narratives ranked by listing count in the current month. Each:
{ narrative_slug, count }.
- Name
topExchangesThisMonth- Type
- array
- Description
Top 5 exchanges ranked by listing count in the current month. Each:
{ exchange, count }.
- Name
lastListingAt- Type
- string
- Description
Freshest
listing_dateacross active rows (ISO date). Null if no data yet.
- Name
lastUpdatedAt- Type
- string
- Description
Latest
categorized_attimestamp (when any row was last triaged or refreshed).
Request
curl -G https://www.sharpe.ai/api/v1/listings/data \
-H "Authorization: Bearer sk_live_your_key_here" \
--data-urlencode "narrative=ai-agents"
Response (truncated)
{
"data": {
"weekly": [
{ "bucket_date": "2026-03-30", "exchange": "mexc",
"narrative_slug": "ai-agents", "listing_count": 5 }
],
"monthly": [ ... ],
"recent": [
{ "token_symbol": "GRASS", "token_name": "Grass",
"token_coingecko_id": "grass", "exchange": "mexc",
"listing_date": "2024-12-07",
"listing_date_source": "exchange_kline",
"narrative_slug": "ai-agents" }
],
"totals": { "thisWeek": 0, "lastWeek": 2,
"thisMonth": 14, "lastMonth": 36 },
"topNarrativesThisMonth": [
{ "narrative_slug": "ai-agents", "count": 3 },
{ "narrative_slug": "memes", "count": 3 }
],
"topExchangesThisMonth": [
{ "exchange": "mexc", "count": 9 }
],
"lastListingAt": "2026-04-13",
"lastUpdatedAt": "2026-04-21T00:08:32Z"
}
}
Recent listings feed
A flat list of recent token listings. Each row tells you which token got listed on which exchange, on what day, and which narrative it belongs to. Intended for consumers that want a simple signal feed without the aggregates.
Query parameters
- Name
narrative- Type
- string
- Description
Filter to a single narrative slug.
- Name
exchange- Type
- string
- Description
Filter to a single exchange. Valid:
binance,okx,bybit,gateio,mexc.
- Name
days- Type
- integer
- Description
Lookback window in days. Range 1-365. Default 90.
- Name
limit- Type
- integer
- Description
Max rows returned. Range 1-1000. Default 200.
Response fields
- Name
rows- Type
- array
- Description
Array of listing rows sorted by
listing_datedescending. Each:{ token_symbol, token_name, token_coingecko_id, exchange, listing_date, listing_date_source, narrative_slug }.
- Name
count- Type
- integer
- Description
Number of rows returned.
- Name
window_days- Type
- integer
- Description
Echo of the
daysparameter for clarity.
listing_date_source values
Every row carries the source of its listing_date for transparency:
exchange_kline— derived from the exchange's own k-line first-trade timestamp (authoritative)announcement_rss— parsed from the exchange's announcement RSS feedannouncement_html— scraped from the exchange's announcement pagecoingecko_ticker— derived from CoinGecko per-exchange ticker history (fallback)first_seen— proxy: when our cron first observed this pair (used when no authoritative source resolves)manual— admin-set
Request
curl -G https://www.sharpe.ai/api/v1/listings/recent \
-H "Authorization: Bearer sk_live_your_key_here" \
--data-urlencode "exchange=binance" \
--data-urlencode "days=30"
Response (truncated)
{
"data": {
"rows": [
{ "token_symbol": "TRUMP", "token_name": "Official Trump",
"token_coingecko_id": "official-trump",
"exchange": "binance",
"listing_date": "2025-01-19",
"listing_date_source": "exchange_kline",
"narrative_slug": "memes" }
],
"count": 1,
"window_days": 30
}
}
Narratives
Every listing is tagged to one of Sharpe's 22 canonical narrative slugs (same taxonomy as /v1/narratives/data). Tokens CoinGecko hasn't categorized yet are excluded from all public endpoints — only rows with status = 'active' and a resolved narrative are exposed.
Supported narrative slugs
layer-1 · layer-2 · defi · dex-tokens · cex-tokens · lending · liquid-staking · restaking · ai-agents · defai · depin · desci · rwa · gaming · socialfi · nfts · memes · stablecoins · oracles · privacy · modular · intent
Update cadence
Each exchange has its own daily cron, staggered at 00:00–00:20 UTC. The nightly rollup cron at 00:45 UTC refreshes the exchange_listings_weekly and exchange_listings_monthly materialized views that power aggregate queries.
| Component | Schedule |
|---|---|
| Binance ingest | 0 0 * * * UTC |
| OKX ingest | 5 0 * * * UTC |
| Bybit ingest | 10 0 * * * UTC |
| Gate.io ingest | 15 0 * * * UTC |
| MEXC ingest | 20 0 * * * UTC |
| Rollup (weekly+monthly matviews) | 45 0 * * * UTC |
Each ingest detects new spot-trading base assets (USDT and USDC pairs), resolves the CoinGecko coin id, pulls the first-trade date from the exchange's own k-line history, and maps the CG categories to a Sharpe narrative. Already-resolved rows are skipped on re-run; uncategorized and needs_review rows are re-processed so they promote to active as CoinGecko adds data.