Gem Finder
The Gem Finder endpoint returns up to 1,000 market-ranked assets after stablecoin, derivative-asset (wrapped, bridged, pegged, liquid-staking, synthetic, tokenized-stock), quote-freshness (quotes older than 24 hours are treated as no-longer-trading), minimum-market-cap, and minimum-volume filters. Rows include market, supply, ATH/ATL, dilution, chain-scope, and observed exchange-availability fields; no proprietary token score or wallet signal is returned. The complete dataset refreshes every 6 hours.
Get gem finder data
Returns the gem finder dataset including coins, available exchanges, and metadata.
Query parameters
- Name
limit- Type
- integer
- Description
Maximum number of coins per page.
1to1000. When omitted, the complete cached payload is returned. When provided, the response contains a page array plus apaginationobject.
- Name
cursor- Type
- string
- Description
Opaque cursor for fetching the next page. It is bound to one cache snapshot and expires after a refresh; restart without a cursor after an expiry error.
Response fields
- Name
coins- Type
- array
- Description
Array of coin objects containing symbol, name, price, market cap, nullable FDV, 24-hour volume, nullable 24-hour and 7-day price change, nullable 24-hour market cap change, nullable circulating supply, nullable ATH price/date/distance, nullable ATL price/distance, nullable FDV/MCap ratio, exchange coverage, a nullable preferred chain slug, and a nullable
lastUpdatedquote timestamp. Missing or invalid upstream values staynull— they are never coerced to zero; ambiguous same-ticker assets do not receive exchange attribution from symbol-only venue feeds.
- Name
availableExchanges- Type
- array
- Description
List of exchange identifiers that appear across the coin set. Useful for building client-side filters.
- Name
totalCoins- Type
- integer
- Description
Total number of coins in the dataset.
- Name
updatedAt- Type
- string
- Description
ISO 8601 timestamp of the last data refresh.
nullif data has not yet been populated.
- Name
syncStatus- Type
- object
- Description
Sync completeness and enrichment-coverage metadata when present.
enrichment.platformreports fresh versus preserved chain assignments;enrichment.exchangeslists successful and failed venue sources plus preserved last-good listings. Degraded enrichment is surfaced throughX-Sharpe-Data-State: partial; incomplete market pages still preserve the entire last-good cache.
When limit is supplied, the response is wrapped with a sibling pagination object alongside data:
- Name
pagination.cursor- Type
- string | null
- Description
Opaque, snapshot-bound cursor to pass back as
cursoron the next request.nullwhen there are no more pages.
- Name
pagination.has_more- Type
- boolean
- Description
truewhen more rows are available after this page;falsewhen this is the last page.
- Name
pagination.total- Type
- number
- Description
Total number of rows in the unpaginated dataset, when available. Omitted for endpoints that do not compute a count.
A missing-but-readable cache row returns a legitimate empty dataset with
X-Sharpe-Data-State: empty. A cache/database read failure returns 502
instead of masquerading as an empty market.
Request
curl -G https://www.sharpe.ai/api/v1/gem-finder/data \
-H "Authorization: Bearer sk_live_your_key_here"
Response
{
"data": {
"coins": [
{
"id": "example-token",
"symbol": "EXM",
"name": "Example Token",
"image": "https://assets.coingecko.com/example.png",
"price": 0.142,
"marketCap": 12500000,
"fdv": 18750000,
"volume24h": 890000,
"change24h": 5.32,
"change7d": 12.4,
"athPrice": 1.42,
"athDistance": -90,
"athDate": "2025-11-18T00:00:00Z",
"fdvMcapRatio": 1.5,
"exchangeCount": 2,
"exchanges": ["Binance", "Bybit"],
"chainSlug": "ethereum",
"chainSlugs": ["ethereum", "arbitrum"],
"lastUpdated": "2026-03-28T11:54:31Z"
}
],
"availableExchanges": [
"Binance",
"Bybit"
],
"totalCoins": 997,
"updatedAt": "2026-03-28T11:55:00Z"
},
"meta": {
"request_id": "req_abc123def456ghij",
"timestamp": "2026-03-28T11:55:05Z",
"elapsed_ms": 12
}
}