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: 
5m,15m,30m,1h,1d 
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) orjsonl 
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:- 5m, 15m, 30m: Maximum 30 days per request
 - 1h: Maximum 90 days per request
 - 1d: Maximum 365 days per request
 
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-8orapplication/x-ndjson - Content-Disposition: Suggests a filename for the download (e.g., 
asset_price_1d_2024-01-01_2024-12-31.csv) - Content-Encoding: 
gzipif 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
- Start with the datasets catalog: Always check available datasets first to see supported granularities
 - Respect time range limits: Break large downloads into smaller time windows
 - Use appropriate granularity: Choose the coarsest granularity that meets your needs to reduce data transfer
 - Handle errors gracefully: Implement retry logic for transient network errors
 - Store data efficiently: Consider using columnar formats like Parquet for long-term storage after download
 
Authorizations
API key for authentication. Get your key at https://messari.io/account/api
Path Parameters
Dataset slug identifier. Use /bulk/v1/datasets to see all available datasets.
Available options: 
asset-price, market Data granularity interval
Available options: 
5m, 15m, 30m, 1h, 1d Query Parameters
Start of time range in ISO 8601 format
Example:
"2024-01-01T00:00:00Z"
End of time range in ISO 8601 format
Example:
"2024-12-31T23:59:59Z"
Output format for the data
Available options: 
csv, jsonl Response
Successfully generated and streaming bulk data file
The response is of type file.

