# CoinGecko API Alternative — Crypto Scraper (`devilscrapes/coingecko-crypto-scraper`) Actor

Pull crypto market data from CoinGecko — price, 24h change, market cap, volume, supply, ATH/ATL, exchanges — one clean typed row per coin, exported to JSON or CSV on a schedule. We handle the rate limits, retries, and proxy routing so the data lands. Built on the CoinGecko v3 API.

- **URL**: https://apify.com/devilscrapes/coingecko-crypto-scraper.md
- **Developed by:** [DevilScrapes](https://apify.com/devilscrapes) (community)
- **Categories:** Automation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

<div align="center">
  <img src="https://apify.com/.actor/icon.svg" width="160" alt="Devil Scrapes mark" />

## CoinGecko API Alternative — Crypto Scraper

**$2.20 / 1 000 results**  ·  pay only for results  ·  no credit card to try

*We do the dirty work so your dataset stays clean.* 😈

Escape the 10 req/min demo-tier ceiling without paying $129/mo for CoinGecko Pro. Pass a list of coin IDs, get one clean typed row per coin — price, 24h/7d/30d change, market cap, volume, circulating supply, ATH/ATL with dates, sentiment, and exchange listing count. We absorb the rate limits, retries, fingerprint rotation, and proxy routing so your pipeline never stalls.

</div>

***

### 🎯 What this scrapes

CoinGecko covers 14 000+ crypto assets with deep market data. This Actor takes a list of coin IDs (e.g. `bitcoin`, `ethereum`, `solana`), absorbs upstream rate limits and transient errors with backoff, and writes one row per coin — current price in USD plus your chosen secondary currency, 24h/7d/30d price change percentages, market cap, 24h trading volume, circulating supply, ATH/ATL with ISO-8601 timestamps, community sentiment, and exchange listing count. Run it once for a snapshot or on a schedule for a time-series — we keep the connection honest so your dataset stays clean.

### 🔥 What we handle for you

- 🛡️ **Browser fingerprint rotation** — `curl-cffi` impersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python.
- 🌐 **Residential proxy rotation** via Apify Proxy — fresh session and exit IP on every block.
- 🔁 **Retries with exponential backoff** on `408 / 429 / 5xx` — up to 5 attempts per page, `Retry-After` honoured.
- 🧱 **Rate-limit-aware pacing** — when the target pushes back, we slow down instead of getting banned.
- 🧊 **Clean, typed dataset rows** — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 **Pay-Per-Event pricing** — you only pay for results that hit your dataset. No data, no charge.

### 💡 Use cases

- **Crypto portfolio tracker API** — schedule a daily run with your watchlist, pipe to a spreadsheet or your own dashboard.
- **Price-change alerting** — diff successive runs, fire a Discord / Slack webhook when 24h change crosses a threshold.
- **Algorithmic trading research** — pull 50 coins by market cap rank, feed into a backtest pipeline without hitting the free-tier ceiling.
- **Tax reporting snapshots** — daily price records stored for capital-gains math at year-end.
- **No-code automation (n8n / Make / Zapier)** — connect via the Apify integration node; build a daily watchlist alert to Discord without writing a line of code.

### ⚙️ How to use it

1. Click **Try for free** at the top of the page.
2. Fill in the input form — most fields have sensible defaults.
3. Click **Start**. Output streams into the run's dataset.
4. Export from **Storage → Dataset** as JSON, CSV, or Excel — or fetch via the Apify API.

For no-code workflows: install the [Apify node for n8n](https://n8n.io/integrations/apify/) or the [Apify module for Make](https://www.make.com/en/integrations/apify), connect your Apify token, and point it at `DevilScrapes/coingecko-crypto-scraper`.

### 📥 Input

| Field | Type | Required | Default | Notes |
|---|---|:--:|---|---|
| `coinIds` | `array` | **yes** | `["bitcoin", "ethereum", "solana"]` | List of CoinGecko coin IDs (lowercase slugs). Find them at coingecko.com — the slug in the URL. |
| `vsCurrency` | `string` | no | `"eur"` | ISO currency code (lowercase) alongside USD — e.g. `eur`, `gbp`, `jpy`. USD is always included. |
| `includeDeveloperData` | `boolean` | no | `false` | Add GitHub forks/stars/commits where the coin has a linked repo. |
| `apiKey` | `string` | no | `—` | Optional — lifts the demo-tier limit from 10 req/min to your plan's quota. |
| `concurrency` | `integer` | no | `2` | Parallel coin lookups. Keep low on the demo tier (10 req/min ceiling). |
| `proxyConfiguration` | `object` | no | `{"useApifyProxy": false}` | CoinGecko rate-limits aggressive scrapers — Apify Proxy with rotating sessions helps when the ceiling is tight. |

#### Example input

```json
{
  "coinIds": [
    "bitcoin",
    "ethereum",
    "solana"
  ],
  "vsCurrency": "eur",
  "concurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

### 📤 Output

Every row is one dataset item.

| Field | Type | Notes |
|---|---|---|
| `coin_id` | `string` | CoinGecko coin slug. |
| `symbol` | `string` | Ticker symbol. |
| `name` | `string` | Coin display name. |
| `image_url` | `string \| null` | Coin logo (large) URL. |
| `current_price_usd` | `number \| null` | Current price in USD. |
| `current_price_vs` | `number \| null` | Current price in the secondary `vsCurrency`. |
| `vs_currency` | `string` | Secondary currency code used. |
| `price_change_24h_pct` | `number \| null` | 24h price change percent. |
| `price_change_7d_pct` | `number \| null` | 7d price change percent. |
| `price_change_30d_pct` | `number \| null` | 30d price change percent. |
| `market_cap_usd` | `number \| null` | Market cap in USD. |
| `market_cap_rank` | `integer \| null` | Market cap rank across all coins. |
| `total_volume_usd` | `number \| null` | 24h trading volume in USD. |
| `circulating_supply` | `number \| null` | Circulating supply. |
| `total_supply` | `number \| null` | Total supply. |
| `max_supply` | `number \| null` | Maximum supply (null for unlimited). |
| `ath_usd` | `number \| null` | All-time high in USD. |
| `ath_date` | `string \| null` | ATH timestamp (ISO-8601). |
| `atl_usd` | `number \| null` | All-time low in USD. |
| `atl_date` | `string \| null` | ATL timestamp (ISO-8601). |
| `sentiment_up_pct` | `number \| null` | Community sentiment % bullish. |
| `exchanges_count` | `integer \| null` | Number of exchanges listing this coin. |
| `github_stars` | `integer \| null` | GitHub stars (when `includeDeveloperData=true`). |
| `github_forks` | `integer \| null` | GitHub forks. |
| `coingecko_url` | `string` | Canonical CoinGecko URL. |
| `scraped_at` | `string` | ISO-8601 timestamp when this row was recorded. |

#### Example output

```json
{
  "coin_id": "bitcoin",
  "symbol": "btc",
  "name": "Bitcoin",
  "image_url": "https://assets.coingecko.com/coins/images/1/large/bitcoin.png",
  "current_price_usd": 71250.32,
  "current_price_vs": 65120.10,
  "vs_currency": "eur",
  "price_change_24h_pct": 2.41,
  "price_change_7d_pct": -1.05,
  "price_change_30d_pct": 14.22,
  "market_cap_usd": 1408000000000,
  "market_cap_rank": 1,
  "total_volume_usd": 28400000000,
  "circulating_supply": 19700000,
  "ath_usd": 73750.07,
  "ath_date": "2024-03-14T07:10:36.635Z",
  "sentiment_up_pct": 84.0,
  "exchanges_count": 1042,
  "coingecko_url": "https://www.coingecko.com/en/coins/bitcoin",
  "scraped_at": "2026-06-01T10:15:00Z"
}
```

### 💰 Pricing

Pay-Per-Event — you pay only when these events fire:

| Event | USD | What it is |
|---|---:|---|
| `actor-start` | $0.20 | One-off warm-up charge per run |
| `result` | $0.002 | Per dataset item written |

Example: 1 000 results at the rates above ≈ **$2.00**. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit, good for 2 500 coin lookups before you owe anything.

### 🚧 Limitations

- **Demo-tier rate limit**: CoinGecko's free tier caps you at roughly 10 req/min from a single IP. Attach a CoinGecko Pro API key to lift it; otherwise keep `concurrency` at 2 or lower.
- **No historical OHLC**: this Actor returns current and recent-change data only. Historical candlestick data is a separate use case.
- **Some fields null for low-coverage coins**: lesser-known assets may have incomplete market data on CoinGecko's side.
- **Scheduling is your job**: the Actor runs once per trigger. For continuous time-series, wire it to an [Apify Schedule](https://docs.apify.com/platform/schedules).

### ❓ FAQ

**Is this a CoinGecko API alternative?**

Yes — that's exactly the use case. The CoinGecko free tier is rate-limited to ~10 req/min, and a Pro subscription runs $129/mo. This Actor wraps the same public v3 endpoint, handles rate-limit back-off for you, and charges $2.00 per 1 000 results. For a hobby project scraping 100 coins a day, that's $0.07/day, with no monthly Pro subscription.

**Is this real-time?**

CoinGecko's free API updates every ~60 seconds. For sub-second feeds, use an exchange WebSocket directly.

**What about historical OHLC data?**

Out of scope for this Actor — it returns current snapshots and recent price-change percentages only. Historical candlestick data requires the CoinGecko Pro `/coins/{id}/ohlc` endpoint.

**I'm hitting 429 errors — what should I do?**

The CoinGecko rate limit is the binding constraint on the free tier. Lower `concurrency` to 1, or attach a Pro API key in the `apiKey` field. We already handle transient 429s with exponential backoff and session rotation — persistent 429s mean the upstream quota is genuinely exhausted.

**Can I use this with n8n, Make, or Zapier?**

Yes. Connect via the Apify integration node in your automation platform, paste your Apify API token, select `DevilScrapes/coingecko-crypto-scraper`, and pass the coin IDs as input. The run output lands in an Apify dataset you can map to any downstream action.

**Can I filter coins by category?**

Pass the full ID list directly. Category enumeration (e.g. "pull all DeFi coins") is on the roadmap.

**Do I need a CoinGecko account?**

No account needed for the demo tier. The `apiKey` field is optional and only required if you want to lift the rate limit with a Pro plan.

### 💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's **Issues** tab in Apify Console — we ship fixes weekly and we read every report.

***

<div align="center">

Built by **[Devil Scrapes](https://apify.com/DevilScrapes)** 😈 — a small fleet of
opinionated public-data Actors. Honest pricing, real engineering, zero fine print.

</div>

# Actor input Schema

## `coinIds` (type: `array`):

List of CoinGecko coin IDs (lowercase slugs). Find them at coingecko.com — the slug in the URL. Examples: <code>bitcoin</code>, <code>ethereum</code>, <code>solana</code>.

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

ISO currency code (lowercase) to add alongside USD — e.g. <code>eur</code>, <code>gbp</code>, <code>jpy</code>. USD is always included.

## `includeDeveloperData` (type: `boolean`):

Add GitHub forks/stars/commits where the coin has a linked repo.

## `apiKey` (type: `string`):

Optional — lifts the demo-tier limit from 10 req/min to your plan's quota.

## `concurrency` (type: `integer`):

Parallel coin lookups. Keep low on the demo tier (10 req/min ceiling).

## `proxyConfiguration` (type: `object`):

Optional. CoinGecko sometimes rate-limits aggressive scrapers — Apify Proxy with rotating sessions helps in that case.

## Actor input object example

```json
{
  "coinIds": [
    "bitcoin",
    "ethereum",
    "solana"
  ],
  "vsCurrency": "eur",
  "includeDeveloperData": false,
  "concurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

All dataset items as JSON.

## `datasetItemsCsv` (type: `string`):

Same data exported to CSV.

## `datasetView` (type: `string`):

Open the run dataset in the Console.

# 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 = {
    "coinIds": [
        "bitcoin",
        "ethereum",
        "solana"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("devilscrapes/coingecko-crypto-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 = {
    "coinIds": [
        "bitcoin",
        "ethereum",
        "solana",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

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

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

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

```

## CLI example

```bash
echo '{
  "coinIds": [
    "bitcoin",
    "ethereum",
    "solana"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call devilscrapes/coingecko-crypto-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,devilscrapes/coingecko-crypto-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/jtdmy89X7gChtxxza/builds/3Xoti17w1KHTBRYiI/openapi.json
