> For the complete documentation index, see [llms.txt](https://gitbook-docs.coinmetrics.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook-docs.coinmetrics.io/tutorials-and-examples/user-guides/exporting-data.md).

# How To Export Data

This guide will show you how to export data using the Coin Metrics API.

## HTTP API

On a web browser, you can append any valid API request URL with `&format=csv` or `&format=json` to download the data in CSV or JSON format, respectively.

For example:

```
https://api.coinmetrics.io/v4/timeseries/asset-metrics?assets=eth&metrics=PriceUSD&frequency=1d&end_time=2015-08-01&start_inclusive=false&format=csv&api_key=<your_key>
```

## Google Sheets

Any endpoint that accepts `format=csv` can feed a Google Sheet through the `IMPORTDATA` function. The quickest version passes the whole URL inline:

```
=IMPORTDATA("https://api.coinmetrics.io/v4/timeseries/asset-metrics?metrics=CapMrktEstUSD,SplyCur,PriceUSD,CapMrktCurUSD&assets=usdc&frequency=1d&limit_per_asset=1&format=csv&api_key=<your_key>")
```

Sheets re-runs `IMPORTDATA` periodically, so the cell keeps pulling fresh data without you touching it.

### Building a reusable sheet

Editing that URL by hand gets tedious as soon as you want a different asset or date range. Put each query parameter in its own cell instead and assemble the URL with a formula, which turns the sheet into a small control panel you can point anywhere.

1. Open a new Google Sheet and enter the parameter names in column A with their values in column B, starting at row 1:

   | Cell | Parameter     | Value                |
   | ---- | ------------- | -------------------- |
   | B1   | `api_key`     | `<your_key>`         |
   | B2   | `assets`      | btc                  |
   | B3   | `metrics`     | PriceUSD             |
   | B4   | `page_size`   | 1000                 |
   | B5   | `start_time`  | 2025-01-01T00:00:00Z |
   | B6   | `end_time`    | 2025-01-31T00:00:00Z |
   | B7   | `paging_from` | end                  |
   | B8   | `frequency`   | 1d                   |
2. In another cell, build the query URL from those values:

   ```
   = "https://api.coinmetrics.io/v4/timeseries/asset-metrics?" &
   "api_key=" & B1 &
   "&assets=" & B2 &
   "&metrics=" & B3 &
   "&page_size=" & B4 &
   "&start_time=" & B5 &
   "&end_time=" & B6 &
   "&paging_from=" & B7 &
   "&frequency=" & B8 &
   "&format=csv"
   ```
3. In a third cell, pass that cell to `IMPORTDATA`:

   ```
   =IMPORTDATA(<cell containing the URL>)
   ```

The first time you do this, Sheets asks you to allow the connection to an external URL:

<figure><img src="/files/86GBbjn8a9RFAPxevT7o" alt=""><figcaption></figcaption></figure>

Once you allow it, the CSV response fills the cells below:

<figure><img src="/files/fa88m43PfCstJHhkO08c" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Your API key sits in a cell and in the assembled URL, so anyone you share the sheet with can read it. Keep these sheets private, or use a key scoped to what the sheet needs.
{% endhint %}

## Python API Client

In the Python API client, you can use the `export_to_csv` and `export_to_json` methods to export data to a CSV or JSON file.

For example:

```python
from coinmetrics.api_client import CoinMetricsClient

client = CoinMetricsClient()

client.get_asset_metrics(
    assets = ["btc", "eth"], 
    metrics = ["PriceUSD"], 
    start_time = "2024-01-01",
    end_time = "2024-01-31"
).export_to_csv("sample_data.csv")

client.get_asset_metrics(
    assets = ["btc", "eth"], 
    metrics = ["PriceUSD"], 
    start_time = "2024-01-01",
    end_time = "2024-01-31"
).export_to_json("sample_data.json")
```

As of version 2025.9.17.17, exporting to JSON files using the Python API Client is as fast using a `curl` command. See these [release notes](https://github.com/coinmetrics/api-client-python/releases) for more on benchmarking.

Exporting data can be sped up significantly by splitting the API calls to parallel threads.

```python
client.get_asset_metrics(
    assets = ["btc", "eth"], 
    metrics = ["PriceUSD"], 
    start_time = "2024-01-01",
    end_time = "2024-01-31"
).parallel("assets").export_to_csv_files()

# Exporting to CSV: 100%|██████████| 2/2 [00:00<00:00, 14.22it/s]
# 2025-09-18 15:41:36 [INFO] Files saved in: 
# ./asset-metrics/*.csv
```

Note that the download speed is evenly divided between all active connections of a single api key. 10 parallel connections are allowed. Excessing connections will be queued (no data transfer will happen).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://gitbook-docs.coinmetrics.io/tutorials-and-examples/user-guides/exporting-data.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
