# CoinGecko Markets — Crypto Data API (`cynix_dev/coingecko-markets`) Actor

Live cryptocurrency market data from CoinGecko as clean typed JSON: price, market cap, volume, 24h change, ATH/ATL, circulating/total/max supply per coin. Top markets by cap, trending coins, or a curated list by id. No API key required (optional Pro key raises limits).

- **URL**: https://apify.com/cynix\_dev/coingecko-markets.md
- **Developed by:** [Cynix Dev](https://apify.com/cynix_dev) (community)
- **Categories:** Developer tools, Agents, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.25 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## CoinGecko Markets — Crypto Data API

Live **cryptocurrency market data** from CoinGecko as clean typed JSON — price, market cap, 24h volume and change, ATH/ATL, and circulating, total and max supply. No API key needed; add a Pro key only if you want higher rate limits.

### What it does

Two modes cover the common jobs:

- **`markets`** — the top coins ranked by market cap (or volume, or id), paginated, with the full market snapshot for each one.
- **`coins`** — what's trending right now, or a curated watchlist you specify by CoinGecko id (`bitcoin`, `ethereum`, `solana`, …).

Every record is quoted in the currency you choose via `vsCurrency`, so you can pull the same market in USD, EUR, JPY or even BTC terms without post-processing.

### Features

- **No API key required** — uses CoinGecko's free public endpoints; `apiKey` is optional for Pro rate limits.
- **Two modes** — ranked market table, or trending/curated coin lists.
- **Any quote currency** — `usd`, `eur`, `gbp`, `jpy`, `btc` and the rest of CoinGecko's supported list.
- **Full market snapshot per coin** — 26 fields including ATH/ATL with their dates and percentage distances.
- **Supply figures** — circulating, total and max supply, for dilution and tokenomics analysis.
- **Pagination control** — `perPage` (1–250) and `page` let you walk the whole ranked list.
- **Sort control** — by market cap or volume, ascending or descending.

### What people use it for

- Portfolio dashboards — refresh a watchlist on a schedule and push it to Sheets or a database.
- Research and backtesting — snapshot the market daily to build your own historical series.
- Screeners — pull the top 250 and filter locally on volume, supply or drawdown from ATH.
- Agent tooling — give an LLM agent a reliable, structured crypto price source.
- Alerting — schedule runs and trigger a webhook when a coin's 24h change crosses a threshold.

### Modes in practice

Top 10 coins by market cap in euros:

```json
{ "mode": "markets", "vsCurrency": "eur", "perPage": 10, "page": 1, "order": "market_cap_desc" }
```

A specific watchlist:

```json
{ "mode": "coins", "coinIds": ["bitcoin", "ethereum", "solana"], "vsCurrency": "usd" }
```

Leave `coinIds` empty in `coins` mode to get **trending** coins instead.

#### Finding a coin id

CoinGecko ids are slugs, not tickers: `bitcoin` not `BTC`, `ethereum` not `ETH`, `matic-network` rather than `MATIC`. The id is visible in the coin's CoinGecko URL, and `markets` mode returns the `id` of every coin it lists — a quick way to look ids up in bulk.

### Input

All fields are optional — the defaults return the top 100 coins by market cap in USD. `coinIds` is used when you want a specific watchlist.

| Field | Type | Default | What it does |
| --- | --- | --- | --- |
| `mode` | string | `markets` | markets = top coins by market cap with full market data; coins = trending coins now, or a curated list by id. Options: `markets`, `coins`. |
| `vsCurrency` | string | `usd` | Quote currency, e.g. usd, eur, btc, jpy. |
| `order` | string | `market_cap_desc` | Sorting for markets mode (markets mode only). Options: `market_cap_desc`, `market_cap_asc`, `volume_asc`, `volume_desc`, `id_asc`, `gecko_desc`. |
| `perPage` | integer | `100` | Number of coins (1-250) for markets mode. Range 1–250. |
| `page` | integer | `1` | Page number for markets mode. |
| `coinIds` | array | `[]` | Comma/line-separated CoinGecko ids, e.g. bitcoin, ethereum, solana. Used when Mode = Specific coins / trending and this is non-empty. Otherwise returns trending. |
| `apiKey` | string | — | Optional. Raises rate limits if you have a Pro key. Leave empty to use the free public endpoint. |

#### Input example

```json
{
  "mode": "markets",
  "vsCurrency": "usd",
  "perPage": 5,
  "page": 1,
  "order": "market_cap_desc"
}
```

### Output

One record per coin. Numeric fields arrive as values you can aggregate directly; `last_updated` is CoinGecko's own timestamp for the quote.

Every dataset record contains: `id`, `symbol`, `name`, `image`, `current_price`, `market_cap`, `market_cap_rank`, `fully_diluted_valuation`, `total_volume`, `high_24h`, `low_24h`, `price_change_24h`, `price_change_percentage_24h`, `market_cap_change_24h`, `market_cap_change_percentage_24h`, `circulating_supply`, `total_supply`, `max_supply`, `ath`, `ath_change_percentage`, `ath_date`, `atl`, `atl_change_percentage`, `atl_date`, `last_updated`, `currency`.

#### Output example

A real record from a run of this Actor:

```json
{
  "id": "bitcoin",
  "symbol": "btc",
  "name": "Bitcoin",
  "image": "https://coin-images.coingecko.com/coins/images/1/large/bitcoin.png?1696501400",
  "current_price": "64232",
  "market_cap": "1289287417319",
  "market_cap_rank": "1",
  "fully_diluted_valuation": "1289287417319",
  "total_volume": "21371250454",
  "high_24h": "64516",
  "low_24h": "63246",
  "price_change_24h": "969.53",
  "price_change_percentage_24h": "0.9",
  "market_cap_change_24h": "19521493501",
  "market_cap_change_percentage_24h": "1.53741",
  "circulating_supply": "20071518.0",
  "total_supply": "20071518.0",
  "max_supply": "21000000.0",
  "ath": "126080",
  "ath_change_percentage": "-49.05462",
  "ath_date": "2025-10-06T10:57:42.000Z",
  "atl": "67.81"
}
```

Export the dataset as JSON, CSV, Excel, XML or JSONL from the Console, or pull it programmatically through the Apify API and any of the official clients.

### How to use it

1. Click **Try for free** (or **Start** if you already have an Apify account).
2. Fill in the input fields described above — the defaults already produce a working run.
3. Press **Start** and watch the log; results stream into the dataset as they are found.
4. When the run finishes, open the **Output/Storage** tab and export as JSON, CSV or Excel.

Runs can be scheduled (hourly, daily, weekly) and wired into Slack, Google Sheets, Zapier, Make, webhooks or your own backend through Apify integrations. Everything the Console does is also available over the [Apify API](https://docs.apify.com/api/v2).

### Pricing

This Actor is billed on Apify's **pay-per-event** model: a small charge when a run starts, plus a charge for each result written to the dataset. You only pay for records you actually receive — a run that finds nothing costs only the start event. Current rates are always shown on the **Pricing** tab of this page, and the run log prints your usage as it goes.

Free-plan credits from Apify cover a large amount of light usage, so you can evaluate the Actor before committing to anything.

### FAQ

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

No. The free public API is used by default. If you already hold a CoinGecko Pro key, put it in `apiKey` to get higher rate limits and more headroom on large paginated pulls.

#### How fresh is the data?

It is CoinGecko's live market data; each record carries `last_updated` so you can see exactly how fresh the quote is. For near-real-time monitoring, schedule frequent runs.

#### Can I get historical OHLC candles?

Not in this Actor — it returns the current market snapshot. The common pattern is to schedule it and accumulate your own history, which also gives you a series you fully control.

#### What's the difference between `total_supply` and `max_supply`?

`circulating_supply` is what's liquid today, `total_supply` is what exists including locked tokens, and `max_supply` is the protocol cap (null when there isn't one). Together they show future dilution.

#### Why is `fully_diluted_valuation` sometimes empty?

It requires a known max supply. Coins with uncapped or undefined supply have no meaningful FDV, so the field comes back empty.

### Other Actors by cynix\_dev

| Actor | What it does |
| --- | --- |
| [arXiv Papers Extractor](https://apify.com/cynix_dev/arxiv-papers) | Search arXiv and extract papers as clean typed records: title, abstract, authors, categories, DOI, and direct PDF links. |
| [FX Rates & History](https://apify.com/cynix_dev/fx-rates-history) | Latest and historical foreign exchange rates (ECB reference data) as clean, typed dataset records. |
| [USGS Earthquakes — GeoJSON Extractor](https://apify.com/cynix_dev/usgs-earthquakes) | Pull live and historical earthquakes from the USGS FDSN event service as clean typed JSON: magnitude, place, time, lat/lon/depth, … |
| [Launch Library 2 — Rocket Launch Tracker](https://apify.com/cynix_dev/launch-library-launches) | Upcoming, previous, and specific rocket launches from The Space Devs' Launch Library 2 API. |
| [Open Food Facts Extractor](https://apify.com/cynix_dev/open-food-facts) | Search and extract food-product data from Open Food Facts as clean typed JSON: name, brand, ingredients, allergens, nutrition … |
| [FX Rates & History](https://apify.com/cynix_dev/fx-rates-history) | Latest and historical foreign exchange rates (ECB reference data) as clean, typed dataset records. |
| [SEC EDGAR Filings Extractor](https://apify.com/cynix_dev/sec-edgar-filings) | Search and extract SEC EDGAR filings: full-text search across all filings or company filing histories by CIK. |

### Legal and responsible use

This Actor collects only publicly available information. You are responsible for how you use the data, including compliance with the target site's Terms of Service, robots directives, copyright, and data protection law such as GDPR and CCPA. Do not use it to gather personal data without a lawful basis.

### Support and feedback

Found a bug, hit a site change, or need an extra field? Open a ticket on the **Issues** tab of this Actor — issues are read and fixed. Feature requests and custom-scraper enquiries are welcome through the same channel.

# Actor input Schema

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

markets = top coins by market cap with full market data; coins = trending coins now, or a curated list by id.

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

Quote currency, e.g. usd, eur, btc, jpy.

## `order` (type: `string`):

Sorting for markets mode (markets mode only).

## `perPage` (type: `integer`):

Number of coins (1-250) for markets mode.

## `page` (type: `integer`):

Page number for markets mode.

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

Comma/line-separated CoinGecko ids, e.g. bitcoin, ethereum, solana. Used when Mode = Specific coins / trending and this is non-empty. Otherwise returns trending.

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

Optional. Raises rate limits if you have a Pro key. Leave empty to use the free public endpoint.

## Actor input object example

```json
{
  "mode": "markets",
  "vsCurrency": "usd",
  "order": "market_cap_desc",
  "perPage": 100,
  "page": 1,
  "coinIds": []
}
```

# Actor output Schema

## `dataset` (type: `string`):

One record per coin: id, symbol, name, price, market cap, volume, 24h change, ATH/ATL, supply and last update.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("cynix_dev/coingecko-markets").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("cynix_dev/coingecko-markets").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 '{}' |
apify call cynix_dev/coingecko-markets --silent --output-dataset

```

## MCP server setup

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

```

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/ggV2fo24GP144PDQm/builds/6G5G7ZvOsiElSEG8t/openapi.json
