CoinGecko Scraper — Crypto Prices, Market Cap, Volume, Trending
Pricing
from $0.70 / 1,000 result items
CoinGecko Scraper — Crypto Prices, Market Cap, Volume, Trending
Crypto market data from CoinGecko for AI agents: top-coin screener with filters and sort, simple prices in 63 currencies, coin profiles, token lookup by contract address, trending, global stats, categories, exchanges, daily history and OHLC candles. No API key.
Pricing
from $0.70 / 1,000 result items
Rating
0.0
(0)
Developer
Samat Makatov
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Live crypto market data from CoinGecko's public API in eleven modes: top-coin screens with filters, simple prices, full coin profiles, token lookup by contract address, trending coins, global market stats, sector (category) rankings, exchanges, daily history, OHLC candles and id search. Built for trading bots, research agents, portfolio dashboards and alerting. No API key, proxy or browser needed (an optional free Demo key makes multi-coin runs about 10× faster).
Use cases
- Momentum / pump screener —
marketswithminChange24h: 15,minVolume24h: 1000000,maxRank: 500→ coins breaking out today. - Portfolio valuation —
pricefor your holdings ineur/gbp/btcevery hour. - Token due diligence —
contractonbasewith a token address → name, market cap, FDV, categories, links, exchange listings. - Sector rotation —
categoriesordered bymarket_cap_change_24h_desc→ which sectors are hot today. - Backtests & charts —
history(daily price, market cap, volume) orohlccandles per coin. - Exchange risk —
exchangeswith trust score andvolumeAnomalyRatio(reported vs normalized volume).
Input
| Field | Type | Default | Notes |
|---|---|---|---|
mode | string | markets | markets, price, coins, contract, trending, global, categories, exchanges, history, ohlc, search |
ids | array | [] | CoinGecko ids (slug in coingecko.com/en/coins/<id>), e.g. bitcoin, aerodrome-finance; any case. Required for price, coins, history, ohlc. Unknown ids are listed in the status and SUMMARY.missing. |
symbols | array | [] | markets: tickers (btc, eth, any case) instead of ids. Each ticker returns its top-ranked coin (CoinGecko's include_tokens=top); several coins can share a ticker, so use ids for an exact coin. |
vsCurrency | string | usd | One of 63 CoinGecko quote currencies (see Reference). Apify refuses a value off this list (e.g. kzt) before the run starts. |
limit | integer 1–1000 | 50 | Max rows (markets, trending, categories, exchanges, search). coins/contract: max ids or addresses looked up; the rest is named in the status as not looked up. |
fields | array | [] | Keep only these output fields, in this order. id is always kept (first, unless you place it). Names are read in any case or snake_case (market_cap); names the mode does not have are left out and named in the status; a list with none of the mode's fields is refused before the run does any work. |
category | string | — | markets: category id (layer-2, meme-token, artificial-intelligence, base-ecosystem…). Unknown ids fail with suggestions. |
order | string | market_cap_desc | markets server order: market_cap_desc/asc, volume_desc/asc, id_asc/desc. |
priceChangeWindows | array | ["1h","24h","7d"] | Any of 1h, 24h, 7d, 14d, 30d, 200d, 1y (1d, 1w read as 24h, 7d); others stay null. A window that minChange7d/maxChange7d or sortBy needs is added automatically (named in the status). |
includeSparkline | boolean | false | Add sparkline7d (hourly prices). |
minMarketCap / maxMarketCap | integer | — | In vsCurrency. minMarketCap also filters categories. |
minVolume24h | integer | — | |
maxRank | integer | — | Keep ranks 1..N. |
minChange24h / maxChange24h / minChange7d / maxChange7d | number | — | % bounds, decimals allowed (2.5). |
minVolumeToMcap | string (decimal) | — | Turnover, e.g. 0.2. |
search | string | — | Substring on name/symbol/id (markets, categories) or name/id/country (exchanges — the whole exchange list is searched, not only the first limit). |
sortBy / sortDir | string | — / desc | Client-side sort: rank, price, marketCap, fdv, volume24h, change1h…change1y, volumeToMcap, athChangePct. |
includeDescription / includeTickers / includeCommunity / includeDeveloper | boolean | true / false / false / false | coins & contract detail options. |
platform / contractAddresses | string / array | — | contract: asset platform id + token addresses. |
includeNfts / includeCategories | boolean | false | trending extras. |
categoryOrder | string | market_cap_desc | categories: market_cap_desc/asc, name_desc/asc, market_cap_change_24h_desc/asc. |
query | string | — | search: name or symbol. |
days | integer | 30 (history) / 7 (ohlc) | history: 1–365; ohlc: 1, 7, 14, 30, 90, 180, 365 (others round up, named in the status). |
from / to | date | — | history window (YYYY-MM-DD, to inclusive, default today; to is used only with from), last 365 days on the public API. |
dailyOnly | boolean | true | history: one point per UTC day. |
coingeckoApiKey / apiPlan | string / string | — / demo | Optional key; pro switches to the Pro host. |
Inputs a mode does not use (e.g. ids in trending) are named in the status instead of being ignored silently.
Legacy inputs (mode with markets/coins/trending/price, ids, vsCurrency, limit, category) keep their names and meaning.
Reference
Sort keys (sortBy): rank, price, marketCap, fdv, volume24h, change1h, change24h, change7d, change14d, change30d, change200d, change1y, volumeToMcap, athChangePct. Off-list values are refused by Apify before the run.
Quote currencies (vsCurrency, 63): usd, eur, gbp, jpy, cny, krw, inr, rub, try, brl, cad, aud, chf, aed, ars, bdt, bhd, bmd, clp, czk, dkk, gel, hkd, huf, idr, ils, kwd, lkr, mmk, mxn, myr, ngn, nok, nzd, php, pkr, pln, sar, sek, sgd, thb, twd, uah, vef, vnd, zar, xdr, xag (silver), xau (gold), btc, eth, ltc, bch, bnb, eos, xrp, xlm, link, dot, yfi, sol, bits, sats.
Popular category ids: layer-1, layer-2, decentralized-finance-defi, meme-token, artificial-intelligence, ai-agents, real-world-assets-rwa, stablecoins, decentralized-exchange, lending-borrowing, liquid-staking-tokens, gaming, base-ecosystem, solana-ecosystem, ethereum-ecosystem. CoinGecko has 600+ categories: list them with {"mode":"categories"} or see coingecko.com/en/categories.
Popular asset platforms (contract mode): ethereum, base, solana, binance-smart-chain, arbitrum-one, polygon-pos, optimistic-ethereum, avalanche, tron, sui, hyperevm. Full list (460+): api.coingecko.com/api/v3/asset_platforms.
OHLC candle size (set by CoinGecko): 1–2 days → 30 min, 3–30 days → 4 h, 31+ days → 4 days.
Examples
Today's breakouts among the top 500
{ "mode": "markets", "maxRank": 500, "minChange24h": 15, "minVolume24h": 1000000, "sortBy": "change24h", "limit": 25 }
Layer-2 tokens by 30-day performance
{ "mode": "markets", "category": "layer-2", "priceChangeWindows": ["24h", "7d", "30d"], "sortBy": "change30d", "limit": 20 }
Portfolio valuation in EUR
{ "mode": "price", "ids": ["bitcoin", "ethereum", "solana", "aerodrome-finance"], "vsCurrency": "eur" }
Token due diligence by contract (AERO on Base)
{ "mode": "contract", "platform": "base", "contractAddresses": ["0x940181a94A35A4569E4529A3CDfB74e38FD98631"], "includeTickers": true, "includeDeveloper": true }
Hot sectors today + 30-day BTC history
{ "mode": "categories", "categoryOrder": "market_cap_change_24h_desc", "minMarketCap": 100000000, "limit": 15 }{ "mode": "history", "ids": ["bitcoin"], "days": 30 }
Output
Example markets row (trimmed):
{"id": "bitcoin","symbol": "BTC","name": "Bitcoin","rank": 1,"price": 77046,"change1h": 0,"change24h": -0.35,"change7d": -3.4,"marketCap": 1547359786335,"fdv": 1547362405889,"volume24h": 14567569382,"volumeToMcap": 0.0094,"circulatingSupply": 20083000,"athChangePct": -38.9,"currency": "usd","sourceUrl": "https://www.coingecko.com/en/coins/bitcoin","fetchedAt": "2026-09-13T08:16:50.000Z"}
| Mode | Fields |
|---|---|
markets | id, symbol, name, rank, price, change1h, change24h, change7d, change14d, change30d, change200d, change1y, marketCap, marketCapChange24h, fdv, volume24h, volumeToMcap, high24h, low24h, circulatingSupply, totalSupply, maxSupply, ath, athChangePct, athDate, atl, atlDate, image, lastUpdated, (sparkline7d) |
price | id, price, marketCap, volume24h, change24h, lastUpdated |
coins / contract | market fields + change60d, categories, platforms {chain: address}, genesisDate, hashingAlgorithm, countryOrigin, homepage, whitepaper, twitter, telegram, subreddit, github, explorers, sentimentUpPct, sentimentDownPct, watchlistUsers, description, (community, developer, tickers[], exchangeCount), (contractAddress) |
trending | type (coin/nft/category), trendingRank, id, symbol, name, rank, price, change24h, marketCap, volume24h; NFTs: floorPriceNative, floorPriceChange24h; categories: coinsCount, marketCapChange24h, marketCapChange1h |
global | totalMarketCap, totalVolume24h, marketCapChange24h, volumeChange24h, btcDominance, ethDominance, stablecoinDominance, dominance {}, activeCryptocurrencies, markets, defiMarketCap, defiVolume24h, defiDominance, topDefiCoin, updatedAt |
categories | id, name, marketCap, marketCapChange24h, volume24h, top3Coins, description, updatedAt |
exchanges | id, name, trustScore, trustScoreRank, volume24hBtc, volume24hBtcNormalized, volume24hUsd, volumeAnomalyRatio, yearEstablished, country, url, hasTradingIncentive, description |
history | id, coinId, date, timestamp, price, marketCap, volume24h, changePct |
ohlc | id, coinId, timestamp, date, open, high, low, close, changePct |
search | id, type (coin/exchange/category/nft), name, symbol, rank, query |
Every row also has currency (where relevant), sourceUrl and fetchedAt. The dataset schema describes every field (type, meaning, example); views: overview, details, timeseries, sectors, global.
Every run ends with a status message that says how many rows were saved and what was not: ids not found, inputs that failed, inputs not looked up (and why), notes on your input. The SUMMARY record in the key-value store has the same in fields: delivered, missing, failures, notProcessed, notes, warnings, requests, stoppedBy and mode counts (fetched, matched, fallback).
Use it from code / agents
curl -X POST "https://api.apify.com/v2/acts/yadroo~coingecko-markets/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"mode":"price","ids":["bitcoin","ethereum"],"vsCurrency":"eur"}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('yadroo/coingecko-markets').call({ mode: 'markets', maxRank: 500, minChange24h: 15, sortBy: 'change24h' });const { items } = await client.dataset(run.defaultDatasetId).listItems();
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("yadroo/coingecko-markets").call(run_input={"mode": "categories", "categoryOrder": "market_cap_change_24h_desc"})items = client.dataset(run["defaultDatasetId"]).list_items().items
MCP: add https://mcp.apify.com to Claude, Cursor or your own agent and call yadroo/coingecko-markets with the same JSON input.
Pricing
Pay per event: $0.001 per run start + $0.001 per row. Store discounts: Bronze −10 %, Silver −20 %, Gold and above −30 % on the row price; the start event is the same on every plan; platform usage is included. The default run (top 50 coins) costs $0.051; a 4-coin price check $0.005; one global snapshot $0.002; 30 days of history for one coin $0.031. OHLC returns many candles (14 days ≈ 84 rows ≈ $0.085) — use shorter windows if you only need the latest bars.
Rows are charged as they are saved. With a maximum cost per run set, the actor stops at it and ends with "Stopped at your spending limit: N rows delivered" — you pay only for rows you got.
Limits & FAQ
-
Rate limit — without a key CoinGecko allows roughly 5–15 requests/min per IP (shared on Apify's cloud); the actor paces itself at ~9/min. A free Demo key has its own quota of 100 calls/min (the actor paces at ~90/min). HTTP 429 is waited out (Retry-After, else 60 s), within ~2.5 min of waiting per run. Most modes need 1–2 requests;
coins/contract/history/ohlcneed one request per id. -
Run time — one id takes ~6.5 s without a key, so about 120 ids fit in the default 15-minute timeout (several hundred with a Demo key). Rows are saved as each id is read; near the timeout the actor stops starting requests and ends SUCCEEDED with "Stopped before the run timeout: N rows saved", the ids not reached named in the status and
SUMMARY.notProcessed. Raise the timeout, split the list or setcoingeckoApiKeyfor more. -
Errors per id — an unknown id is "not found" and the run goes on; another error fails that id only. A block or rate limit that outlasts the retries, or a refused API key, stops the run early and keeps every row already saved. A run fails only when no row could be read because of errors.
-
"Request blocked" (HTTP 403) — CoinGecko's CDN answers an HTML "Request blocked" page instead of a JSON rate-limit error when the calling IP is over the anonymous quota of an endpoint. Since 29.09.2026 this hits the two batch endpoints
/coins/markets(mode: markets) and/simple/price(mode: price), and on a shared cloud IP they can stay blocked for minutes. What the actor does:- waits the block out (30 s, 45 s, 60 s — ~2.5 min per run) and retries;
- if
idsare set, it then reads those coins one by one from/coins/<id>instead (same row fields exceptsparkline7d, ~6.5 s per coin, first 10 ids) and says so in the log and inSUMMARY.fallback;exchangesgets its BTC reference price the same way; - a top-N screen without
ids(a plainmarketsrun, acategoryor filter run) has no such fallback and fails with that explanation (or, when some pages were read, keeps them and names the rest in the status).
Modes that read other endpoints (
coins,contract,trending,global,categories,exchanges,history,ohlc,search) are not affected. SetcoingeckoApiKey(a free CoinGecko Demo key) to leave the anonymous per-IP quota behind, or run again later. -
Freshness — prices update every 1–2 minutes on CoinGecko's side; every run reads live data.
-
History depth — the public API serves the last 365 days; older
fromdates need a paid key. -
Missing data — unknown ids, delisted coins and unsupported currencies are reported as warnings or clear errors, never silently dropped. Some fields (e.g.
maxSupply, normalized exchange volume) are null when CoinGecko has no value. -
Terms — data comes from CoinGecko's public API; attribute CoinGecko when you publish it. Not financial advice.
-
Roadmap — NFT collection data, derivatives tickers, treasury holdings of public companies.
Made by Yadroo — more crypto data actors: defillama-protocols · crypto-sentiment · crypto-news · dexscreener-tokens · wallet-intel · x402-endpoints