Free Currency Conversion API

Daily exchange rates for 33 major currencies and historical rates back to 1999, as JSON. Free for hobby and personal projects.

0
1
2
3
4
{
   "data": {
      "USD": 1.078121
   }
}

Latest Rates

The latest exchange rates for all 33 currencies, updated once a day.

Read more in the documentation

Historical Rates

The exchange rates of any date back to 1999.

Read more in the documentation

Time Ranges

Exchange rates for every day in a date range you choose.

Read more in the documentation

Everything you need to handle exchange rates

Almost every app needs exchange rates at some point. We think the basics should cost nothing, so this API is free.

1,000 free requests a month

For hobby and personal projects. Commercial use needs a paid plan on currencyapi.com.

33 major currencies

USD, EUR, GBP, JPY, CHF and the other most traded currencies.

Daily updates

Every rate refreshes once a day, with daily history back to 1999.

What the free currency API includes

Free plan at a glance

Currencies
33, any of them as base
Updates
Daily (end-of-day rates)
History
Daily rates back to 1999-01-01
Monthly quota
1,000 requests
Rate limit
10 requests per minute

Failed requests and validation errors do not count against the quota. Need minute updates, 170+ currencies or time series? Upgrade to currencyapi.com.

Currencies covered

  • EUR Euro
  • USD US Dollar
  • JPY Japanese Yen
  • BGN Bulgarian Lev
  • CZK Czech Koruna
  • DKK Danish Krone
  • GBP British Pound
  • HUF Hungarian Forint
  • PLN Polish Zloty
  • RON Romanian Leu
  • SEK Swedish Krona
  • CHF Swiss Franc
  • ISK Icelandic Króna
  • NOK Norwegian Krone
  • HRK Croatian Kuna
  • RUB Russian Ruble
  • TRY Turkish Lira
  • AUD Australian Dollar
  • BRL Brazilian Real
  • CAD Canadian Dollar
  • CNY Chinese Yuan
  • HKD Hong Kong Dollar
  • IDR Indonesian Rupiah
  • ILS Israeli New Shekel
  • INR Indian Rupee
  • KRW South Korean Won
  • MXN Mexican Peso
  • MYR Malaysian Ringgit
  • NZD New Zealand Dollar
  • PHP Philippine Peso
  • SGD Singapore Dollar
  • THB Thai Baht
  • ZAR South African Rand

The full list is in the documentation.

Get exchange rates in your language

The latest rates for EUR, USD and GBP, with USD as the base (the example from the documentation). Replace YOUR-APIKEY with your free key.

cURL

curl "https://api.freecurrencyapi.com/v1/latest?base_currency=USD&currencies=EUR,USD,GBP" \
  -H "apikey: YOUR-APIKEY"

JavaScript

const res = await fetch(
  "https://api.freecurrencyapi.com/v1/latest?base_currency=USD&currencies=EUR,USD,GBP",
  { headers: { apikey: "YOUR-APIKEY" } }
);
const { data } = await res.json();
console.log(data.EUR);

Python

import requests

res = requests.get(
    "https://api.freecurrencyapi.com/v1/latest",
    params={"base_currency": "USD", "currencies": "EUR,USD,GBP"},
    headers={"apikey": "YOUR-APIKEY"},
)
print(res.json()["data"]["EUR"])

PHP

$ch = curl_init("https://api.freecurrencyapi.com/v1/latest?base_currency=USD&currencies=EUR,USD,GBP");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["apikey: YOUR-APIKEY"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true)["data"];
echo $data["EUR"];

Go

req, _ := http.NewRequest("GET",
    "https://api.freecurrencyapi.com/v1/latest?base_currency=USD&currencies=EUR,USD,GBP", nil)
req.Header.Set("apikey", "YOUR-APIKEY")
res, err := http.DefaultClient.Do(req)
if err != nil {
    log.Fatal(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))

Response

{
  "data": {
    "EUR": 0.918456,
    "USD": 1,
    "GBP": 0.789012
  }
}

Prefer a library? There are official SDKs for PHP, Python, JavaScript, Ruby, Go, Rust and R, listed in the documentation. Comparing options? See the best free currency APIs.

Need more?

currencyapi.com is our commercial API, with more currencies, faster updates and commercial use.

170+ currencies, crypto and metals

Updates every 60 seconds

Custom plans

Averages and central bank rates

Compare currencyapi.com
currencyapi.com