# CoinGecko Real-Time Data: Crypto Market Scraper (`b2b_leads/coingecko-real-time-data-scraper`) Actor

Live CoinGecko crypto market intelligence: top coins by market cap, instant coin search, full coin details, trending coins, and exchange rankings. Checkbox features — enable only what you need. Structured JSON streamed to your dataset in real time.

- **URL**: https://apify.com/b2b_leads/coingecko-real-time-data-scraper.md
- **Developed by:** [Emmanuel](https://apify.com/b2b_leads) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## CoinGecko Real-Time Data

Live CoinGecko crypto market intelligence: top coins by market cap, instant coin search, full coin profiles, trending coins, and exchange rankings — structured JSON streamed to your dataset in real time.

> **Free trial:** free Apify plans get a **2-result sample per run**. Upgrade to a paid Apify plan for unlimited exports. See *Delivery & free tier* below.

### Who is it for

Built for crypto researchers, trading desks, fintech builders, SEO/content teams, and AI agents that need fresh market context.

**Use cases**

- Token screeners and watchlists — top coins by market cap, volume, and 24h moves
- Research briefs — full coin profiles with description, categories, homepage, supply, and sentiment
- Trend radar — what is trending on CoinGecko right now
- Venue research — ranked exchanges with trust score, country, and 24h volume
- Price/market-cap inputs for bots, sheets, and dashboards via webhooks
- AI-agent market context — ask questions over live rows through the Apify MCP

### Features

| Feature | What you get | Input |
|---|---|---|
| 🪙 Top Coins (default ON) | Ranked market list: price, market cap, volume, 24h change, ATH/ATL, supply. Optional per-coin enrichment keeps ONE row (`detailsFetched=true`). | `vsCurrency`, `topCoinsLimit` (default 10), `topCoinsOrder`, `topCoinsCategory`, `topCoinsFetchFullDetails` |
| 🔍 Coin Search | Coins matching a name/symbol query with rank and artwork. Optional enrichment adds market price + profile. | `searchQueries`, `coinSearchMaxResults` (default 10), `coinSearchFetchFullDetails` |
| 📄 Coin Details | Full profile for exact ids/URLs: description, market data, links, supply, sentiment. | `coinIds`, `coinUrls` |
| 📈 Trending | Ranked trending coins with price and score. | — (just enable) |
| 🏦 Exchanges | Ranked exchanges: trust score, country, year established, 24h volume. | `exchangesLimit` (default 10) |
| 🔗 Scrape By URL | Any CoinGecko coin or exchange URL → structured row with auto-detected page type. | `scrapeUrls` |

Every discovered item is always saved — enrichment never drops rows and never creates duplicates.

### Input reference

- `enableTopCoins` (boolean, default `true`) — market ranking. Demo: 10 coins in USD.
- `vsCurrency` (select, default `usd`) — `usd | eur | gbp | jpy | aud | cad | btc | eth`.
- `topCoinsLimit` (1–250, default `10`), `topCoinsOrder` (default `market_cap_desc`), `topCoinsCategory` (optional, e.g. `layer-1`), `topCoinsFetchFullDetails` (boolean, default `false`).
- `enableCoinSearch` (boolean, default `false`), `searchQueries` (e.g. `["bitcoin","ethereum","solana"]`), `coinSearchMaxResults` (1–25, default `10`), `coinSearchFetchFullDetails` (default `false`).
- `enableCoinDetails` (default `false`), `coinIds` (e.g. `["bitcoin","ethereum"]`), `coinUrls` (e.g. `["https://www.coingecko.com/en/coins/bitcoin"]`).
- `enableTrending` (default `false`) — no extra fields.
- `enableExchanges` (default `false`), `exchangesLimit` (1–100, default `10`).
- `enableScrapeByUrl` (default `false`), `scrapeUrls` (e.g. `["https://www.coingecko.com/en/coins/bitcoin"]`).
- `webhookUrl` (optional), `webhookFormat` (`json | slack`, default `json`).
- `proxyConfiguration` (optional) — the public market feed usually works with the default connection.

Example — top 10 in USD (default, just click Start):

```json
{ "enableTopCoins": true, "vsCurrency": "usd", "topCoinsLimit": 10 }
```

Example — search + enrich:

```json
{
  "enableTopCoins": false,
  "enableCoinSearch": true,
  "searchQueries": ["bitcoin", "solana"],
  "coinSearchMaxResults": 10,
  "coinSearchFetchFullDetails": true
}
```

Example — full profiles + trending + exchanges:

```json
{
  "enableTopCoins": false,
  "enableCoinDetails": true,
  "coinIds": ["bitcoin", "ethereum"],
  "enableTrending": true,
  "enableExchanges": true,
  "exchangesLimit": 10
}
```

### Output reference

One row per coin/exchange. Key fields:

- Common: `featureType`, `scrapedAt`, `url`
- Market rows (`top_coins`): `coin_id`, `symbol`, `name`, `image`, `current_price`, `market_cap`, `market_cap_rank`, `total_volume`, `high_24h`, `low_24h`, `price_change_24h`, `price_change_percentage_24h`, `circulating_supply`, `total_supply`, `max_supply`, `ath`, `ath_date`, `atl`, `atl_date`, `last_updated`, `vs_currency`, `position`, `detailsFetched` (+ `description`, `categories`, `homepage`, `genesis_date`, sentiment when enriched)
- Search rows (`coin_search`): `coin_id`, `symbol`, `name`, `market_cap_rank`, `image`, `current_price`, `market_cap`, `position`, `detailsFetched`
- Detail rows (`coin_details`): full profile incl. `description`, `categories`, `homepage`, `genesis_date`, `hashing_algorithm`, market fields, supply, sentiment
- Trending (`trending`): `coin_id`, `symbol`, `name`, `market_cap_rank`, `image`, `current_price`, `price_change_percentage_24h`, `score`, `position`
- Exchanges (`exchanges`): `exchange_id`, `exchange_name`, `country`, `year_established`, `description`, `image`, `trust_score`, `trust_score_rank`, `trade_volume_24h_btc`, `position`
- URL rows (`scrape_by_url`): `pageType` (`coin | exchange | unknown`), `coin_id`/`exchange_id`, `name`, `symbol`, `current_price`, `market_cap`, `trust_score`

Filter views by `featureType`. The `OUTPUT` object also carries `paywall` (`detected`, `isPaying`, `pricingTier`, `limited`, `blocked`, `freeTierMaxItems`) and `totalPushed`.

### Delivery & free tier

- **Streaming:** each record is pushed to the dataset as soon as it is collected — RAM stays light even on large runs.
- **Webhooks:** set `webhookUrl` (+ `webhookFormat`) to also POST every row in real time.
  - `json` — the full record object.
  - `slack` — a Slack-friendly message (`:chart_with_upwards_trend: *Bitcoin* … <url|Open on CoinGecko>`).
  - Delivery is fire-and-forget: failures never stop the run or dataset writes.
- **Free tier:** free Apify plans are capped at **2 results per run** (`FREE_TIER_MODE=limit`, `FREE_TIER_MAX_ITEMS=2`, PPE event `result`). Paying plans get full output. Local runs (no platform vars) are uncapped.
- **Spend cap:** the run respects your max-cost limit — when hit, it stops cleanly, writes the summary, and exits with a clear message.

### MCP / AI-agent usage

Pair with the Apify MCP server: point your agent at this Actor, run it with a small limit, then ask questions over the dataset.

Example question: *"Run CoinGecko Real-Time Data for the top 10 coins in USD and tell me which gained the most in 24h."*

### FAQ

- **Do I need a proxy?** Usually no for small runs — the default connection works. Residential is recommended at scale.
- **How fresh is the data?** Every run collects live market data; each row carries `scrapedAt` and `last_updated`.
- **Why only 2 results on a free plan?** That is the free-trial sample. Upgrade to a paid Apify plan for unlimited rows.
- **Will enrichment duplicate rows?** No — enriched market/search rows stay ONE row with `detailsFetched=true`.
- **Which currency?** Pick `vsCurrency` (USD, EUR, GBP, JPY, AUD, CAD, BTC, ETH) once per run.

# Actor input Schema

## `enableTopCoins` (type: `boolean`):

Live market ranking — top coins by market cap with price, volume, 24h change, ATH/ATL, and supply. On by default so you can click Start and get results in seconds.

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

Fiat currency for prices and market caps.

## `topCoinsLimit` (type: `integer`):

Maximum coins to return from the market ranking (1–250). Default 10 — perfect for instant demo runs.

## `topCoinsOrder` (type: `string`):

How to order the market ranking.

## `topCoinsCategory` (type: `string`):

Limit the ranking to a CoinGecko category id, e.g. layer-1, decentralized-finance-defi, meme-token. Leave empty for the full market.

## `topCoinsFetchFullDetails` (type: `boolean`):

When on, each top-coin row stays ONE row (featureType top_coins, detailsFetched=true) but is enriched with description, categories, homepage, genesis date, and sentiment. Adds a little extra time per coin. When off, you get fast market cards with price, market cap, volume, and 24h change. Every discovered coin is always saved — never filtered out.

## `enableCoinSearch` (type: `boolean`):

Find coins by name or symbol — e.g. bitcoin, ethereum, solana.

## `searchQueries` (type: `array`):

One or more coin names or symbols, e.g. "bitcoin", "ethereum", "solana". Required when Coin Search is on.

## `coinSearchMaxResults` (type: `integer`):

Maximum coins to return for each query (1–25).

## `coinSearchFetchFullDetails` (type: `boolean`):

When on, each search row stays ONE row (featureType coin_search, detailsFetched=true) but is enriched with market price, market cap, description, and categories. Adds a little extra time per coin.

## `enableCoinDetails` (type: `boolean`):

Full record for specific coins by id or CoinGecko URL — description, market data, links, supply, sentiment.

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

CoinGecko coin ids, e.g. bitcoin, ethereum, solana.

## `coinUrls` (type: `array`):

Full CoinGecko coin URLs (https://www.coingecko.com/en/coins/...).

## `enableTrending` (type: `boolean`):

Currently trending coins on CoinGecko — what the market is watching right now.

## `enableExchanges` (type: `boolean`):

Ranked crypto exchanges with trust score, country, year established, and 24h volume.

## `exchangesLimit` (type: `integer`):

Maximum exchanges to return (1–100).

## `enableScrapeByUrl` (type: `boolean`):

Paste any CoinGecko coin or exchange URL.

## `scrapeUrls` (type: `array`):

Any CoinGecko coin or exchange URL.

## `webhookUrl` (type: `string`):

Optional. Every record is always saved to the run dataset — this webhook is an ADDITIONAL real-time push. Each new row is also POSTed to this URL (Slack, Discord, Zapier, Make, n8n, custom pricing bot).

## `webhookFormat` (type: `string`):

json = full record object; slack = Slack-friendly message payload.

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

Optional connection settings. The public market feed usually works with the default connection.

## Actor input object example

```json
{
  "enableTopCoins": true,
  "vsCurrency": "usd",
  "topCoinsLimit": 10,
  "topCoinsOrder": "market_cap_desc",
  "topCoinsCategory": "",
  "topCoinsFetchFullDetails": false,
  "enableCoinSearch": false,
  "searchQueries": [
    "bitcoin",
    "ethereum",
    "solana"
  ],
  "coinSearchMaxResults": 10,
  "coinSearchFetchFullDetails": false,
  "enableCoinDetails": false,
  "coinIds": [],
  "coinUrls": [],
  "enableTrending": false,
  "enableExchanges": false,
  "exchangesLimit": 10,
  "enableScrapeByUrl": false,
  "scrapeUrls": [
    "https://www.coingecko.com/en/coins/bitcoin"
  ],
  "webhookUrl": "",
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `allResults` (type: `string`):

Full dataset for this run (every featureType).

## `overview` (type: `string`):

Core fields across features, including detailsFetched for market rows.

## `top_coins` (type: `string`):

featureType=top_coins only. One coin = one row; full details are merged when enrichment is enabled.

## `coin_search` (type: `string`):

featureType=coin_search only.

## `coin_details` (type: `string`):

featureType=coin_details — only from the Coin Details feature (specific ids/URLs), not from market enrichment.

## `trending` (type: `string`):

No description

## `exchanges` (type: `string`):

No description

## `scrape_by_url` (type: `string`):

No description

# 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 = {
    "enableTopCoins": true,
    "vsCurrency": "usd",
    "topCoinsLimit": 10,
    "topCoinsOrder": "market_cap_desc",
    "topCoinsFetchFullDetails": false,
    "enableCoinSearch": false,
    "searchQueries": [
        "bitcoin",
        "ethereum",
        "solana"
    ],
    "coinSearchMaxResults": 10,
    "coinSearchFetchFullDetails": false,
    "enableCoinDetails": false,
    "coinIds": [],
    "coinUrls": [],
    "enableTrending": false,
    "enableExchanges": false,
    "exchangesLimit": 10,
    "enableScrapeByUrl": false,
    "scrapeUrls": [
        "https://www.coingecko.com/en/coins/bitcoin"
    ],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("b2b_leads/coingecko-real-time-data-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 = {
    "enableTopCoins": True,
    "vsCurrency": "usd",
    "topCoinsLimit": 10,
    "topCoinsOrder": "market_cap_desc",
    "topCoinsFetchFullDetails": False,
    "enableCoinSearch": False,
    "searchQueries": [
        "bitcoin",
        "ethereum",
        "solana",
    ],
    "coinSearchMaxResults": 10,
    "coinSearchFetchFullDetails": False,
    "enableCoinDetails": False,
    "coinIds": [],
    "coinUrls": [],
    "enableTrending": False,
    "enableExchanges": False,
    "exchangesLimit": 10,
    "enableScrapeByUrl": False,
    "scrapeUrls": ["https://www.coingecko.com/en/coins/bitcoin"],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("b2b_leads/coingecko-real-time-data-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 '{
  "enableTopCoins": true,
  "vsCurrency": "usd",
  "topCoinsLimit": 10,
  "topCoinsOrder": "market_cap_desc",
  "topCoinsFetchFullDetails": false,
  "enableCoinSearch": false,
  "searchQueries": [
    "bitcoin",
    "ethereum",
    "solana"
  ],
  "coinSearchMaxResults": 10,
  "coinSearchFetchFullDetails": false,
  "enableCoinDetails": false,
  "coinIds": [],
  "coinUrls": [],
  "enableTrending": false,
  "enableExchanges": false,
  "exchangesLimit": 10,
  "enableScrapeByUrl": false,
  "scrapeUrls": [
    "https://www.coingecko.com/en/coins/bitcoin"
  ],
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call b2b_leads/coingecko-real-time-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,b2b_leads/coingecko-real-time-data-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/e6JSw23DxHIR241UY/builds/ayS7OJcjTRLBbKlpz/openapi.json
