> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coingecko.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compliance / Reporting

> Build reliable compliance and reporting pipelines with timestamped historical prices, daily and hourly OHLC data, and consistent data schemas from CoinGecko API.

<Note>
  ### TL;DR

  Use [/coins/\{id}/history](/reference/coins-id-history) for point-in-time price lookups, [/coins/\{id}/market\_chart/range](/reference/coins-id-market-chart-range) for historical time series, [/coins/\{id}/ohlc/range](/reference/coins-id-ohlc-range) for aggregated OHLC benchmarks, and [/simple/price](/reference/simple-price) for current price snapshots.
</Note>

<br />

**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](#putting-it-all-together) 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**

<Tip>
  **Want to get started even faster?**<br />Copy the contents of this page from [compliance-reporting.md](https://docs.coingecko.com/docs/compliance-reporting.md) and paste it directly into your AI tool for instant context.
</Tip>

<Card title="Navigate the API faster with AI" icon="sparkles" href="https://docs.coingecko.com/skills">
  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.
</Card>

***

## Endpoint Overview

| Endpoint                                                                                    | What It Gives You                                                              | Best For                                                    |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------- |
| [/coins/\{id}/history](/reference/coins-id-history)                                         | Price, market cap, and volume at a specific date                               | Point-in-time lookups for tax events and audits             |
| [/coins/\{id}/market\_chart/range](/reference/coins-id-market-chart-range)                  | Price, market cap, and volume time series for a custom date range              | Historical trend data for reporting pipelines               |
| [/coins/../contract/../market\_chart/range](/reference/contract-address-market-chart-range) | Same as above, queried by contract address instead of coin ID                  | Token-level reporting when you only have contract addresses |
| [/coins/\{id}/ohlc/range](/reference/coins-id-ohlc-range)                                   | OHLC candles for a custom date range with daily or hourly intervals            | Aggregated pricing benchmarks for fund accounting           |
| [/coins/\{id}/ohlc](/reference/coins-id-ohlc)                                               | OHLC candles for a predefined time window                                      | Quick OHLC lookups for recent reporting periods             |
| [/simple/price](/reference/simple-price)                                                    | Real-time prices with optional market cap, volume, and last updated timestamp  | Daily NAV snapshots and current valuations                  |
| [/coins/list](/reference/coins-list)                                                        | Complete list of all supported coins with IDs, symbols, and platform addresses | Asset mapping and identifier reconciliation                 |
| [/simple/supported\_vs\_currencies](/reference/simple-supported-currencies)                 | All supported fiat and crypto quote currencies                                 | Validating currency pairs for multi-currency reports        |

<Callout icon="key" color="#FFC107" iconType="regular">
  Replace `YOUR_API_KEY` in the examples below with your actual CoinGecko API key.<br />Don't have one yet? [Get your API key here](https://www.coingecko.com/en/api/pricing).
</Callout>

***

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

*🔗 More endpoint details [here](/reference/coins-id-history)*

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:**

<CodeGroup>
  ```bash cURL theme={null}
  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"
  ```
</CodeGroup>

**Key parameters:**

| Parameter      | Why It Matters                         |
| -------------- | -------------------------------------- |
| `date`         | The target date in `dd-mm-yyyy` format |
| `localization` | Set to `false` to reduce response size |

**Response highlights:**

<CodeGroup>
  ```json JSON theme={null}
  {
    "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 }
    }
  }
  ```
</CodeGroup>

<Note>
  The `date` parameter uses `dd-mm-yyyy` format (not ISO format).<br />For example, April 15, 2024 is `15-04-2024`.
</Note>

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](/reference/coins-id-market-chart-range)*

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:**

<CodeGroup>
  ```bash cURL theme={null}
  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"
  ```
</CodeGroup>

**Key parameters:**

| Parameter     | Why It Matters                                                         |
| ------------- | ---------------------------------------------------------------------- |
| `from` / `to` | Define your reporting window using ISO date strings or UNIX timestamps |
| `vs_currency` | The quote currency for all values (e.g., `usd`, `eur`)                 |
| `interval`    | Use `daily` or `hourly` for consistent data points (paid plans)        |

**Response highlights:**

<CodeGroup>
  ```json JSON theme={null}
  {
    "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]
    ]
  }
  ```
</CodeGroup>

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.

<Note>
  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`.
</Note>

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

*🔗 More endpoint details [here](/reference/contract-address-market-chart-range)*

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:**

<CodeGroup>
  ```bash cURL theme={null}
  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"
  ```
</CodeGroup>

**Key parameters:**

| Parameter                 | Why It Matters                                          |
| ------------------------- | ------------------------------------------------------- |
| `id` (path)               | The asset platform (e.g., `ethereum`, `solana`)         |
| `contract_address` (path) | The token's contract address on that platform           |
| `from` / `to`             | Reporting window in ISO date strings or UNIX timestamps |
| `vs_currency`             | Quote currency                                          |

The response schema is identical to `/coins/{id}/market_chart/range` - same `[timestamp, value]` arrays for prices, market caps, and volumes.

<Tip>
  Use [/coins/list?include\_platform=true](/reference/coins-list) to build a mapping between contract addresses and CoinGecko coin IDs - helpful when your pipeline needs to reconcile both identifier types.
</Tip>

***

## OHLC Data for Pricing Benchmarks

### `/coins/{id}/ohlc/range`

*🔗 More endpoint details [here](/reference/coins-id-ohlc-range)*

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:**

<CodeGroup>
  ```bash cURL theme={null}
  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"
  ```
</CodeGroup>

**Key parameters:**

| Parameter     | Why It Matters                                                           |
| ------------- | ------------------------------------------------------------------------ |
| `from` / `to` | Define the reporting window                                              |
| `vs_currency` | Quote currency for OHLC values                                           |
| `interval`    | Use `daily` for end-of-day benchmarks or `hourly` for intraday reporting |

**Response highlights:**

<CodeGroup>
  ```json JSON theme={null}
  [
    [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]
  ]
  ```
</CodeGroup>

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](/reference/coins-id-ohlc)*

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:**

<CodeGroup>
  ```bash cURL theme={null}
  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"
  ```
</CodeGroup>

**Key parameters:**

| Parameter  | Why It Matters                                                      |
| ---------- | ------------------------------------------------------------------- |
| `days`     | Lookback window: `1`, `7`, `14`, `30`, `90`, `180`, `365`, or `max` |
| `interval` | Use `daily` or `hourly` for consistent intervals (paid plans)       |

<Note>
  **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`.
</Note>

***

## Current Price Snapshots - `/simple/price`

*🔗 More endpoint details [here](/reference/simple-price)*

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:**

<CodeGroup>
  ```bash cURL theme={null}
  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"
  ```
</CodeGroup>

**Key parameters:**

| Parameter                 | Why It Matters                                                   |
| ------------------------- | ---------------------------------------------------------------- |
| `ids` / `symbols`         | Batch multiple coins in a single request for efficient snapshots |
| `vs_currencies`           | Return prices in multiple fiat currencies simultaneously         |
| `include_market_cap`      | Add market cap for AUM and exposure reporting                    |
| `include_last_updated_at` | Includes a UNIX timestamp - critical for audit trails            |
| `precision`               | Control decimal places for consistent formatting                 |

**Response highlights:**

<CodeGroup>
  ```json JSON theme={null}
  {
    "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
    }
  }
  ```
</CodeGroup>

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](/reference/coins-list)*

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:**

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://pro-api.coingecko.com/api/v3/coins/list?include_platform=true" \
    -H "x-cg-pro-api-key: YOUR_API_KEY"
  ```
</CodeGroup>

**Key parameters:**

| Parameter          | Why It Matters                                                                        |
| ------------------ | ------------------------------------------------------------------------------------- |
| `include_platform` | Include contract addresses per platform - essential for reconciling tokens by address |

**Response highlights:**

<CodeGroup>
  ```json JSON theme={null}
  [
    {
      "id": "bitcoin",
      "symbol": "btc",
      "name": "Bitcoin",
      "platforms": {}
    },
    {
      "id": "usd-coin",
      "symbol": "usdc",
      "name": "USDC",
      "platforms": {
        "ethereum": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "solana": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        "polygon-pos": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359"
      }
    }
  ]
  ```
</CodeGroup>

### `/simple/supported_vs_currencies`

*🔗 More endpoint details [here](/reference/simple-supported-currencies)*

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:**

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://pro-api.coingecko.com/api/v3/simple/supported_vs_currencies" \
    -H "x-cg-pro-api-key: YOUR_API_KEY"
  ```
</CodeGroup>

**Response highlights:**

<CodeGroup>
  ```json JSON theme={null}
  [
    "usd", "eur", "gbp", "jpy", "aud", "cad", "chf", "cny",
    "hkd", "sgd", "krw", "inr", "btc", "eth", "bnb"
  ]
  ```
</CodeGroup>

<Tip>
  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.
</Tip>

***

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

<br />

<Card title="Integrate with CoinGecko MCP Server" icon="server" href="https://docs.coingecko.com/docs/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.
</Card>

***

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