# CoinGecko Coins Market Scraper (`logiover/coingecko-coins-market-scraper`) Actor

Scrape live market data for every coin on CoinGecko — 17,000+ cryptocurrencies in one run. Price, market cap, rank, volume, 1h/24h/7d/30d change, supply, ATH and ATL. Schedule it for a continuously fresh, full-market price feed.

- **URL**: https://apify.com/logiover/coingecko-coins-market-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🦎 CoinGecko Coins Market Scraper

![CoinGecko Coins Market Scraper](https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/GjS6nQ8qauOdq9KGy-actor-B442Flykt3aNIGmxw-VHSuQXRs90-images.jpeg)

**Bulk export of every listed cryptocurrency on [CoinGecko](https://www.coingecko.com) — 17,000+ coins — with a full market snapshot per row: price, market cap, rank, fully-diluted valuation, 24h volume, 24h high/low, 1h / 24h / 7d / 30d price change, circulating / total / max supply, ATH and ATL.** One run produces a flat, spreadsheet-ready dataset of the entire crypto market in any quote currency (USD, EUR, GBP, JPY, BTC, ETH and 50+ more).

Built for **crypto traders, portfolio dashboards, market screeners, research desks, quant teams, newsletter operators, accounting and tax tools, on-chain analytics products and DeFi data pipelines** that need the full CoinGecko market table on a recurring schedule — without writing pagination, retry, currency switching and rate-limit logic by hand.

🟢 No login. No headless browser. No HTML scraping. Pure official CoinGecko REST API.

---

### What this scraper does

CoinGecko is the most trusted aggregator of crypto market data. Their `coins/markets` endpoint returns the canonical price, market cap, volume and supply table for every coin they list — but using it well at scale requires:

- Paginating through 250-coin pages until you've covered all 17,000+ coins
- Choosing between the free public tier, the Demo API and the Pro API (different host names, different headers, different rate limits)
- Backing off correctly on HTTP 429 (CoinGecko's free tier silently throttles)
- Handling occasional `null` / missing fields gracefully
- Flattening the response into spreadsheet-friendly rows
- Streaming output to disk before any run timeout fires

This **CoinGecko market scraper** does all of that for you. Set a quote currency, optionally a minimum market cap and a maximum number of coins — get back the full ranked market table, ready for Excel, your database, or your dashboard. Schedule it hourly for a live ticker; schedule it daily to build a historical market archive for backtesting.

---

### ✨ Key features

| Feature | What it gives you |
|---|---|
| 🌍 **Full market coverage** | Every one of CoinGecko's 17,000+ listed coins, fully paginated — not just the top 250 |
| 💱 **Multi-currency** | USD, EUR, GBP, JPY, CHF, KRW, INR, AUD, CAD, BTC, ETH and any other CoinGecko-supported quote currency |
| 📊 **25 rich fields per coin** | Price, market cap, rank, FDV, 24h volume, 24h high/low, 1h/24h/7d/30d price change, circulating/total/max supply, ATH, ATL, ATH change %, dates |
| 🎯 **Market-cap filter** | Skip dust and abandoned coins by setting a minimum market cap threshold |
| 🔢 **Top-N mode** | Cap at top 100 / 250 / 1000 / 5000 by market-cap rank — or set 0 for the entire market |
| 🔑 **Pro & Demo key support** | Auto-detects whether your CoinGecko API key is Demo (free, 30 calls/min) or Pro (paid, 500+ calls/min) and uses the correct host |
| ⏱️ **Graceful runtime ceiling** | Configurable max-runtime guard exits cleanly with whatever it has collected — no aborted runs |
| ⚡ **Rate-limit aware** | Built-in backoff respects CoinGecko's per-tier rate limits |
| 🗃️ **Flat rows** | 25 columns, no nested JSON, no `data.attributes.market_data` wrangling |
| 💾 **JSON, CSV, Excel, JSONL** | Direct Apify Dataset → any format |
| 🔓 **Public API only** | No login, no Cloudflare bypass, no proxy needed |
| ⏰ **Schedule-ready** | Designed for hourly / daily / weekly recurring runs |

---

### 🎯 Built for these use cases

#### 1. Crypto market screeners and watchlists
Refresh a top-1000 (or top-5000) market table every hour and feed it into your own crypto screener. Filter by market cap, volume, 7d / 30d momentum or ATH drawdown to surface winners and losers.

#### 2. Portfolio dashboards and wallet apps
Power a live portfolio view with prices and market caps for every coin your users might hold. Schedule hourly for retail dashboards; schedule every few minutes for active-trader dashboards (with a Pro API key).

#### 3. Quant research and backtesting datasets
Run daily snapshots to build a longitudinal record of price, market cap, volume, supply and ATH/ATL for the entire crypto universe — exactly the dataset academic and quant researchers need for cross-sectional studies.

#### 4. Crypto tax accounting and compliance
Daily closing-price snapshots in your local fiat (EUR, GBP, JPY, AUD, etc.) for cost-basis and FIFO/LIFO tax calculations across thousands of coins.

#### 5. Newsletter and content creation
Generate weekly "biggest movers", "biggest gainers", "new ATHs", "deepest drawdowns" or "rising market caps" reports from the full market table. One scheduled run = a week's content backbone.

#### 6. Token research and due diligence
Combine `marketCapRank`, `fullyDilutedValuation`, `totalSupply`, `maxSupply`, `ath`, `athChangePercentage` and `atl` to evaluate any coin's market position relative to its peers — at scale.

#### 7. On-chain analytics and indexer pipelines
Enrich your own on-chain indexer (chain-level events) with off-chain market data so every transaction can be valued in USD / EUR. Schedule the scraper to keep your prices table fresh.

#### 8. Crypto data products and APIs
If you sell market data or run a public crypto dashboard, this scraper is the cheapest reliable upstream — refresh on your own cadence, store in your own database, expose your own API.

---

### 📥 Inputs

| Field | Type | Required | Description |
|---|---|---|---|
| `vsCurrency` | string | No | Quote currency for every price-denominated field. Common: `usd`, `eur`, `gbp`, `jpy`, `chf`, `krw`, `aud`, `cad`, `inr`, `btc`, `eth`. Any CoinGecko-supported currency code works. Default `usd`. |
| `minMarketCap` | int | No | Skip coins with market cap below this value in the chosen currency. Use to filter dust / abandoned coins. Default `0` (no filter). |
| `maxCoins` | int | No | Maximum coins to save in market-cap-rank order, highest first. `250` = top 250, `1000` = top 1000, `5000` = top 5000. Set `0` for the entire ~17,000-coin market. Default `1000`. |
| `coingeckoApiKey` | string | No | OPTIONAL but strongly recommended for full-market scrapes. Without a key you are throttled to the free public tier (~10–30 req/min) and a full market scrape may exceed Apify's default run timeout. With a Demo key (free, 30 calls/min, 10k/month) the throughput is similar. With a Pro key (paid, 500+ calls/min) the full market loads in 1–2 minutes. Auto-detected. Stored securely and never logged. |
| `maxRuntimeSeconds` | int | No | Graceful runtime ceiling. The scraper exits cleanly with whatever it has collected before this time, so you get clean partial output instead of an abort. Default `240` (4 minutes — safely under Apify's default 5-minute timeout). |

#### Example inputs

**Top 250 coins in USD (fastest possible run, no key required):**
```json
{
  "vsCurrency": "usd",
  "maxCoins": 250
}
````

**Top 5000 coins above $1M market cap, in EUR:**

```json
{
  "vsCurrency": "eur",
  "minMarketCap": 1000000,
  "maxCoins": 5000
}
```

**Entire crypto market (~17,000 coins) — requires a CoinGecko Pro or Demo key and raised Apify timeout:**

```json
{
  "vsCurrency": "usd",
  "minMarketCap": 0,
  "maxCoins": 0,
  "coingeckoApiKey": "CG-xxxxxxxxxxxxxxxx",
  "maxRuntimeSeconds": 1500
}
```

***

### 📤 Output

Each coin is saved as one structured row in the Apify Dataset. Export to JSON, CSV, Excel (XLSX), HTML or JSONL.

#### Sample row

```json
{
  "id": "bitcoin",
  "symbol": "btc",
  "name": "Bitcoin",
  "currentPrice": 104782.41,
  "marketCap": 2076514399120,
  "marketCapRank": 1,
  "fullyDilutedValuation": 2199876412310,
  "totalVolume": 41203817922,
  "high24h": 105911.02,
  "low24h": 103118.55,
  "priceChange24h": 1284.66,
  "priceChangePercent1h": 0.12,
  "priceChangePercent24h": 1.24,
  "priceChangePercent7d": 4.92,
  "priceChangePercent30d": -2.31,
  "circulatingSupply": 19815112,
  "totalSupply": 19815112,
  "maxSupply": 21000000,
  "ath": 109114.88,
  "athChangePercentage": -3.96,
  "athDate": "2025-01-31T08:41:21.000Z",
  "atl": 67.81,
  "atlDate": "2013-07-06T00:00:00.000Z",
  "lastUpdated": "2026-05-16T12:14:02.000Z",
  "scrapedAt": "2026-05-16T12:14:08.000Z"
}
```

#### Full field reference (25 fields)

| Field | Type | Meaning |
|---|---|---|
| `id` | string | CoinGecko coin id (slug, e.g. `bitcoin`, `ethereum`, `solana`) |
| `symbol` | string | Trading symbol (lowercase, e.g. `btc`, `eth`, `sol`) |
| `name` | string | Display name |
| `currentPrice` | number | Latest price in the chosen quote currency |
| `marketCap` | number | Market capitalization (circulating supply × price) |
| `marketCapRank` | number | Rank by market cap (1 = largest) |
| `fullyDilutedValuation` | number | FDV (max or total supply × price) |
| `totalVolume` | number | 24-hour trading volume across exchanges |
| `high24h` | number | 24-hour high price |
| `low24h` | number | 24-hour low price |
| `priceChange24h` | number | Absolute 24-hour price change (in quote currency) |
| `priceChangePercent1h` | number | Percent change over the last 1 hour |
| `priceChangePercent24h` | number | Percent change over the last 24 hours |
| `priceChangePercent7d` | number | Percent change over the last 7 days |
| `priceChangePercent30d` | number | Percent change over the last 30 days |
| `circulatingSupply` | number | Coins currently in circulation |
| `totalSupply` | number | Total existing coins (incl. locked/staked but excl. burned) |
| `maxSupply` | number | Hard-cap supply, or `null` if uncapped |
| `ath` | number | All-time-high price |
| `athChangePercentage` | number | Percent below (negative) or above ATH right now |
| `athDate` | string | ISO 8601 timestamp of the ATH |
| `atl` | number | All-time-low price |
| `atlDate` | string | ISO 8601 timestamp of the ATL |
| `lastUpdated` | string | CoinGecko's last price refresh timestamp |
| `scrapedAt` | string | ISO 8601 timestamp when this row was saved |

***

### ⚙️ How it works

1. **Reads input** — your quote currency, market-cap filter, top-N cap and optional API key.
2. **Probes the API tier** — if you provided a key, the scraper tries Pro first, then Demo, and locks onto whichever responds. Otherwise it uses the free public host.
3. **Paginates `coins/markets`** — 250 coins per page in market-cap-rank order, descending, until it either hits your `maxCoins` cap or runs out of coins (~17,000).
4. **Applies the market-cap filter** in-stream so you don't pay for dust.
5. **Backs off on HTTP 429** with exponential delays to respect tier rate limits.
6. **Flattens** every response into a 25-field row.
7. **Streams** rows into the Apify Dataset as it goes — no memory bloat, no all-or-nothing risk.
8. **Watches the runtime ceiling** and exits gracefully before any abort, preserving the partial dataset.

This scraper uses ONLY CoinGecko's officially-supported public REST API (`api.coingecko.com` for free / Demo, `pro-api.coingecko.com` for Pro). No HTML scraping, no headless browser, no proxy, no anti-bot bypass. Endpoints are documented at [docs.coingecko.com](https://docs.coingecko.com/reference/introduction).

***

### ⚡ Performance

| Workload | API tier | Time | API calls |
|---|---|---|---|
| Top 250 coins | Free public | ~3 seconds | 1 |
| Top 1000 coins | Free public | ~15 seconds | 4 |
| Top 5000 coins | Free public | ~3–5 minutes | 20 |
| Entire market (~17,000 coins) | Free public | 10–15 minutes (may hit timeout) | ~70 |
| Top 5000 coins | Demo key | ~1–2 minutes | 20 |
| Entire market | Demo key | ~5–8 minutes | ~70 |
| Entire market | Pro key | ~1–2 minutes | ~70 |

For full-market runs, set `maxRuntimeSeconds` higher and raise the Apify run timeout in the run settings.

***

### 💰 Cost model

This actor uses **Pay-Per-Result** pricing — you pay only for the coin rows actually saved (after the `minMarketCap` filter). Coins below your threshold are not billed.

Typical run sizes:

- Top 250 → 250 rows
- Top 1000 → 1000 rows
- Top 5000 above $1M cap → ~3000–5000 rows
- Full market above $100k cap → ~5000–8000 rows
- Full market, no filter → ~17,000 rows

***

### 🔄 Schedule for continuous monitoring

This scraper plays nicely with Apify's scheduler. Common patterns:

- **Every 5 minutes** — top-100 live ticker for an active-trader dashboard (Pro key recommended)
- **Every hour** — top-1000 watchlist refresh
- **Every 4 hours** — top-5000 portfolio refresh
- **Daily at midnight UTC** — full-market snapshot for tax / accounting / quant archives
- **Weekly** — full-market deep snapshot with all filters off, for newsletter and content

Use Apify Webhooks to push fresh data into Postgres, BigQuery, Snowflake, Google Sheets, Slack, Discord, Make.com, n8n, Zapier or your own API.

***

### 🛠️ FAQ

**Do I need a CoinGecko API key?**
No, for top-250 / top-1000 runs the public free tier works. For top-5000 or full-market runs, get a free Demo key at [coingecko.com/en/api/pricing](https://www.coingecko.com/en/api/pricing) — it dramatically speeds up the scrape.

**What's the difference between Demo and Pro keys?**
Demo is free, 30 calls/min, 10k calls/month. Pro is paid, 500+ calls/min, no monthly cap, and dedicated infrastructure. The scraper auto-detects which kind you've given it.

**Will the scraper crash on the free tier if I try to scrape the full market?**
No — it backs off on HTTP 429 and gracefully exits when `maxRuntimeSeconds` is reached. You'll get a clean partial dataset (typically top 3000–5000 coins) even on the free tier.

**Can I get historical OHLCV / candles?**
Not from this scraper — this returns the current full-market snapshot. To build a time series, schedule this scraper at your desired interval (hourly, daily) and aggregate. For per-coin OHLCV bars you'd need a different CoinGecko endpoint.

**How fresh is the data?**
CoinGecko updates market data every 1–5 minutes for top-ranked coins and slightly less frequently for long-tail coins. The `lastUpdated` field tells you exactly when each coin was last refreshed by CoinGecko.

**Why are some fields `null`?**
Long-tail coins occasionally miss supply, volume or ATL data. The scraper preserves `null` rather than fabricating values. Filter them out downstream if your use case requires complete rows.

**Does the actor respect CoinGecko's rate limits?**
Yes — built-in exponential backoff on HTTP 429 keeps you safely within the tier you're using. You can run unattended without getting your IP throttled or banned.

**Can I export to CSV or Excel?**
Yes. Apify Dataset exports support JSON, CSV, Excel (XLSX), HTML and JSONL out of the box.

**Can I integrate via webhook / API?**
Yes. Apify provides REST API access to runs and datasets. Trigger from Zapier, Make.com, n8n, custom code, or any HTTP client. Webhooks fire on run finish so you can pipe results into your data warehouse automatically.

**What about quote currencies other than USD?**
Set `vsCurrency` to any code CoinGecko supports — `eur`, `gbp`, `jpy`, `chf`, `krw`, `inr`, `aud`, `cad`, `try`, `brl`, `mxn`, `zar`, `btc`, `eth` and 50+ more. Every price-denominated field comes back in that currency.

**Can I get token logos / images?**
The default `coins/markets` payload does not include image URLs in this scraper's flat schema. For coin logos use the CoinGecko `coins/{id}` endpoint or a specialized scraper.

**What if CoinGecko adds new coins between runs?**
They'll appear in the next run automatically — pagination is rank-based, so any newly-listed coin gets pulled when its market cap is high enough.

***

### 📚 Related scrapers

Combine this market scraper with other crypto data scrapers in the suite to build a complete pricing and analytics stack:

| Scraper | Purpose |
|---|---|
| **`coingecko-coins-market-scraper`** | **You are here.** Full market table for 17,000+ coins (price, market cap, volume, supply, ATH/ATL). |
| `coingecko-derivatives-scraper` | All CoinGecko derivative tickers (perpetuals, futures, funding, open interest, basis) across every derivatives exchange. |
| `geckoterminal-dex-pools-scraper` | On-chain DEX liquidity pools across 100+ networks (price, FDV, reserve, volume, txns). |
| `defillama-protocols-scraper` | All 7,000+ DeFi protocols with TVL, 1h/1d/7d TVL change, category, chains. |
| `defillama-yields-scraper` | DeFi yield-pool APYs (base + reward), TVL, IL risk, 1d/7d/30d APY trend. |
| `dexscreener-token-pairs-scraper` | Token contract → every live DEX pair across every chain. |
| `dexscreener-search-pairs-scraper` | Free-text symbol/name search → matching DEX pairs. |
| `crypto-exchange-tickers-scraper` | CEX ticker tables across exchanges. |

***

### 🔑 Keyword cloud

**Core:** coingecko api, coingecko scraper, crypto market scraper, crypto price api, cryptocurrency market data, bulk crypto prices, crypto market cap api, crypto market export, coingecko coins markets, full crypto market snapshot.

**Per niche / asset class:** bitcoin price scraper, ethereum price api, solana market data, altcoin scraper, top crypto by market cap, stablecoin price feed, memecoin market data, crypto ATH ATL tracker, crypto supply data, fully diluted valuation api.

**Per use case:** crypto portfolio dashboard data, crypto screener data, crypto tax cost basis, crypto accounting feed, crypto quant dataset, crypto research dataset, crypto newsletter data, crypto historical archive, crypto market backtesting data, crypto watchlist refresh.

**Per audience:** crypto data for traders, crypto data for analysts, crypto market data for developers, crypto data for portfolio apps, crypto data for tax software, crypto data for indexers, crypto data for hedge funds, crypto data for newsletters.

# Actor input Schema

## `vsCurrency` (type: `string`):

Quote currency for all prices. Common values: 'usd', 'eur', 'gbp', 'jpy', 'btc', 'eth'. Any CoinGecko-supported currency code works.

## `minMarketCap` (type: `integer`):

Skip coins with market cap below this value (in the chosen currency). Use to filter dust / abandoned coins. Set 0 to include all.

## `maxCoins` (type: `integer`):

Maximum coins to save (in market-cap-rank order, highest first). 250 = top 250, 1000 = top 1000, 5000 = top 5000. Set 0 for the entire market (~17,000 coins — requires either a CoinGecko Pro/Demo API key OR an increased Apify run timeout, see below).

## `coingeckoApiKey` (type: `string`):

OPTIONAL but strongly recommended for full-market scrapes. Without a key, you are throttled to CoinGecko's free tier (~10-30 requests/minute) — fetching the entire ~17,000-coin market takes 10-15 minutes and may hit Apify's default 5-minute run timeout. With a Demo key (free, get one at https://www.coingecko.com/en/api/pricing — 30 calls/min, 10k/month) the throughput is similar. With a Pro key (paid, 500+ calls/min) the entire market loads in 1-2 minutes. The scraper auto-detects whether the key is Demo or Pro by probing both endpoints. Stored securely; never logged.

## `maxRuntimeSeconds` (type: `integer`):

Hard ceiling on runtime — the scraper will gracefully exit with whatever it has collected before this time. Use this to ensure clean partial output instead of being aborted by Apify's run timeout. Default 240s = 4 minutes (safe under Apify's default 5-minute timeout). If you raised the Apify run timeout to e.g. 30 minutes for a full market scrape, raise this too.

## Actor input object example

```json
{
  "vsCurrency": "usd",
  "minMarketCap": 0,
  "maxCoins": 250,
  "maxRuntimeSeconds": 240
}
```

# Actor output Schema

## `marketCapRank` (type: `string`):

marketCapRank

## `name` (type: `string`):

name

## `symbol` (type: `string`):

symbol

## `currentPrice` (type: `string`):

currentPrice

## `marketCap` (type: `string`):

marketCap

## `totalVolume` (type: `string`):

totalVolume

## `priceChangePercent24h` (type: `string`):

priceChangePercent24h

## `priceChangePercent7d` (type: `string`):

priceChangePercent7d

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "vsCurrency": "usd",
    "minMarketCap": 0,
    "maxCoins": 250,
    "maxRuntimeSeconds": 240
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/coingecko-coins-market-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "vsCurrency": "usd",
    "minMarketCap": 0,
    "maxCoins": 250,
    "maxRuntimeSeconds": 240,
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/coingecko-coins-market-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "vsCurrency": "usd",
  "minMarketCap": 0,
  "maxCoins": 250,
  "maxRuntimeSeconds": 240
}' |
apify call logiover/coingecko-coins-market-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/coingecko-coins-market-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CoinGecko Coins Market Scraper",
        "description": "Scrape live market data for every coin on CoinGecko — 17,000+ cryptocurrencies in one run. Price, market cap, rank, volume, 1h/24h/7d/30d change, supply, ATH and ATL. Schedule it for a continuously fresh, full-market price feed.",
        "version": "0.1",
        "x-build-id": "svFKnV96C9uJHOu9t"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~coingecko-coins-market-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-coingecko-coins-market-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/logiover~coingecko-coins-market-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-coingecko-coins-market-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/logiover~coingecko-coins-market-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-coingecko-coins-market-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "vsCurrency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "Quote currency for all prices. Common values: 'usd', 'eur', 'gbp', 'jpy', 'btc', 'eth'. Any CoinGecko-supported currency code works.",
                        "default": "usd"
                    },
                    "minMarketCap": {
                        "title": "Minimum Market Cap",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Skip coins with market cap below this value (in the chosen currency). Use to filter dust / abandoned coins. Set 0 to include all.",
                        "default": 0
                    },
                    "maxCoins": {
                        "title": "Max Coins",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum coins to save (in market-cap-rank order, highest first). 250 = top 250, 1000 = top 1000, 5000 = top 5000. Set 0 for the entire market (~17,000 coins — requires either a CoinGecko Pro/Demo API key OR an increased Apify run timeout, see below).",
                        "default": 1000
                    },
                    "coingeckoApiKey": {
                        "title": "CoinGecko API Key (Pro or Demo)",
                        "type": "string",
                        "description": "OPTIONAL but strongly recommended for full-market scrapes. Without a key, you are throttled to CoinGecko's free tier (~10-30 requests/minute) — fetching the entire ~17,000-coin market takes 10-15 minutes and may hit Apify's default 5-minute run timeout. With a Demo key (free, get one at https://www.coingecko.com/en/api/pricing — 30 calls/min, 10k/month) the throughput is similar. With a Pro key (paid, 500+ calls/min) the entire market loads in 1-2 minutes. The scraper auto-detects whether the key is Demo or Pro by probing both endpoints. Stored securely; never logged."
                    },
                    "maxRuntimeSeconds": {
                        "title": "Max Runtime Seconds (graceful stop)",
                        "minimum": 30,
                        "type": "integer",
                        "description": "Hard ceiling on runtime — the scraper will gracefully exit with whatever it has collected before this time. Use this to ensure clean partial output instead of being aborted by Apify's run timeout. Default 240s = 4 minutes (safe under Apify's default 5-minute timeout). If you raised the Apify run timeout to e.g. 30 minutes for a full market scrape, raise this too.",
                        "default": 240
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
