# CoinCodex Crypto Scraper - Prices, Market Cap & History (`ninhothedev/coincodex-scraper`) Actor

$0.5/1K 🔥 CoinCodex crypto scraper! Prices, market cap, ATH/ATL & historical data for 10000+ coins. No key. JSON, CSV, Excel or API in seconds. Power portfolio & market dashboards ⚡

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

## Pricing

from $0.50 / 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?

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

## CoinCodex Crypto Scraper - Prices, Market Cap, ATH & Historical Data

Scrape **live cryptocurrency market data and historical price series from CoinCodex** for 10,000+ coins - no API key, no login, no rate-limit headaches. Feed it a list of ticker symbols (`BTC`, `ETH`, `SOL`, ...) and get back clean, flat JSON/CSV rows with price, market cap, 24h volume, all-time high, all-time low, supply and multi-timeframe percentage changes.

Perfect for crypto dashboards, portfolio trackers, market research and trading bots.

### What this actor does

| Mode | What you get | One row = |
|------|--------------|-----------|
| `coins` | Current market snapshot per symbol: price, market cap, 24h high/low, volume, ATH, ATL, supply, 1h/24h/7d/30d/1y change | one coin |
| `history` | Historical time series per symbol between two dates: price, volume and market cap per sample | one price sample |

### Features

- **No API key required** - CoinCodex's public endpoints are used directly.
- **10,000+ coins** - every ticker listed on CoinCodex, from Bitcoin to micro-cap altcoins.
- **All-time high & all-time low** in USD, which most free crypto APIs paywall.
- **Historical price series** with a configurable sample resolution and date range.
- **Flat rows** - one item per coin or per data point, ready for CSV, Excel, Google Sheets, BigQuery or a database.
- **Cheap and fast** - roughly **$0.5 per 1,000 items**, plus Apify platform usage.
- **Robust fetching** - Chrome TLS impersonation via `curl_cffi` with an automatic plain-HTTP fallback and retries.

### Input

```json
{
  "mode": "coins",
  "symbols": ["BTC", "ETH", "SOL"],
  "maxItems": 500
}
```

Historical example:

```json
{
  "mode": "history",
  "symbols": ["BTC", "ETH"],
  "startDate": "2024-01-01",
  "endDate": "2024-03-01",
  "samples": 100,
  "maxItems": 2000
}
```

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `mode` | select | `coins` | `coins` for the current market snapshot, `history` for a price series |
| `symbols` | array | `["BTC","ETH","SOL"]` | CoinCodex ticker symbols, case-insensitive |
| `startDate` | string | 30 days ago | First day of the historical range, `YYYY-MM-DD` |
| `endDate` | string | today | Last day of the historical range, `YYYY-MM-DD` |
| `samples` | integer | `100` | Requested number of points in the historical series |
| `maxItems` | integer | `500` | Hard cap on dataset rows (max 5,000) |

### Output

`coins` mode:

```json
{
  "type": "coin",
  "symbol": "BTC",
  "name": "Bitcoin",
  "slug": "bitcoin",
  "rank": 1,
  "price_usd": 63287.97,
  "high_24h": 65408.05,
  "low_24h": 63127.95,
  "market_cap_usd": 1269702620258.82,
  "volume_24h_usd": 39061938176.0,
  "change_1h_pct": -0.3348,
  "change_24h_pct": -2.7327,
  "change_7d_pct": -4.4763,
  "change_30d_pct": 5.0371,
  "change_1y_pct": -46.6802,
  "ath_usd": 126025.0,
  "atl_usd": 0.05,
  "supply": 20062306.0,
  "total_supply": 21000000.0,
  "website": "https://bitcoin.org/",
  "platform": "BTC",
  "trading_since": "2009-01-03T00:00:00+00:00",
  "url": "https://coincodex.com/crypto/bitcoin",
  "source": "coincodex",
  "scraped_at": "2026-07-28T13:34:37.450590+00:00"
}
```

`history` mode:

```json
{
  "type": "history",
  "symbol": "BTC",
  "date": "2024-01-01T00:00:00+00:00",
  "price_usd": 42717.55,
  "volume": 24528243615.92,
  "market_cap": 832155774483.88,
  "source": "coincodex",
  "scraped_at": "2026-07-28T13:34:38.687374+00:00"
}
```

Every field is nullable - if CoinCodex does not report a value for a coin, the field is `null` rather than missing, so your downstream schema stays stable.

### Use cases

- **Crypto dashboards** - power a live price board or TV wall with prices, market caps and 24h moves.
- **Portfolio tracking** - value a portfolio daily and compute unrealised P\&L against ATH and cost basis.
- **Market research** - pull historical series for hundreds of coins to backtest, correlate or chart drawdowns from all-time highs.
- **Trading bots & alerts** - schedule the actor every few minutes and trigger alerts when a coin crosses a threshold or approaches its ATH.

### Pricing

Around **$0.5 per 1,000 items** plus standard Apify platform usage. A 500-coin snapshot costs a few cents.

### Notes & limitations

- Market cap in `coins` mode is derived as circulating supply x last price, which reproduces CoinCodex's own reported market cap exactly.
- CoinCodex may return slightly more history points than the `samples` value you request; `maxItems` is always respected.
- Unknown or delisted tickers are skipped with a warning instead of failing the run.
- This actor only reads publicly available data from CoinCodex. Nothing is scraped behind a login.

### Related actors

- [Coinlore Scraper](https://apify.com/ninhothedev/coinlore-scraper)
- [CoinGecko Crypto Scraper](https://apify.com/ninhothedev/coingecko-crypto-scraper)
- [Blockchair Scraper](https://apify.com/ninhothedev/blockchair-scraper)
- [OKX Scraper](https://apify.com/ninhothedev/okx-scraper)

# Actor input Schema

## `mode` (type: `string`):

What to scrape. Use 'coins' for the current market snapshot of each symbol (price, market cap, ATH, ATL, 24h change). Use 'history' for a historical price/volume/market-cap series per symbol between startDate and endDate.

## `symbols` (type: `array`):

CoinCodex ticker symbols to scrape, for example BTC, ETH, SOL, XRP or DOGE. Case-insensitive; duplicates are removed automatically. Unknown symbols are skipped with a warning.

## `startDate` (type: `string`):

First day of the historical range in YYYY-MM-DD format, for example 2024-01-01. Only used when mode is 'history'. Defaults to 30 days ago when left empty.

## `endDate` (type: `string`):

Last day of the historical range in YYYY-MM-DD format, for example 2024-03-01. Only used when mode is 'history'. Defaults to today when left empty.

## `samples` (type: `integer`):

Requested number of data points in the historical series per coin. Higher values give a finer time resolution; CoinCodex may return slightly more points than requested.

## `maxItems` (type: `integer`):

Hard limit on how many dataset rows the run may produce. One row is one coin (coins mode) or one price sample (history mode). Keeps runs and costs predictable.

## Actor input object example

```json
{
  "mode": "coins",
  "symbols": [
    "BTC",
    "ETH",
    "SOL"
  ],
  "startDate": "2024-01-01",
  "endDate": "2024-03-01",
  "samples": 100,
  "maxItems": 500
}
```

# Actor output Schema

## `results` (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 = {
    "symbols": [
        "BTC",
        "ETH",
        "SOL"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ninhothedev/coincodex-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 = { "symbols": [
        "BTC",
        "ETH",
        "SOL",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ninhothedev/coincodex-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 '{
  "symbols": [
    "BTC",
    "ETH",
    "SOL"
  ]
}' |
apify call ninhothedev/coincodex-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ninhothedev/coincodex-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/i5PsxHv86snrPw3Ll/builds/tqp4kptoaD2PxSha1/openapi.json
