Pro API Update: More Consistent Historical Price Data Spacing
Updates
Summary
We’re improving the historical data returned by the endpoints below so that 5-minute and hourly data points are now interval-aligned, landing precisely on fixed interval boundaries (e.g., exactly on the hour) rather than slightly before or after, as they do today. This is a data-quality improvement: response schemas and structure are unchanged, and no request or response format changes are required on your end.
📋 Full details in our changelog.
Who this affects
This rollout applies to all paid plan users: Basic, Analyst, Lite, Pro, Pro+, and Enterprise. Please refer to the rollout schedule below for the exact effective date and time for each plan tier.
Improved endpoints
- /coins/{id}/market_chart
- /coins/{id}/market_chart/range
- /coins/{id}/contract/{contract_address}/market_chart
- /coins/{id}/contract/{contract_address}/market_chart/range
- /coins/{id}/history
- /coins/{id}/circulating_supply_chart
- /coins/{id}/circulating_supply_chart/range
What’s improving
Previously: data points landed close to, but not exactly on, each interval boundary. For example, hourly data might return timestamps like:
1704067241 (2024-01-01 00:00:41)
1704070877 (2024-01-01 01:01:17)
1704074383 (2024-01-01 01:59:43)
New: data points will land precisely on the interval boundary:
1704067200 (2024-01-01 00:00:00)
1704070800 (2024-01-01 01:00:00)
1704074400 (2024-01-01 02:00:00)
This makes historical series easier to align, join, and compare programmatically, without needing to round or bucket timestamps yourself.
What you need to do
Values, not structure, will change. The JSON schema and field structure for these endpoints stay exactly the same, so you don’t need to update any parsing logic. What differs is the value returned for a given historical timestamp, since it now reflects the interval-aligned data point.
| Endpoints | Improved fields |
|---|---|
| /coins/{id}/market_chart, /coins/{id}/market_chart/range, /coins/{id}/contract/{contract_address}/market_chart, /coins/{id}/contract/{contract_address}/market_chart/range | prices, market_caps, total_volumes |
| /coins/{id}/history | market_data.current_price, market_data.market_cap, market_data.total_volume |
| /coins/{id}/circulating_supply_chart, /coins/{id}/circulating_supply_chart/range | circulating_supply |
If you cache or store historical data locally, expect that re-querying a historical timestamp after your plan’s effective date may return a value that differs slightly from what you previously stored, since it’s now sourced from the corrected, interval-aligned timestamp.
If your integration does exact-timestamp matching or joins against externally stored data, this change should make that easier and more reliable going forward, but double check any logic written to accommodate the old unaligned timestamps.
Why values may look different: This is an improvement, not an error
If you compare historical values before and after this change, you may notice differences. This is expected: the new data pipeline sources prices more accurately than the previous system. We’ve measured and validated the new values against major assets and confirmed the differences fall within an acceptable, expected range. If you see something that looks like an outlier beyond that, let us know by submitting a ticket at https://support.coingecko.com .
Rollout schedule
This will roll out progressively by plan tier:
| Plan | Effective time |
|---|---|
| Basic, Analyst | 4 August 2026, 02:00:00 UTC |
| Lite, Pro, Pro+ | 5 August 2026, 02:00:00 UTC |
| Enterprise | 6 August 2026, 02:00:00 UTC |
No action is needed on your end during this window.
← Back
CoinGecko API Status