# Crypto Prices API - CoinMarketCap Market Cap, Listings, OHLCV (`nabeelbaghoor/crypto-prices-market-cap-api`) Actor

Crypto prices API for CoinMarketCap: top cryptocurrency listings with live price, market cap, volume and % change, coin quotes, ID map, metadata, global market cap and BTC dominance, exchange rankings and historical OHLCV. Free keyless mode, or bring your own API key.

- **URL**: https://apify.com/nabeelbaghoor/crypto-prices-market-cap-api.md
- **Developed by:** [Nabeel Hassan](https://apify.com/nabeelbaghoor) (community)
- **Categories:** Developer tools, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 crypto record returned (your api key)s

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

## Crypto Prices API - CoinMarketCap Market Cap, Listings, OHLCV

Export live cryptocurrency prices, market cap rankings, global market metrics and historical OHLCV from the CoinMarketCap API into an Apify dataset, free with no key or with your own CoinMarketCap API key.

Works with the CoinMarketCap API. The actor turns a mode and a few filters into clean, deduplicated rows you can download as JSON, CSV or Excel, schedule every few minutes, or feed into trading dashboards, portfolio trackers, spreadsheets, notebooks and data warehouses.

### What it does

- **Cryptocurrency listings (free)**: every active cryptocurrency ranked by market cap, volume, price, percent change, supply or date added, with latest price, market cap, fully diluted market cap, 24h, 7d and 30d volume, 1h to 90d percent changes, circulating, total and max supply, CMC rank, tags and platform. Filter by price, market cap, 24h volume and 24h percent change ranges, by coins or tokens, and by the DeFi or file sharing tag.
- **Latest quotes (free)**: the same market data for the coins you name, by symbol, slug or CoinMarketCap ID, priced in USD, EUR, BTC or any other convert currency.
- **Cryptocurrency ID map (free)**: CoinMarketCap ID, symbol, slug, rank, first and last historical data dates and token platform for every active, inactive or untracked cryptocurrency.
- **Metadata (free)**: logo, description, category, website, explorer, whitepaper and social links, tags, date added and contract addresses per coin, also looked up by contract address.
- **Global market metrics (free)**: total crypto market cap and volume, BTC and ETH dominance, altcoin, DeFi, stablecoin and derivatives volume and market cap, active cryptocurrencies, exchanges and market pairs.
- **Exchange ID map (free)**: CoinMarketCap exchange IDs and slugs, filterable to exchanges that list a given coin.
- **Exchange listings (API key)**: centralized and decentralized exchanges ranked by 24h volume or adjusted volume, by category (spot, derivatives, DEX, lending).
- **Historical OHLCV (API key, Startup plan or higher)**: daily or hourly open, high, low, close, volume and market cap candles, sampled daily, weekly, monthly or every few hours or days.
- **Pay only for keyed results**: rows from the free Keyless Public API are never charged, and a request the provider has nothing for becomes a free row that says why.

### Free keyless mode or your own API key

Without a key, the actor reads the CoinMarketCap Keyless Public API, which serves listings, latest quotes, both ID maps, metadata and global metrics with no sign-up. Keyless calls share a small anonymous rate pool per IP address, take one convert currency, and are paced at 6 requests per minute. These rows are not charged.

With a key, every mode is open as far as your plan reaches, the rate limits are your own, and you can price in up to 120 currencies at once. Get a key at pro.coinmarketcap.com: a free Basic key needs no credit card; historical OHLCV needs the Startup plan or higher, and the plan page lists which endpoints each tier includes. Paste the key into the API key field or set the `DATA_API_KEY` environment secret. The key is sent only in the `X-CMC_PRO_API_KEY` header and never logged. A key-only mode run without a key ends cleanly with a message before any request is sent.

### Input

| Field | Used by | What it does |
| --- | --- | --- |
| `mode` | all | `listingsLatest` (default), `quotesLatest`, `cryptoMap`, `cryptoInfo`, `globalMetrics`, `exchangeListings`, `exchangeMap` or `ohlcvHistorical` |
| `coins` | quotes, metadata, OHLCV | `BTC`, `ETH`, or slugs, or CoinMarketCap IDs; up to 1,000 |
| `coinIdType` | quotes, metadata, OHLCV | `symbol` (default), `slug` or `id` |
| `contractAddress` | metadata | One token contract address |
| `convert` | listings, quotes, global metrics, exchange listings, OHLCV | `USD` (default), or `USD,EUR,BTC` with a key |
| `sort`, `sortDir` | listings (and sort direction for exchange listings) | `market_cap` (default), `volume_24h`, `percent_change_24h` and the other documented sorts |
| `cryptocurrencyType` | listings | `all`, `coins` or `tokens` |
| `tag` | listings | `all`, `defi` or `filesharing` |
| `priceMin` ... `percentChange24hMax` | listings | Price, market cap, 24h volume and 24h percent change ranges |
| `listingStatus` | ID maps | `active`, `inactive` or `untracked` |
| `cryptoMapSort` | cryptocurrency ID map | `cmc_rank` or `id` |
| `exchangeSort`, `exchangeCategory` | exchange listings | `volume_24h`, `volume_24h_adjusted`, `name`; `spot`, `derivatives`, `dex`, `lending` |
| `exchangeMapSort`, `exchangeSlugs`, `cryptoId` | exchange ID map | Sort, slugs such as `binance`, or exchanges listing a coin ID |
| `timePeriod`, `interval` | OHLCV | `daily` or `hourly`; sampling from `1h` to `365d` |
| `timeStart`, `timeEnd`, `count` | OHLCV | Window (start exclusive, end inclusive) or a number of periods back |
| `maxResults` | all | Row cap for the whole run (default 100) |
| `requestsPerMinute` | all | Optional pacing |
| `apiKey` | all | Optional. Your CoinMarketCap API key, stored as a secret |

### Example output

A listings row (`listingsLatest`, keyless). Every field CoinMarketCap returns is kept; the common columns are filled from the first convert currency.

```json
{
  "mode": "listingsLatest",
  "modeLabel": "Cryptocurrency listings",
  "recordType": "listing",
  "identifier": "by market_cap desc",
  "found": true,
  "access": "keyless",
  "id": 1,
  "name": "Bitcoin",
  "symbol": "BTC",
  "slug": "bitcoin",
  "rank": 1,
  "currency": "USD",
  "price": 82979.56,
  "marketCap": 1667580814461.26,
  "volume24h": 13135852650.91,
  "percentChange24h": 0.68,
  "open": null,
  "high": null,
  "low": null,
  "close": null,
  "date": "2026-10-10T20:57:00.000Z",
  "retrievedAt": "2026-10-10T20:57:31.402Z",
  "note": null,
  "tags": ["mineable", "pow", "sha-256"],
  "infinite_supply": false,
  "circulating_supply": 20096284,
  "total_supply": 20096284,
  "max_supply": 21000000,
  "date_added": "2010-07-13T00:00:00.000Z",
  "num_market_pairs": 12759,
  "cmc_rank": 1,
  "last_updated": "2026-10-10T20:57:00.000Z",
  "platform": null,
  "quote": [
    {
      "id": 2781,
      "symbol": "USD",
      "price": 82979.56,
      "volume_24h": 13135852650.91,
      "volume_change_24h": -46.25,
      "cex_volume_24h": 13119408239.29,
      "dex_volume_24h": 16444411.62,
      "percent_change_1h": -0.03,
      "percent_change_24h": 0.68,
      "percent_change_7d": -2.08,
      "percent_change_30d": 7.41,
      "percent_change_60d": 30.32,
      "percent_change_90d": 29.34,
      "market_cap": 1667580814461.26,
      "market_cap_dominance": 59.42,
      "fully_diluted_market_cap": 1742570770978.68,
      "last_updated": "2026-10-10T20:57:00.000Z"
    }
  ]
}
```

An OHLCV row (`ohlcvHistorical`) carries `time_open`, `time_close`, `time_high`, `time_low` and the `quote` map, with `open`, `high`, `low`, `close`, `volume24h` (the candle volume) and `marketCap` filled from the first currency and `date` set to the candle open time.

### FAQ

#### Do I need a CoinMarketCap API key?

No, not for listings, latest quotes, the cryptocurrency and exchange ID maps, metadata or global metrics: the actor reads the CoinMarketCap Keyless Public API and those rows are free. Exchange listings and historical OHLCV need your own key, and OHLCV needs the Startup plan or higher.

#### How do I get the top 100 cryptocurrencies by market cap?

Run the default `listingsLatest` mode with an empty input. It returns the top 100 by CoinMarketCap market cap rank with price, market cap, volume and percent changes in USD. Raise `maxResults` for more (up to 5,000 per page, paged automatically).

#### How do I get prices for specific coins?

Use `quotesLatest` with `coins` set to symbols such as BTC and ETH. A symbol returns every coin that uses it (many tokens reuse BTC or ETH), so set `coinIdType` to `slug` (bitcoin) or `id` (1) to get exactly one coin each. The ID map mode lists every slug and ID.

#### Can I get historical crypto prices and candles?

Yes, with `ohlcvHistorical` and a CoinMarketCap key on the Startup plan or higher. Pick daily or hourly candles and a window, or a count of periods back. The plan sets how far back intraday data goes (1 month on Startup, 3 on Growth, 12 on Professional); daily data goes back to 2010.

#### Why did my keyless run stop with a rate limit message?

The keyless API shares a small anonymous limit per IP address, and the actor already paces keyless runs at 6 requests per minute and retries. If the limit is still used up, the run ends cleanly with no charge. Add a free CoinMarketCap API key for your own limit.

#### What does a run cost?

Keyless rows are free. With your key, each returned record is one `crypto-record` event at 0.005 USD, platform usage included. Requests that return nothing are never charged, and your CoinMarketCap plan credits are used by your key as usual.

#### Can I convert prices to EUR, GBP or BTC?

Yes. Set `convert` to a fiat or crypto symbol. Keyless runs take one currency; keyed runs take up to 120 (3 for OHLCV), and each extra currency uses an extra CoinMarketCap credit. Every currency stays in the `quote` field; the first fills the price columns.

### Keyword map

crypto prices API, CoinMarketCap API, cryptocurrency market cap, top 100 crypto, crypto listings, bitcoin price, ethereum price, crypto quotes, coin metadata, BTC dominance, global crypto market cap, crypto exchange rankings, exchange volume, historical OHLCV, crypto candles, CoinMarketCap ID map.

### Licensing note

The data belongs to CoinMarketCap and is governed by its API terms and your plan's agreement. CoinMarketCap's commercial terms allow storing and caching data to run your own product but restrict redistributing or reselling the data itself, and its terms ask for attribution to CoinMarketCap. Use the rows within your own plan's licence, do not republish them as a standalone data feed, and credit CoinMarketCap where you display them. Keyless rows are passed through without charge for the same reason. This actor is an independent tool and is not affiliated with or endorsed by CoinMarketCap.

# Actor input Schema

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

Free without a key (Keyless Public API, rows not charged): listings, latest quotes, cryptocurrency ID map, metadata, global metrics and exchange ID map. Need your own CoinMarketCap API key: exchange listings, and historical OHLCV (Startup plan or higher).

## `coins` (type: `array`):

Latest quotes, metadata and historical OHLCV. One coin per line, read as the coin ID type below: symbols (BTC, ETH, SOL), slugs (bitcoin, ethereum) or CoinMarketCap IDs (1, 1027). A symbol returns every coin that uses it; use slugs or IDs for exactly one. Up to 1,000 per run, sent 100 per request.

## `coinIdType` (type: `string`):

How the coins list is read.

## `contractAddress` (type: `string`):

Metadata only. One token contract address, such as 0xc40af1e4fecfa05ce6bab79dcd8b373d2e436c4e. Read in addition to any coins.

## `convert` (type: `string`):

Listings, latest quotes, global metrics, exchange listings and OHLCV. Fiat or crypto symbols to price in, comma separated: USD, EUR, GBP, BTC. Keyless runs take one; keys take up to 120 (OHLCV up to 3), each extra one costing a provider credit. The first one fills the price columns; every currency stays in the quote field.

## `sort` (type: `string`):

Listings only. The field to rank cryptocurrencies by. Market cap uses CoinMarketCap's rank methodology; strict market cap is price times circulating supply.

## `sortDir` (type: `string`):

Listings and exchange listings.

## `cryptocurrencyType` (type: `string`):

Listings only. Coins (own blockchain), tokens (on another platform) or both.

## `tag` (type: `string`):

Listings only. The listings endpoint accepts these three tag values only.

## `priceMin` (type: `number`):

Listings only. Lowest USD price to include.

## `priceMax` (type: `number`):

Listings only. Highest USD price to include.

## `marketCapMin` (type: `number`):

Listings only. Lowest market cap to include.

## `marketCapMax` (type: `number`):

Listings only. Highest market cap to include.

## `volume24hMin` (type: `number`):

Listings only. Lowest 24 hour USD volume to include.

## `volume24hMax` (type: `number`):

Listings only. Highest 24 hour USD volume to include.

## `percentChange24hMin` (type: `number`):

Listings only. Lowest 24 hour percent change to include, for example -5.

## `percentChange24hMax` (type: `number`):

Listings only. Highest 24 hour percent change to include, for example 20.

## `listingStatus` (type: `string`):

Cryptocurrency and exchange ID maps. Active (default), inactive (no longer traded) or untracked (listed but not yet meeting the methodology).

## `cryptoMapSort` (type: `string`):

Cryptocurrency ID map only.

## `exchangeSort` (type: `string`):

Exchange listings only.

## `exchangeCategory` (type: `string`):

Exchange listings only.

## `exchangeMapSort` (type: `string`):

Exchange ID map only.

## `exchangeSlugs` (type: `array`):

Exchange ID map only. Optional exchange slugs, one per line: binance, coinbase-exchange, kraken. When set, the other exchange map filters are ignored, as the provider documents.

## `cryptoId` (type: `integer`):

Exchange ID map only. Optional CoinMarketCap cryptocurrency ID; returns only exchanges listing it (1 is Bitcoin).

## `timePeriod` (type: `string`):

Historical OHLCV only. Daily or hourly candles.

## `interval` (type: `string`):

Historical OHLCV only. How often the time period is sampled: daily returns every day, weekly the first day of each week, 2d every other day, and so on.

## `timeStart` (type: `string`):

Historical OHLCV only. Exclusive start, as YYYY-MM-DD (recommended for daily), a UTC time or a Unix timestamp. To get the candle for 2026-01-31, start at 2026-01-30.

## `timeEnd` (type: `string`):

Historical OHLCV only. Inclusive end. Left empty, it is now.

## `count` (type: `integer`):

Historical OHLCV only. Number of periods back from the end when no start is given (provider default 10, ceiling 10,000). It includes the current unfinished period, so ask for one more than you need.

## `maxResults` (type: `integer`):

The most rows this run returns (and, with your key, charges for). Also the page size for paged modes, up to the documented 5,000 for listings.

## `requestsPerMinute` (type: `integer`):

Optional pacing. Left empty, keyless runs send 6 per minute (the shared anonymous pool trips after a few quick calls) and keyed runs 20. Plans allow from 30 per minute up; the actor also waits and retries on HTTP 429.

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

Optional. Your own CoinMarketCap API key from pro.coinmarketcap.com. Left empty, the actor reads the free Keyless Public API. Sent only in the documented X-CMC_PRO_API_KEY header and never logged. You can instead set the DATA_API_KEY environment secret.

## Actor input object example

```json
{
  "mode": "listingsLatest",
  "coins": [
    "BTC",
    "ETH"
  ],
  "coinIdType": "symbol",
  "convert": "USD",
  "sort": "market_cap",
  "sortDir": "desc",
  "cryptocurrencyType": "all",
  "tag": "all",
  "listingStatus": "active",
  "cryptoMapSort": "cmc_rank",
  "exchangeSort": "volume_24h",
  "exchangeCategory": "all",
  "exchangeMapSort": "id",
  "timePeriod": "daily",
  "interval": "daily",
  "maxResults": 100
}
```

# Actor output Schema

## `records` (type: `string`):

One row per listing, quote, map entry, metadata record, global metrics snapshot, exchange or OHLCV candle.

# 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 = {
    "coins": [
        "BTC",
        "ETH"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nabeelbaghoor/crypto-prices-market-cap-api").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 = { "coins": [
        "BTC",
        "ETH",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("nabeelbaghoor/crypto-prices-market-cap-api").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 '{
  "coins": [
    "BTC",
    "ETH"
  ]
}' |
apify call nabeelbaghoor/crypto-prices-market-cap-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nabeelbaghoor/crypto-prices-market-cap-api"
        }
    }
}
```

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/QJ2rzonCnELpkWZfy/builds/rPtJmDH8jyYpJSU3G/openapi.json
