Currency Conversion API
The perfect tool to handle your exchange rate conversions. Our API helps you with current and historical foreign exchange rates. Stop worrying about uptime & outdated data.
Just converting? Use the free currency converter.
The perfect tool to handle your exchange rate conversions. Our API helps you with current and historical foreign exchange rates. Stop worrying about uptime & outdated data.
Just converting? Use the free currency converter.
currencyapi.com features an unmatched coverage of world currencies & cryptocurrencies.
All provided currency pairs are updated every 60 seconds. Obtain currency data in real-time.
Our REST service provides a powerful infrastructure, handling millions of requests per day.
Try it yourself
Real-time forex quotes 60 seconds update frequency for all major currency pairs. The API is fast, secure, and offers a great developer experience. Our currency API is designed to handle millions of requests per second.
Our customer family consists of international brands from over 80 countries and various industries. Become a part of our movement by starting your free currencyapi.com account today.
We passionately believe that you should not be dealing with exchange rates ever again. Every rule for selling digital products and services online can be centralized. That is exactly what our service is offering.
We believe that delivering the best possible product for a fair and competitive pricing is the best foundation for long-lasting customer relationships!
15,000 Requests / Month
Private forum access
Historical Rates
Live Rates
Built with developers in mind, our currency converter API is not only easy to integrate but comes along with an entire suite of REST-Clients and pre-built integrations. Additionally, we provide a Postman-Collection.
// latest rates
curl -G "https://api.currencyapi.com/v3/latest" \
-d "apikey=YOUR-KEY" \
// latest with specific base currency
curl -G "https://api.currencyapi.com/v3/latest" \
-d "apikey=YOUR-KEY" \
-d "base_currency=USD"
// historical rates from a specific date
curl -G "https://api.currencyapi.com/v3/historical" \
-d "apikey=YOUR-KEY" \
-d "base_currency=USD" \
-d "date=2020-10-01" \
// latest rates
$url = "https://api.currencyapi.com/v3/latest?apikey=YOUR-APIKEY";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
// latest with specific base currency
$url = "https://api.currencyapi.com/v3/latest?apikey=YOUR-APIKEY&base_currency=USD";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
// historical rates from a specific date
$url = "https://api.currencyapi.com/v3/historical?apikey=YOUR-APIKEY&base_currency=USD&date=2020-10-01";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
// latest rates
const request = require('request-promise');
request('https://api.currencyapi.com/v3/latest?apikey=YOUR-APIKEY')
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
// latest with specific base currency
const request = require('request-promise');
request('https://api.currencyapi.com/v3/latest?apikey=YOUR-APIKEY&base_currency=USD')
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
// historical rates from a specific date
const request = require('request-promise');
request('https://api.currencyapi.com/v3/historical?apikey=YOUR-APIKEY&base_currency=USD&date=2020-10-01')
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
// latest rates
try {
String apikey = "YOUR-APIKEY";
String url = "https://api.currencyapi.com/v3/latest";
URL urlForGetRequest = new URL(url);
String readLine = null;
HttpURLConnection connection = (HttpURLConnection) urlForGetRequest.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer response = new StringBuffer();
while ((readLine = in.readLine()) != null) {
response.append(readLine);
}
in.close();
System.out.println(response.toString());
} else {
throw new Exception("Error in API Call");
}
} catch (Exception ex) {
ex.printStackTrace();
}
// latest with specific base currency
try {
String apikey = 'YOUR-APIKEY';
String url = "https://api.currencyapi.com/v3/latest?apikey=" + apikey + "&base_currency=USD";
URL urlForGetRequest = new URL(url);
String readLine = null;
HttpURLConnection connection = (HttpURLConnection) urlForGetRequest.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer response = new StringBuffer();
while ((readLine = in.readLine()) != null) {
response.append(readLine);
}
in.close();
System.out.println(response.toString());
} else {
throw new Exception("Error in API Call");
}
} catch (Exception ex) {
ex.printStackTrace();
}
// historical rates from a specific date
try {
String apikey = "YOUR-APIKEY";
String url = "https://api.currencyapi.com/v3/historical/historical?apikey=" + apikey + &base_currency=USD&date=2020-10-01";
URL urlForGetRequest = new URL(url);
String readLine = null;
HttpURLConnection connection = (HttpURLConnection) urlForGetRequest.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer response = new StringBuffer();
while ((readLine = in.readLine()) != null) {
response.append(readLine);
}
in.close();
System.out.println(response.toString());
} else {
throw new Exception("Error in API Call");
}
} catch (Exception ex) {
ex.printStackTrace();
}
From the live rate to the yearly average for your books
Every endpoint shares the same API key, base currency handling and quota, so you never stitch together several providers for rates, history and reporting figures.
GET /v3/latest170+ fiat, crypto and metal rates, updated up to every 60 seconds, and /v3/convert for any amount.
GET /v3/historicalEnd-of-day rates for any date back to 1999.
GET /v3/rangeDaily, hourly or minute series, plus month-end and week-end series over decades. JSON or CSV.
GET /v3/fluctuation
NewHow much every currency moved between two dates, in absolute terms and in percent.
GET /v3/average
NewAverage, low and high per month, quarter or year, the figures IFRS and US GAAP reporting uses.
GET /v3/officialThe official rates of 35 central banks such as the ECB, Fed and Bank of England, with full history.
Common Use Cases For Our Currency API
Our easy-to-use currency exchange API enables you to use our data for a wide variety of purposes.
E-Commerce Stores
Spreadsheets
Analytics
Many more...