Currency Exchange API for Developers

CurrencyRateAPI provides lightning-fast access to up-to-date and historical foreign exchange rates sourced directly from trusted central banks, including the European Central Bank.

Built for developers, our RESTful API delivers clean JSON responses and supports easy integration into websites, apps, or internal systems in minutes — with no unnecessary complexity.

GET https://currencyrateapi.com/api/latest?
    base=USD HTTP/1.1

{
    "success": true,
    "base": "usd",
    "date": "2026-01-18",
    "rates": {
        "GBP": 0.8820,
        "JPY": 132.36,
        "EUR": 0.8133
    },
    "last_update_unix": 1737214206
}

API Usage

Use this request to retrieve the full list of supported currencies with their corresponding 3-letter codes

GET https://currencyrateapi.com/api/codes HTTP/1.1

Use this request to get the latest exchange rates for GBP and JPY relative to USD

GET https://currencyrateapi.com/api/latest?base=USD&codes=GBP,JPY HTTP/1.1

Use this request to get historical exchange rates for USD, EUR, and CAD relative to GBP on May 25, 2020

GET https://currencyrateapi.com/api/2020-05-25?base=GBP&codes=USD,EUR,CAD HTTP/1.1

Programming Languages

CurrencyRateAPI can be integrated into any project and supports all major programming languages
Designed for flexibility and ease of use, our API fits naturally into web, mobile, and backend applications — regardless of your tech stack
$baseCurrency = 'USD';
$codes = 'EUR,CAD,JPY';

$url = 'https://currencyrateapi.com/api/latest?codes=' . $codes .
       '&base=' . $baseCurrency;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$jsonResponse = curl_exec($ch);
curl_close($ch);

$objResponse = json_decode($jsonResponse);
echo "1 " . $baseCurrency . " is " . $objResponse->rates->EUR . " Euros";
/* Outputs 1 USD is 0.8133 Euros */
base = 'USD'
codes = 'EUR,CAD,JPY'

url = (
    f'https://currencyrateapi.com/api/latest?codes={codes}'
    f'&base={base}'
)

response = requests.get(url)
data = response.json()

print(f"1 {base} is {data['rates']['EUR']} Euros")
const base = 'USD';
const codes = 'EUR,CAD,JPY';

const url = `https://currencyrateapi.com/api/latest?codes=${codes}` +
            `&base=${base}`;

(async () => {
  try {
    const res = await fetch(url);
    const data = await res.json();
    console.log(
      `1 ${base} is ${data.rates.EUR} Euros`
    );
  } catch (err) {
    console.error('Error:', err);
  }
})();
base = 'USD'
codes = 'EUR,CAD,JPY'

url = URI(
  "https://currencyrateapi.com/api/latest?codes=#{codes}" \
  "&base=#{base}"
)

response = Net::HTTP.get(url)
data = JSON.parse(response)

puts "1 #{base} is #{data['rates']['EUR']} Euros"
String base = "USD";
String codes = "EUR,CAD,JPY";
String url = "https://currencyrateapi.com/api/latest?codes=" +
             codes + "&base=" + base;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(url))
    .build();

HttpResponse<String> response =
    client.send(request, HttpResponse.BodyHandlers.ofString());

JSONObject data = new JSONObject(response.body());
System.out.println(
    "1 " + base + " is " +
    data.getJSONObject("rates").getDouble("EUR") + " Euros"
);
base := "USD"
codes := "EUR,CAD,JPY"
url := "https://currencyrateapi.com/api/latest?codes=" +
       codes + "&base=" + base

resp, err := http.Get(url)
if err != nil {
    panic(err)
}
defer resp.Body.Close()

var data struct {
    Rates map[string]float64 `json:"rates"`
}

if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
    panic(err)
}

fmt.Printf(
    "1 %s is %.6f Euros\n",
    base, data.Rates["EUR"],
)
string base = "USD";
string codes = "EUR,CAD,JPY";

string url =
    $"https://currencyrateapi.com/api/latest?codes={codes}" +
    $"&base={base}";

using HttpClient client = new HttpClient();
string response = await client.GetStringAsync(url);

using JsonDocument doc = JsonDocument.Parse(response);
double eur = doc.RootElement
                .GetProperty("rates")
                .GetProperty("EUR")
                .GetDouble();

Console.WriteLine($"1 {base} is {eur} Euros");

Frequently Asked Questions

The most common questions about the CurrencyRateAPI, usage limits, uptime, and how to get started with your API key
What is CurrencyRateAPI and how does it work?
Currency Rate API is a fast and reliable RESTful service that delivers accurate exchange rates for 1131 global currencies in JSON format. Designed for developers, startups, and established businesses alike, it offers a simple, efficient interface to access real-time and historical financial data — whether you're building internal tools, apps, or customer-facing platforms.
Who maintains and operates the Currency Rate API service?
Currency Rate API is fully developed, maintained, and operated by our team with a focus on delivering a stable and developer-friendly data interface. The service is built to meet the needs of startups, small businesses, and enterprise applications that require dependable access to currency exchange data.
What is the typical uptime and availability of the API?
Currency Rate API maintains a consistent uptime of 99.9%, based on a 12-month rolling average. The service is monitored 24/7 to ensure high availability, reliability, and uninterrupted access to currency exchange data.
Can I retrieve exchange rates for a specific date?
Yes, you can request historical exchange rates for any specific date starting from 1999-01-04 using the history endpoint. If data for the requested date is missing, the API will automatically return rates for the nearest earlier date (within an 8-day window).