Skip to main content
GET
cURL

Overview

Downloads bulk timeseries data for a specific dataset at the specified granularity. The data is streamed directly as a file in either CSV or JSONL format, making it ideal for large-scale data downloads.

Path Parameters

  • datasetSlug (required): The slug identifier of the dataset to download. Use the Get Available Datasets endpoint to discover available dataset slugs.
  • granularity (required): The time interval for the data points. Available options: 1d, 1w

Query Parameters

  • rangeStart (required): Start of the time range in ISO 8601 format (e.g., 2024-01-01T00:00:00Z)
  • rangeEnd (required): End of the time range in ISO 8601 format (e.g., 2024-12-31T23:59:59Z)
  • format (optional): Output format - either csv (default) or jsonl

Output Formats

CSV Format

Comma-separated values with a header row. Compatible with Excel, Google Sheets, pandas, and most data analysis tools.

JSONL Format

JSON Lines format with one JSON object per line. Ideal for streaming processing and database imports.

Time Range Limits

To prevent excessive data downloads, time ranges are limited based on granularity:
  • 1d: Maximum 365 days per request
  • 1w: Maximum 1095 days (3 years) per request
For larger time ranges, make multiple requests with different date ranges.

Usage Examples

Download CSV Data

Download JSONL Data

Python Example with pandas

Response Headers

The response includes helpful headers:
  • Content-Type: text/csv; charset=utf-8 or application/x-ndjson
  • Content-Disposition: Suggests a filename for the download (e.g., asset_price_1d_2024-01-01_2024-12-31.csv)
  • Content-Encoding: gzip if compression is applied

Error Responses

400 Bad Request

  • Invalid date format
  • End date before start date
  • Time range exceeds maximum allowed for the granularity
  • Invalid format parameter

403 Forbidden

  • Your subscription tier does not have access to this dataset

404 Not Found

  • Dataset slug does not exist
  • Granularity not supported for this dataset

Best Practices

  1. Start with the datasets catalog: Always check available datasets first to see supported granularities
  2. Respect time range limits: Break large downloads into smaller time windows
  3. Use appropriate granularity: Choose the coarsest granularity that meets your needs to reduce data transfer
  4. Handle errors gracefully: Implement retry logic for transient network errors
  5. Store data efficiently: Consider using columnar formats like Parquet for long-term storage after download

Authorizations

x-messari-api-key
string
header
required

API key for authentication. Get your key at https://messari.io/account/api

Path Parameters

datasetSlug
enum<string>
default:asset-price
required

Dataset slug identifier. Use /bulk/v1/datasets to see all available datasets.

Available options:
asset-marketcap,
asset-price,
asset-supply,
market
granularity
enum<string>
default:1d
required

Data granularity interval

Available options:
1d,
1w

Query Parameters

rangeStart
string<date-time>
default:2025-10-01T00:00:00Z
required

Start of time range in ISO 8601 format

Example:

"2025-10-01T00:00:00Z"

rangeEnd
string<date-time>
default:2025-10-07T23:59:59Z
required

End of time range in ISO 8601 format

Example:

"2025-10-07T23:59:59Z"

format
enum<string>
default:csv

Output format for the data

Available options:
csv,
jsonl

Response

Successfully generated and streaming bulk data file

The response is of type file.