Skip to main content

TL;DR

Use /coins/{id}/history for point-in-time price lookups, /coins/{id}/market_chart/range for historical time series, /coins/{id}/ohlc/range for aggregated OHLC benchmarks, and /simple/price for current price snapshots.

Compliance and reporting demand data you can trust - whether you’re building a tax reporting pipeline, calculating fund NAV on a daily basis, generating audit-ready price records, or feeding consistent historical data into your accounting systems. This guide walks you through the CoinGecko API endpoints that matter most for compliance and reporting workflows, and ties them together into a complete workflow at the end:
  • Historical price records with timestamps for tax events and trade reconciliation
  • Daily and hourly OHLC data aggregated into consistent pricing benchmarks
  • Consistent data schemas that slot directly into your reporting pipelines
  • Multi-currency support across 60+ fiat currencies for global compliance
Estimated reading time: 8 minutes
Want to get started even faster?
Copy the contents of this page from compliance-reporting.md and paste it directly into your AI tool for instant context.

Navigate the API faster with AI

Install the CoinGecko SKILL to give your AI coding agent built-in knowledge of every endpoint, parameter, and workflow. Setup takes less than 3 minutes.

Endpoint Overview

EndpointWhat It Gives YouBest For
/coins/{id}/historyPrice, market cap, and volume at a specific datePoint-in-time lookups for tax events and audits
/coins/{id}/market_chart/rangePrice, market cap, and volume time series for a custom date rangeHistorical trend data for reporting pipelines
/coins/../contract/../market_chart/rangeSame as above, queried by contract address instead of coin IDToken-level reporting when you only have contract addresses
/coins/{id}/ohlc/rangeOHLC candles for a custom date range with daily or hourly intervalsAggregated pricing benchmarks for fund accounting
/coins/{id}/ohlcOHLC candles for a predefined time windowQuick OHLC lookups for recent reporting periods
/simple/priceReal-time prices with optional market cap, volume, and last updated timestampDaily NAV snapshots and current valuations
/coins/listComplete list of all supported coins with IDs, symbols, and platform addressesAsset mapping and identifier reconciliation
/simple/supported_vs_currenciesAll supported fiat and crypto quote currenciesValidating currency pairs for multi-currency reports
Replace YOUR_API_KEY in the examples below with your actual CoinGecko API key.
Don’t have one yet? Get your API key here.

Point-in-Time Historical Prices - /coins/{id}/history

🔗 More endpoint details here Returns price, market cap, and 24h volume for a coin at a specific date. The go-to endpoint for tax reporting - when you need the fair market value of a coin on the exact date of a transaction. Example request:
curl -X GET "https://pro-api.coingecko.com/api/v3/coins/bitcoin/history?date=15-04-2024&localization=false" \
  -H "x-cg-pro-api-key: YOUR_API_KEY"
Key parameters:
ParameterWhy It Matters
dateThe target date in dd-mm-yyyy format
localizationSet to false to reduce response size
Response highlights:
{
  "id": "bitcoin",
  "symbol": "btc",
  "name": "Bitcoin",
  "market_data": {
    "current_price": { "usd": 63521.12, "eur": 59876.34, "gbp": 50234.56 },
    "market_cap": { "usd": 1248765432100 },
    "total_volume": { "usd": 32456789012 }
  }
}
The date parameter uses dd-mm-yyyy format (not ISO format).
For example, April 15, 2024 is 15-04-2024.
Prices are returned in all supported fiat currencies simultaneously - no need to make separate calls for USD, EUR, and GBP values in multi-jurisdiction reports.

Historical Price Time Series

/coins/{id}/market_chart/range

🔗 More endpoint details here Returns price, market cap, and volume as time-series arrays for a custom date range. The backbone of any historical reporting pipeline - consistent [timestamp, value] pairs that map directly to database columns. Example request:
curl -X GET "https://pro-api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=2024-01-01&to=2024-12-31&interval=daily" \
  -H "x-cg-pro-api-key: YOUR_API_KEY"
Key parameters:
ParameterWhy It Matters
from / toDefine your reporting window using ISO date strings or UNIX timestamps
vs_currencyThe quote currency for all values (e.g., usd, eur)
intervalUse daily or hourly for consistent data points (paid plans)
Response highlights:
{
  "prices": [
    [1704067200000, 42283.58],
    [1704153600000, 44167.32],
    [1704240000000, 43934.21]
  ],
  "market_caps": [
    [1704067200000, 828456789012],
    [1704153600000, 865234567890],
    [1704240000000, 860123456789]
  ],
  "total_volumes": [
    [1704067200000, 12345678901],
    [1704153600000, 15678901234],
    [1704240000000, 13456789012]
  ]
}
Every array follows the same [unix_timestamp_ms, value] schema - prices, market caps, and volumes all align by timestamp, making it straightforward to join and ingest into your data warehouse.
When no interval is specified, granularity is automatic:
  • 1-2 days: ~5-minute intervals
  • 3-30 days: hourly intervals
  • 31+ days: daily intervals
Paid plan subscribers can override this with interval=daily or interval=hourly.

/coins/{id}/contract/{contract_address}/market_chart/range

🔗 More endpoint details here Same time-series data as above, but queried by contract address instead of CoinGecko coin ID. Useful when your reporting pipeline tracks tokens by their onchain contract address rather than a centralized identifier. Example request:
curl -X GET "https://pro-api.coingecko.com/api/v3/coins/ethereum/contract/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/market_chart/range?vs_currency=usd&from=2024-01-01&to=2024-06-30" \
  -H "x-cg-pro-api-key: YOUR_API_KEY"
Key parameters:
ParameterWhy It Matters
id (path)The asset platform (e.g., ethereum, solana)
contract_address (path)The token’s contract address on that platform
from / toReporting window in ISO date strings or UNIX timestamps
vs_currencyQuote currency
The response schema is identical to /coins/{id}/market_chart/range - same [timestamp, value] arrays for prices, market caps, and volumes.
Use /coins/list?include_platform=true to build a mapping between contract addresses and CoinGecko coin IDs - helpful when your pipeline needs to reconcile both identifier types.

OHLC Data for Pricing Benchmarks

/coins/{id}/ohlc/range

🔗 More endpoint details here Returns OHLC candle data for a custom date range with daily or hourly intervals. Ideal for generating consistent pricing benchmarks - use the closing price as your end-of-day valuation, or the open/close spread for volatility reporting. Example request:
curl -X GET "https://pro-api.coingecko.com/api/v3/coins/ethereum/ohlc/range?vs_currency=usd&from=2024-01-01&to=2024-03-31&interval=daily" \
  -H "x-cg-pro-api-key: YOUR_API_KEY"
Key parameters:
ParameterWhy It Matters
from / toDefine the reporting window
vs_currencyQuote currency for OHLC values
intervalUse daily for end-of-day benchmarks or hourly for intraday reporting
Response highlights:
[
  [1704067200000, 2282.51, 2310.00, 2265.30, 2295.78],
  [1704153600000, 2295.78, 2380.00, 2290.12, 2356.45],
  [1704240000000, 2356.45, 2412.67, 2340.89, 2398.23]
]
Each entry is [timestamp, open, high, low, close] - a consistent five-element array that maps cleanly to any OHLC table schema.

/coins/{id}/ohlc

🔗 More endpoint details here Returns OHLC candles for a predefined time window based on the days parameter. A simpler alternative when you need recent OHLC data without specifying exact date ranges. Example request:
curl -X GET "https://pro-api.coingecko.com/api/v3/coins/bitcoin/ohlc?vs_currency=usd&days=30&interval=daily" \
  -H "x-cg-pro-api-key: YOUR_API_KEY"
Key parameters:
ParameterWhy It Matters
daysLookback window: 1, 7, 14, 30, 90, 180, 365, or max
intervalUse daily or hourly for consistent intervals (paid plans)
Candle granularity is automatic when no interval is specified:
  • 1-2 days: 30-minute candles
  • 3-30 days: 4-hour candles
  • 31+ days: 4-day candles
Paid plan subscribers can override this with interval=daily or interval=hourly.

Current Price Snapshots - /simple/price

🔗 More endpoint details here Returns real-time prices for one or more coins in a single call - with optional market cap, volume, and a last_updated_at UNIX timestamp. Use this for daily NAV calculations, end-of-day snapshots, or any workflow that needs a timestamped current valuation. Example request:
curl -X GET "https://pro-api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd,eur&include_market_cap=true&include_last_updated_at=true" \
  -H "x-cg-pro-api-key: YOUR_API_KEY"
Key parameters:
ParameterWhy It Matters
ids / symbolsBatch multiple coins in a single request for efficient snapshots
vs_currenciesReturn prices in multiple fiat currencies simultaneously
include_market_capAdd market cap for AUM and exposure reporting
include_last_updated_atIncludes a UNIX timestamp - critical for audit trails
precisionControl decimal places for consistent formatting
Response highlights:
{
  "bitcoin": {
    "usd": 67432.51,
    "eur": 63521.12,
    "usd_market_cap": 1326789012345,
    "eur_market_cap": 1249876543210,
    "last_updated_at": 1712345678
  },
  "ethereum": {
    "usd": 3456.78,
    "eur": 3254.67,
    "usd_market_cap": 415678901234,
    "eur_market_cap": 391234567890,
    "last_updated_at": 1712345678
  }
}
The last_updated_at field is your audit timestamp - it confirms exactly when CoinGecko last updated the price, so your records reflect the data’s actual freshness.

Asset Identification and Currency Support

/coins/list

🔗 More endpoint details here Returns the complete list of all supported coins with CoinGecko IDs, names, symbols, and optionally their contract addresses per platform. This is your master lookup table for mapping internal asset identifiers to CoinGecko’s API. Example request:
curl -X GET "https://pro-api.coingecko.com/api/v3/coins/list?include_platform=true" \
  -H "x-cg-pro-api-key: YOUR_API_KEY"
Key parameters:
ParameterWhy It Matters
include_platformInclude contract addresses per platform - essential for reconciling tokens by address
Response highlights:
[
  {
    "id": "bitcoin",
    "symbol": "btc",
    "name": "Bitcoin",
    "platforms": {}
  },
  {
    "id": "usd-coin",
    "symbol": "usdc",
    "name": "USDC",
    "platforms": {
      "ethereum": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "solana": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "polygon-pos": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359"
    }
  }
]

/simple/supported_vs_currencies

🔗 More endpoint details here Returns all supported fiat and crypto quote currencies. Use this to validate that your reporting currency is supported before building queries - avoids silent failures in automated pipelines. Example request:
curl -X GET "https://pro-api.coingecko.com/api/v3/simple/supported_vs_currencies" \
  -H "x-cg-pro-api-key: YOUR_API_KEY"
Response highlights:
[
  "usd", "eur", "gbp", "jpy", "aud", "cad", "chf", "cny",
  "hkd", "sgd", "krw", "inr", "btc", "eth", "bnb"
]
Cache this list and check it at pipeline startup. If your reporting currency isn’t in the list, your price queries will return empty results without an error.

Putting It All Together

Here’s how these endpoints fit into a typical compliance and reporting workflow:
  1. Map your assets - Use /coins/list with include_platform=true to reconcile your internal asset identifiers to CoinGecko coin IDs
  2. Validate currencies - Check /simple/supported_vs_currencies to confirm your reporting currencies are supported
  3. Backfill historical data - Fetch /coins/{id}/market_chart/range with interval=daily to populate your data warehouse with timestamped price series
  4. Generate OHLC benchmarks - Pull /coins/{id}/ohlc/range for daily or hourly open/high/low/close values
  5. Look up tax event prices - Query /coins/{id}/history for the fair market value at the exact date of each taxable transaction
  6. Capture daily snapshots - Schedule /simple/price with include_last_updated_at=true to record timestamped NAV values

Integrate with CoinGecko MCP Server

Connect your AI agent directly to CoinGecko’s API using our MCP server - enabling real-time crypto data queries from tools like Claude Desktop, Cursor, and more.

Have feedback or need help? Reach out to eason.lim@coingecko[dot]com