Great experience with currency freaks…
Great experience with currency freaks so far, works well and easy to set up
Trusted By


















Trusted by teams building with real-time exchange rate data
Reliable currency data for trading workflows, internal tools, app integrations, and global pricing experiences.
Your first exchange rate request, in one line
No SDK, no OAuth dance, no sandbox environment. Authenticate with an API key as a URL parameter and you get clean JSON back.
curl 'https://api.currencyfreaks.com/v2.0/rates/latest?apikey=YOUR_API_KEY'{
"date": "2026-07-31 00:00:00+00",
"base": "USD",
"rates": {
"EUR": "0.867792",
"GBP": "0.742859",
"CAD": "1.4012",
"JPY": "160.2",
"BTC": "0.0000154502814578"
// ... 1026 currencies
}
}One call returns every supported currency at once — or pass &symbols=EUR,GBP,JPY to keep the response small, and &base=EUR to change the base currency on any paid plan.
Real-time exchange rate API
The exchange rates API returns mid-market rates for all 1,026 supported currencies from a single endpoint. Rates are sourced from established forex exchanges, cryptocurrency exchanges and national banks, then normalised into one consistent response format so you do not have to reconcile feeds yourself.
GET https://api.currencyfreaks.com/v2.0/rates/latest?apikey=YOUR_API_KEYUpdate frequency by plan
How often rates refresh depends on your plan, so you can match cost to how time-sensitive your application really is:
- Developer (free) — daily updates, USD base currency
- Starter — hourly updates, all base currencies
- Growth — 10-minute updates
- Professional and Enterprise — 60-second updates
Built for production
Every request is SSL encrypted on all plans, including the free tier. Geolocation-based routing keeps average latency at 138 ms worldwide, and responses are available in both JSON and XML so the API drops into existing systems without a translation layer.
Need rates for a handful of pairs rather than all 1,026? Filter with the symbols parameter. Need a base currency other than US dollars? Set base to any supported currency on a paid plan.
Currency converter API — convert any amount between any two currencies
Use the currency conversion API when you need a converted amount rather than a rate table. Pass the source currency, target currency and amount, and the API does the arithmetic server-side — no rate caching or rounding logic to maintain in your own code.
curl 'https://api.currencyfreaks.com/v2.0/convert/latest?apikey=YOUR_API_KEY\
&from=USD&to=EUR&amount=1000'This is the endpoint behind checkout flows that quote prices in a shopper's local currency, invoicing systems that settle in one currency while billing in another, and dashboards that normalise multi-currency revenue into a single reporting currency.
Because the same API currency converter works across all 1,026 supported currencies, cryptocurrency conversion works exactly like fiat — convert BTC to Japanese yen with the identical request shape.
Need conversion at a past date rather than today's rate? The historical conversion endpoint accepts a date parameter — see the section below.
Historical exchange rates API — data back to 1984
The historical exchange rates API serves end-of-day rates for any date from 28 November 1984 onward. Pass a date in YYYY-MM-DD format and get the same response shape as the live endpoint, so historical and current data flow through identical parsing code.
curl 'https://api.currencyfreaks.com/v2.0/rates/historical?apikey=YOUR_API_KEY\
&date=2015-08-24'Time series and fluctuation
For ranges rather than single dates, the time series endpoint returns rates across a start and end date in one request — the efficient way to build charts, run backtests or generate month-over-month reports without looping through hundreds of daily calls.
The fluctuation endpoint goes further, returning the opening rate, closing rate, absolute change and percentage change for a period. That is a single call for “how much did the Turkish lira move against the euro last quarter” rather than fetching two dates and computing the delta yourself.
Historical, time series and fluctuation endpoints are available on paid plans. Four decades of data means you can model currency behaviour across multiple financial cycles, not just recent history.
Forex API for FX rates and trading workflows
Traders and fintech teams generally want a forex API rather than a generic rate lookup — tight refresh intervals, dependable uptime and a response format that parses fast in a hot path. CurrencyFreaks serves FX rates for 166 fiat currencies with 60-second updates on Professional and Enterprise plans.
The foreign exchange rates API covers every major and minor pair, plus 4 precious metals for teams tracking gold and silver alongside currencies. Rates come from established forex exchanges and national banks, so pricing reflects genuine market mid-points rather than a single venue’s book.
Typical uses of the FX API:
- Live FX reference rates inside trading dashboards
- Automated alerts when a pair crosses a threshold
- Treasury and hedging models that need consistent mid-market marks
- Backtesting strategies against four decades of historical FX data
Geolocation-based routing keeps latency at 138 ms globally, which matters when rates feed a decision rather than a display.
Currency data API for teams working at volume
If you are pulling rates into a warehouse, a pricing engine or an analytics pipeline, you need a currency data API judged on consistency and quota headroom rather than on having a nice widget.
The exchange rates data API returns all 1,026 currencies in one response, so a single scheduled call can populate an entire rates table. Plans scale from 15,000 calls a month on Starter to 550,000 on Professional, with custom volume available on Enterprise.
Built for pipelines
- Stable response schema — the same structure across live, historical and time series endpoints
- JSON and XML — no format shimming for older systems
- Bulk historical loads — the time series endpoint backfills date ranges in one request
- Usage notifications — alerts at 80%, 90% and 100% of quota, so a pipeline does not fail silently
- No daily or hourly throttle — only the monthly plan quota applies, so batch jobs run at whatever pace suits you
IP-to-currency detection is also available, mapping a visitor’s address to their local currency for automatic localisation.
1,026 supported currencies
Coverage spans 166 fiat currencies, 856 cryptocurrencies and precious metals — every ISO 4217 code in active use, the major and long-tail crypto assets, and gold, silver, platinum and palladium.
Query /v2.0/supported-currencies to fetch the full list programmatically, or /v2.0/currency-symbols for symbols and formatting metadata.
Integrate in your language
Working examples for every endpoint in eight languages. Copy, paste your API key, run.
curl "https://api.currencyfreaks.com/v2.0/rates/latest?apikey=YOUR_API_KEY&symbols=EUR,GBP,JPY"import requests
url = "https://api.currencyfreaks.com/v2.0/rates/latest"
params = {"apikey": "YOUR_API_KEY", "symbols": "EUR,GBP,JPY"}
response = requests.get(url, params=params)
data = response.json()
print(data["rates"])
# {"EUR": "0.867792", "GBP": "0.742859", "JPY": "160.2"}const url = new URL("https://api.currencyfreaks.com/v2.0/rates/latest");
url.searchParams.set("apikey", "YOUR_API_KEY");
url.searchParams.set("symbols", "EUR,GBP,JPY");
fetch(url)
.then(res => res.json())
.then(data => console.log(data.rates));
// {EUR: "0.867792", GBP: "0.742859", JPY: "160.2"}const https = require("https");
const url = "https://api.currencyfreaks.com/v2.0/rates/latest" +
"?apikey=YOUR_API_KEY&symbols=EUR,GBP,JPY";
https.get(url, (res) => {
let body = "";
res.on("data", chunk => body += chunk);
res.on("end", () => console.log(JSON.parse(body).rates));
});<?php
$url = "https://api.currencyfreaks.com/v2.0/rates/latest"
. "?apikey=YOUR_API_KEY&symbols=EUR,GBP,JPY";
$response = file_get_contents($url);
$data = json_decode($response, true);
print_r($data["rates"]);
// ["EUR" => "0.867792", "GBP" => "0.742859", "JPY" => "160.2"]require "net/http"
require "json"
uri = URI("https://api.currencyfreaks.com/v2.0/rates/latest" "?apikey=YOUR_API_KEY&symbols=EUR,GBP,JPY")
response = Net::HTTP.get(uri)
data = JSON.parse(response)
puts data["rates"]
# {"EUR"=>"0.867792", "GBP"=>"0.742859", "JPY"=>"160.2"}import java.net.URI;
import java.net.http.*;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.currencyfreaks.com/v2.0/rates/latest" +
"?apikey=YOUR_API_KEY&symbols=EUR,GBP,JPY"))
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.currencyfreaks.com/v2.0/rates/latest" +
"?apikey=YOUR_API_KEY&symbols=EUR,GBP,JPY"
resp, _ := http.Get(url)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]interface{}
json.Unmarshal(body, &data)
fmt.Println(data["rates"])
}Building on a specific stack? We have step-by-step guides for Python, JavaScript, Node.js, React, Vue, Django, Ruby on Rails, Go, WordPress, Shopify, Excel and Google Sheets.
Free exchange rate API, with room to grow
The free exchange rate API plan gives you 1,000 calls a month, rates for all 1,026 currencies, SSL on every request and both response formats — with no credit card and no trial expiry. It stays free.
| Plan | Calls/month | Updates | Adds |
|---|---|---|---|
| Developer — free | 1,000 | Daily | USD base, SSL, JSON & XML |
| Starter — $9.99 | 15,000 | Hourly | Historical rates, all base currencies, conversion |
| Growth — $49.99 | 150,000 | 10 minutes | IP-to-currency, premium support |
| Professional — $99.99 | 550,000 | 60 seconds | Time series, fluctuation endpoints |
| Enterprise | Custom | 60 seconds | Custom solutions, volume pricing |
No daily or hourly rate throttle on any plan — only the monthly quota, with email alerts at 80%, 90% and 100% of usage.
How CurrencyFreaks compares
Most teams evaluating a currency API are choosing between four or five providers with broadly similar core data. The differences that actually matter in production:
- ✓Currency coverage — 1,026 currencies including 856 crypto assets, where many competitors cover fiat only
- ✓Historical depth — back to 1984, a longer window than most providers offer
- ✓No throttling — monthly quota only, no per-second or per-hour rate limit to engineer around
- ✓Latency — 138 ms globally via geolocation-based routing
- ✓Price per call — 550,000 calls for $99.99 on Professional
Detailed comparisons
Frequently Asked Questions
Is there a free currency converter API?
Yes. CurrencyFreaks offers a free plan with 1,000 monthly API calls, rates for 1,026 currencies, SSL encryption and JSON/XML output — no credit card required.
What is the best free exchange rate API?
CurrencyFreaks provides rates for 1,026 currencies on a permanently free plan, with JSON and XML support and no credit card needed. Paid plans add historical data back to 1984, all base currencies and faster refresh intervals.
Does CurrencyFreaks have a free forex API?
Yes. The free Developer plan includes forex rates for 166 fiat currencies with daily updates, SSL-secured requests and USD as the base currency — no credit card required.
How often are exchange rates updated?
Refresh frequency depends on your plan: daily on Developer, hourly on Starter, every 10 minutes on Growth, and every 60 seconds on Professional and Enterprise.
What formats does the CurrencyFreaks API support?
The REST API returns both JSON and XML, making it straightforward to integrate with any language or framework.
How far back does the historical exchange rates API go?
To 28 November 1984. Pass any date in YYYY-MM-DD format to the historical endpoint, or use the time series endpoint to retrieve a full date range in a single request. Available on all paid plans.
Can I use CurrencyFreaks as a forex or FX API?
Yes. It covers 166 fiat currencies plus 4 precious metals, with 60-second updates on Professional and Enterprise plans and 138 ms average global latency — suitable for trading dashboards, FX reference rates and automated alerts.
Is there a rate limit on API requests?
There is no daily or hourly throttle — only your plan's monthly quota. You will get email notifications at 80%, 90% and 100% of usage, and on the free plan one notification when you reach your limit.
Can I change the base currency?
Yes, on any paid plan — set the base parameter to any of the 1,026 supported currencies. The free Developer plan uses USD as the base.