Documentation

The Rates API serves the euro foreign exchange reference rates published by the European Central Bank and Banca d'Italia, plus cross-rates for any other base currency.

  • Base URL: https://theratesapi.com/api
  • No API key or signup. Requests are plain HTTPS GETs and responses are JSON.
  • CORS is open, so you can call it from browser JavaScript on any site.
  • The ECB publishes around 16:00 CET on working days and Banca d'Italia publishes after it. Where both publish a currency, the ECB's rate is used. Rates for other bases are calculated from them and rounded to 6 decimal places.
GET https://theratesapi.com/api/latest
curl "https://theratesapi.com/api/latest"
const res = await fetch('https://theratesapi.com/api/latest')
const data = await res.json()
import requests

data = requests.get('https://theratesapi.com/api/latest').json()

Latest rates

GET /api/latest returns the newest working day that both banks have published. Until Banca d'Italia publishes, that is the previous working day. If Banca d'Italia hasn't published by midnight UTC, the day appears with the ECB's currencies and the rest are added when it catches up.

Add base to quote against another currency and symbols to return only some of them. See Parameters.

GET https://theratesapi.com/api/latest?base=USD&symbols=GBP,JPY
curl "https://theratesapi.com/api/latest?base=USD&symbols=GBP,JPY"
const res = await fetch('https://theratesapi.com/api/latest?base=USD&symbols=GBP,JPY')
const data = await res.json()
import requests

data = requests.get('https://theratesapi.com/api/latest?base=USD&symbols=GBP,JPY').json()

Response 200

{
  "date": "2026-11-13",
  "base": "USD",
  "rates": {
    "GBP": 0.756053,
    "JPY": 159.99819
  }
}

Historical rates

GET /api/YYYY-MM-DD returns the rates for that day, from 1999-01-04 onwards. Single-digit months and days are accepted, so /api/2025-6-2 works too.

  • Weekends and holidays return the previous working day, so check the date field in the response.
  • Future dates return the latest rates.

The same base and symbols parameters apply.

GET https://theratesapi.com/api/2025-06-02?base=USD&symbols=GBP
curl "https://theratesapi.com/api/2025-06-02?base=USD&symbols=GBP"
const res = await fetch('https://theratesapi.com/api/2025-06-02?base=USD&symbols=GBP')
const data = await res.json()
import requests

data = requests.get('https://theratesapi.com/api/2025-06-02?base=USD&symbols=GBP').json()

Response 200

{
  "date": "2025-06-02",
  "base": "USD",
  "rates": {
    "GBP": 0.738594
  }
}

Parameters

NameDefaultDescription
baseEURCurrency to quote rates against. Three-letter code, case-insensitive.
symbolsallComma-separated currencies to return, for example USD,GBP. Case-insensitive. Unknown codes are skipped.

Give each parameter at most once; repeating one returns an error.

GET https://theratesapi.com/api/latest?base=gbp&symbols=usd,inr
curl "https://theratesapi.com/api/latest?base=gbp&symbols=usd,inr"
const res = await fetch('https://theratesapi.com/api/latest?base=gbp&symbols=usd,inr')
const data = await res.json()
import requests

data = requests.get('https://theratesapi.com/api/latest?base=gbp&symbols=usd,inr').json()

Errors

Errors return HTTP 400 with a JSON body containing error.

WhenStatusBody
The date isn't a real calendar date in YYYY-MM-DD form400Invalid date
Unknown base, a date before 1999-01-04, or a repeated parameter400Invalid base or symbols
Unknown codes in symbols200Those codes are skipped, so rates can be {}

Retired currencies such as CYP (Cypriot pound) or SLL (Sierra Leonean leone) still work as base or in symbols for dates when they were published. As the base of /api/latest, they return their last published day.

GET https://theratesapi.com/api/2025-02-30
curl "https://theratesapi.com/api/2025-02-30"
const res = await fetch('https://theratesapi.com/api/2025-02-30')
const data = await res.json()
import requests

data = requests.get('https://theratesapi.com/api/2025-02-30').json()

Response 400

{
  "error": "Invalid date"
}

Currencies

The 151 currencies on the latest day. Any of them can be the base.

  • AED UAE dirham
  • AFN Afghan afghani
  • ALL Albanian lek
  • AMD Armenian dram
  • AOA Angolan kwanza
  • ARS Argentine peso
  • AUD Australian dollar
  • AWG Aruban florin
  • AZN Azerbaijani manat
  • BAM Bosnia and Herzegovina convertible mark
  • BBD Barbados dollar
  • BDT Bangladeshi taka
  • BHD Bahraini dinar
  • BIF Burundian franc
  • BMD Bermudian dollar
  • BND Brunei dollar
  • BOB Bolivian boliviano
  • BRL Brazilian real
  • BSD Bahamian dollar
  • BTN Bhutanese ngultrum
  • BWP Botswana pula
  • BZD Belize dollar
  • CAD Canadian dollar
  • CDF Congolese franc
  • CHF Swiss franc
  • CLP Chilean peso
  • CNY Chinese yuan renminbi
  • COP Colombian peso
  • CRC Costa Rican colón
  • CUP Cuban peso
  • CVE Cape Verdean escudo
  • CZK Czech koruna
  • DJF Djiboutian franc
  • DKK Danish krone
  • DOP Dominican peso
  • DZD Algerian dinar
  • EGP Egyptian pound
  • ERN Eritrean nakfa
  • ETB Ethiopian birr
  • EUR Euro
  • FJD Fiji dollar
  • FKP Falkland Islands pound
  • GBP Pound sterling
  • GEL Georgian lari
  • GHS Ghanaian cedi
  • GIP Gibraltar pound
  • GMD Gambian dalasi
  • GNF Guinean franc
  • GTQ Guatemalan quetzal
  • GYD Guyanese dollar
  • HKD Hong Kong dollar
  • HNL Honduran lempira
  • HTG Haitian gourde
  • HUF Hungarian forint
  • IDR Indonesian rupiah
  • ILS Israeli shekel
  • INR Indian rupee
  • IQD Iraqi dinar
  • ISK Icelandic krona
  • JMD Jamaican dollar
  • JOD Jordanian dinar
  • JPY Japanese yen
  • KES Kenyan shilling
  • KGS Kyrgyz som
  • KHR Cambodian riel
  • KMF Comorian franc
  • KRW South Korean won
  • KWD Kuwaiti dinar
  • KYD Cayman Islands dollar
  • KZT Kazakhstani tenge
  • LAK Lao kip
  • LBP Lebanese pound
  • LKR Sri Lankan rupee
  • LRD Liberian dollar
  • LSL Lesotho loti
  • LYD Libyan dinar
  • MAD Moroccan dirham
  • MDL Moldovan leu
  • MGA Malagasy ariary
  • MKD Macedonian denar
  • MMK Myanmar kyat
  • MNT Mongolian tugrik
  • MOP Macanese pataca
  • MRU Mauritanian ouguiya
  • MUR Mauritian rupee
  • MVR Maldivian rufiyaa
  • MWK Malawian kwacha
  • MXN Mexican peso
  • MYR Malaysian ringgit
  • MZN Mozambican metical
  • NAD Namibian dollar
  • NGN Nigerian naira
  • NIO Nicaraguan córdoba
  • NOK Norwegian krone
  • NPR Nepalese rupee
  • NZD New Zealand dollar
  • OMR Omani rial
  • PAB Panamanian balboa
  • PEN Peruvian sol
  • PGK Papua New Guinean kina
  • PHP Philippine peso
  • PKR Pakistani rupee
  • PLN Polish zloty
  • PYG Paraguayan guaraní
  • QAR Qatari riyal
  • RON Romanian leu
  • RSD Serbian dinar
  • RWF Rwandan franc
  • SAR Saudi riyal
  • SBD Solomon Islands dollar
  • SCR Seychellois rupee
  • SDG Sudanese pound
  • SEK Swedish krona
  • SGD Singapore dollar
  • SHP Saint Helena pound
  • SLE Sierra Leonean leone
  • SOS Somali shilling
  • SRD Surinamese dollar
  • SSP South Sudanese pound
  • STN São Tomé and Príncipe dobra
  • SVC Salvadoran colón
  • SYP Syrian pound
  • SZL Swazi lilangeni
  • THB Thai baht
  • TJS Tajikistani somoni
  • TMT Turkmenistani manat
  • TND Tunisian dinar
  • TOP Tongan pa'anga
  • TRY Turkish lira
  • TTD Trinidad and Tobago dollar
  • TWD New Taiwan dollar
  • TZS Tanzanian shilling
  • UAH Ukrainian hryvnia
  • UGX Ugandan shilling
  • USD US dollar
  • UYU Uruguayan peso
  • UZS Uzbekistani som
  • VES Venezuelan bolívar soberano
  • VND Vietnamese dong
  • VUV Vanuatu vatu
  • WST Samoan tala
  • XAF Central African CFA franc
  • XCD East Caribbean dollar
  • XCG Caribbean guilder
  • XDR IMF special drawing rights
  • XOF West African CFA franc
  • XPF CFP franc
  • YER Yemeni rial
  • ZAR South African rand
  • ZMW Zambian kwacha
  • ZWG Zimbabwe gold

Fair use

There are no keys or rate limits today. Help keep it that way:

  • Cache responses. Rates change once per working day, and responses carry Cache-Control: public, max-age=300.
  • Don't request more often than you need to. Traffic that harms the service for others may be blocked.

The service comes with no warranty. See the terms of use.