In the wild wild world of crypto, keeping up to date with accurate exchange rates is crucial. No matter whether you are a trader, developer, a crypto business owner - it's important. When to buy Bitcoin? When to sell ETH? It's not investment advice, but Exchanger Rates might help you so much! Let’s dive into what crypto exchange rates are, why they matter, and how CoinAPI’s new Exchange Rates API can help you get access to this vital information.
What Are Cryptocurrency Exchange Rates?
Crypto exchange rates are the relative value of one cryptocurrency compared to another cryptocurrency or fiat currency (like USD or EUR). These rates are shaped by the interplay of market supply and demand, trading volumes and liquidity, current market sentiment, technical developments, regulatory news and macroeconomic conditions.
For example, when you see BTC/USD at 100,000, it means one Bitcoin is worth 100,000 US dollars. Common trading pairs include BTC/USD (Bitcoin to US Dollar), ETH/BTC (Ethereum to Bitcoin), and ETH/USD (Ethereum to US Dollar). Of course, there are other cryptocurrencies too.

Why Do Exchange Rates Differ Between Platforms?
You might notice that cryptocurrency prices can vary across different exchanges (not even mentioning differences between CEXs and DEXs). This is because of the unique characteristics of each platform’s trading environment. Trading volumes and liquidity depths, as well as geographic restrictions and regulations, play a big role in this.
Each platform has its own fee structure that affects pricing. Local market conditions and unbalanced arbitrage opportunities further contribute to these variations, creating a complex web of price differences across the cryptocurrency space.
Real-World Use Cases for Crypto Asset Exchange Rates
Exchange rate data has many practical applications across various industries. In the trading and investment space, it powers algorithmic and high frequency trading systems and enables accurate portfolio valuation and management. Risk assessment and market trend analysis also rely heavily on exchange rate information.
Financial services benefit greatly from exchange rate data. Payment processors use it for currency conversion, while DeFi applications and liquidity pool managers depend on it for their core operations. The business and analytics sector uses it for financial reporting, tax compliance, market research and educational tools and simulations.

CoinAPI's Cryptocurrency Exchange Rates API
As CoinAPI we have recently launched a new product - Exchange Rates API. It's a tool that provides full access to cryptocurrency exchange rate data with many features. The service updates in real-time every 100ms and covers more than 2,252 assets. With over 20 terabytes of historical data spanning more than 14 years, you can get current and historical exchange rates through multiple delivery methods including REST, WebSocket, and JSON-RPC (more about it below👇).
The Crypto Exchange Rates API Features
The API has multiple integrations to suit your needs. REST API is for basic use cases, WebSocket is for real-time data streaming and JSON-RPC is for more complex implementations.
We have coverage of over 350 exchanges and thousands of trading pairs for both cryptocurrency and fiat currencies. We have 99.9% SLA, low latency data, and robust global infrastructure.
Your developers will love the extensive documentation, multiple SDKs, and support for multiple programming languages so implementation is easy no matter what your tech stack is.
Best Practices
When using exchange rate data in your app, couple of things to keep in mind. Data freshness is key, always verify the timestamp of the rate data to make sure it meets your requirements. Robust error handling for API responses and connection issues should be built in from the start.
API rate limits and proper throttling should be taken care of. And thorough validation of exchange rate data before using it in critical operations to prevent issues down the line.
API Response - Examples
Enough talking! Let us show you how it actually works. Below is a list of example API responses for different requests - it gives a great picture of data clarity and quality we provide. If you want to learn more about the way we calculate the rates go to our docs!
Check the Examples Out!
Specific Exchange Rate
This request gets the exchange rate for a specific base and quote asset at a given time or the current rate.
1{
2 "time": "2025-02-13T10:07:38.2687211Z",
3 "asset_id_base": "BTC",
4 "asset_id_quote": "USD",
5 "rate": 10000
6}
Explanation of Each Field:
"time": "2025-02-13T10:07:38.2687211Z"
This is the timestamp the rate was recorded at. In this case 13th of February 2025. It's in ISO 8601 format and in Coordinated Universal Time (UTC) with the Z at the end. Useful for tracking when the rate was last updated so you can use the most recent data"asset_id_base": "BTC"
The base asset in the currency pair. In this case, Bitcoin (BTC) is the asset being compared. This is the cryptocurrency you are converting from."asset_id_quote": "USD"
The quote asset in the currency pair. Here, the US Dollar (USD) is the asset being compared against. This is the currency you are converting to."rate": 10000
The rate value. 1 BTC = 10,000 USD at this time. Use to convert BTC to USD. For example to convert bitcoin to US dollar multiply by this rate.
All Current Exchange Rate
This requests gets the current exchange rate between requested asset and all other assets.
1{
2 "asset_id_base": "BTC",
3 "rates": [
4 {
5 "time": "2017-08-09T14:31:37.0520000Z",
6 "asset_id_quote": "USD",
7 "rate": 3258.887541779804
8 },
9 {
10 "time": "2017-08-09T14:31:36.7570000Z",
11 "asset_id_quote": "EUR",
12 "rate": 2782.5255080599272
13 },
14 {
15 "time": "2017-08-09T14:31:36.7570000Z",
16 "asset_id_quote": "CNY",
17 "rate": 21756.295595926054
18 },
19 {
20 "time": "2017-08-09T14:31:36.7570000Z",
21 "asset_id_quote": "GBP",
22 "rate": 2509.602420379958
23 }
24 ]
25}
Explanation of Each Field:
"asset_id_base": "BTC"
This is the base asset for which the rates are being provided. In this case, it’s Bitcoin (BTC). All rates are relative to Bitcoin. For example, the BTC/USD rate shows how much one Bitcoin is worth in US Dollars."rates":
An array of rate objects. Each object in the array is a rate of the base asset (BTC) against a different quote asset."time": "2017-08-09T14:31:37.0520000Z"
Timestamp when the USD rate was recorded. ISO 8601 in UTC."asset_id_quote": "USD"
The quote asset against which BTC is being compared, which is the US Dollar."rate": 3258.887541779804
The rate that 1 BTC is equal to approximately 3,258.89 USD at the time.
Timeseries Period
You can also get historical exchange rates of any asset pair, grouped into time periods.
A full list of supported time periods that are available for requesting:
- Seconds: 1SEC, 2SEC, 3SEC, 4SEC, 5SEC, 6SEC, 10SEC, 15SEC, 20SEC, 30SEC
- Minutes: 1MIN, 2MIN, 3MIN, 4MIN, 5MIN, 6MIN, 10MIN, 15MIN, 20MIN, 30MIN
- Hours: 1HRS, 2HRS, 3HRS, 4HRS, 6HRS, 8HRS, 12HRS
- Days: 1DAY, 2DAY, 3DAY, 5DAY, 7DAY, 10DAY
1[
2 {
3 "period_id": "1SEC",
4 "length_seconds": 1,
5 "length_months": 0,
6 "unit_count": 1,
7 "unit_name": "second",
8 "display_name": "1 Second"
9 },
10 {
11 "period_id": "30MIN",
12 "length_seconds": 1800,
13 "length_months": 0,
14 "unit_count": 30,
15 "unit_name": "minute",
16 "display_name": "30 Minutes"
17 },
18 {
19 "period_id": "10DAY",
20 "length_seconds": 864000,
21 "length_months": 0,
22 "unit_count": 10,
23 "unit_name": "day",
24 "display_name": "10 Days"
25 }
26]
27
Explanation of Each Field:
"period_id": "1SEC"
This is a unique identifier for the time period. In this case "1SEC" means 1 second. Used as a parameter when requesting historical rate data to specify the granularity of the data points. For example "1SEC" means data should be aggregated every second."length_seconds": 1
The length of the period in seconds. Useful for calculations or when programmatically handling different time intervals. In this case it means the period is 1 second."length_months": 0
The length of the period in months. This period doesn't span months but this field is helpful for periods that do. For example a "6MON" period would have length_months set to 6."unit_count": 1
The count of the time unit specified in unit_name. How many units make up the period. In this example it's 1 unit of the unit_name."unit_name": "second"
The name of the time unit for the period. So unit_count refers to this. Here it's seconds."display_name": "1 Second"
A human readable name for the period. Used in user interfaces, reports or documentation to display the period in a human friendly way. Helpful for users interacting with the data.
Timeseries Data
It gets the timeseries of the exchange rates between two assets.
1[
2 {
3 "time_period_start": "2016-01-01T00:00:00.0000000Z",
4 "time_period_end": "2016-01-01T00:01:00.0000000Z",
5 "time_open": "2016-01-01T00:00:00.0000000Z",
6 "time_close": "2016-01-01T00:00:00.0000000Z",
7 "rate_open": 430.586617904731,
8 "rate_high": 430.586617904731,
9 "rate_low": 430.586617904731,
10 "rate_close": 430.586617904731
11 },
12 {
13 "time_period_start": "2016-01-01T00:01:00.0000000Z",
14 "time_period_end": "2016-01-01T00:02:00.0000000Z",
15 "time_open": "2016-01-01T00:01:00.0000000Z",
16 "time_close": "2016-01-01T00:01:00.0000000Z",
17 "rate_open": 430.38999999999993,
18 "rate_high": 430.38999999999993,
19 "rate_low": 430.38999999999993,
20 "rate_close": 430.38999999999993
21 },
22 {
23 "time_period_start": "2016-01-01T00:02:00.0000000Z",
24 "time_period_end": "2016-01-01T00:03:00.0000000Z",
25 "time_open": "2016-01-01T00:02:00.0000000Z",
26 "time_close": "2016-01-01T00:02:00.0000000Z",
27 "rate_open": 430.6522189770523,
28 "rate_high": 430.6522189770523,
29 "rate_low": 430.6522189770523,
30 "rate_close": 430.6522189770523
31 }
32]
Explanation of Each Field:
"time_period_start": "2016-01-01T00:00:00.0000000Z"
Start of the time period. ISO 8601 in UTC, Z at the end. The start of the range for which the rate data is aggregated."time_period_end": "2016-01-01T00:01:00.0000000Z"
End of the time period. ISO 8601 in UTC. The end of the range, 1 minute in this case."time_open": "2016-01-01T00:00:00.0000000Z"
First observed rate of the period. ISO 8601 in UTC. The opening rate of the asset for the period."time_close": "2016-01-01T00:00:00.0000000Z"
Last observed rate of the period."rate_open": 430.586617904731
Rate at time_open. The initial rate for the period, for tracking the start value."rate_high": 430.586617904731
Highest rate of the period. The peak rate for the period."rate_low": 430.586617904731
Lowest rate of the period. The trough rate for the period."rate_close": 430.586617904731
Rate at time_close. The final rate for the period is for tracking the end value.
Get Exchange Rates API Now!
Crypto exchange rates are the backbone of the cryptocurrency ecosystem, from simple trades to complex financial applications. With CoinAPI’s Exchange Rates API, getting this data is easy and reliable so you can focus on building instead of managing data infrastructure. Whatever you’re building, a trading platform, portfolio management, or DeFi application, you need exchange rate data.
CoinAPI has got you covered with all the crypto tools and infrastructure to get you that. Choose how you want to integrate.