COMPARISON GUIDE

Free Currency Exchange Rate API Comparison 2026

Compare exchange rate APIs side-by-side. Convert between fiat currencies and cryptocurrencies programmatically. Find the best free currency API for your project.

Last updated: March 2026 | 6 providers compared

What Developers Build with Exchange Rate APIs

Currency APIs power everything from e-commerce checkout flows to fintech dashboards. Here are the most common use cases:

🛒

E-Commerce Pricing

Display product prices in the visitor's local currency. Auto-convert at checkout for international customers.

💱

Currency Converters

Build standalone currency converter tools or embed conversion widgets in apps and websites.

📊

Financial Dashboards

Track exchange rates over time. Show historical trends, alerts on rate changes, and portfolio valuations.

🏦

Accounting & Invoicing

Generate invoices in multiple currencies. Record historical rates for tax compliance and auditing.

🌍

Travel Apps

Help travelers estimate costs in foreign currencies. Expense tracking with automatic conversion at the rate of the day.

🤖

Trading Bots & Alerts

Monitor forex rates for arbitrage opportunities. Trigger alerts when a currency pair crosses a threshold.

How Exchange Rate APIs Work

Most exchange rate APIs follow a simple pattern: request a base currency, get rates for all target currencies.

1
Send HTTP GET request with base currency
2
API returns rates relative to your base
3
Multiply amount by rate to convert
4
Cache result to minimize API calls
// Example: Convert 100 USD to EUR const response = await fetch('https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR'); const data = await response.json(); const eurAmount = 100 * data.rates.EUR; // Result: ~92 EUR (varies with current rate)

Quick Comparison

Feature matrix across all 6 exchange rate APIs. Scroll horizontally on mobile.

Provider Free Tier API Key Currencies Base Currencies Historical Update Frequency
Frankfurter FREE Unlimited No key needed ~30 (ECB currencies) Any ✓ Since 1999 Daily (16:00 CET)
ExchangeRate-API FREEMIUM 1,500 req/mo Required 161 Any ✗ Paid only Daily
Open Exchange Rates FREEMIUM 1,000 req/mo Required 200+ USD only (free) ✗ Paid only Hourly
FreeCurrencyAPI FREEMIUM 5,000 req/mo Required 32 Any ✓ Since 1999 Every 10 min
AbstractAPI FREEMIUM 1,000 req/mo Required 60+ (fiat + crypto) Any ✓ Included Every 60 sec
Frostbyte Crypto 200 CREDITS 200 credits No key needed 50+ crypto USD ✗ Latest only Real-time

Provider Deep Dive

Detailed breakdown of each exchange rate API with pros, cons, and best use cases.

Frankfurter

Free, open-source, ECB-powered exchange rates

Unlimited requests No key required 1999+ historical
  • No API key or signup
  • Unlimited free usage
  • Historical data since 1999
  • Open source, self-hostable
  • Works client-side in browsers
  • ~30 currencies only (ECB)
  • Daily updates only
  • No crypto currencies
  • No SLA or guaranteed uptime

ExchangeRate-API

Reliable rates API with 15+ years of operation

1,500/mo free 161 currencies 99.99% uptime
  • 161 currencies supported
  • Pair conversion endpoint
  • 15+ years running, very stable
  • All base currencies on free tier
  • 1,500 req/mo on free tier
  • No historical data on free
  • API key required
  • No crypto currencies

Open Exchange Rates

200+ currencies with community integrations

1,000/mo free 200+ currencies Hourly updates
  • 200+ currencies (most of any free tier)
  • Hourly updates
  • 200+ community integrations
  • Time-series API (paid)
  • USD base only on free tier
  • 1,000 req/mo limit
  • Historical data paid only
  • App ID required

FreeCurrencyAPI

Generous free tier with historical data included

5,000/mo free 32 currencies 10 min updates
  • 5,000 req/mo (most generous)
  • Historical data included free
  • 10-minute update frequency
  • Any base currency
  • Only 32 currencies
  • API key required
  • Less established service
  • No crypto currencies

AbstractAPI

Fiat + crypto currencies in one API

1,000/mo free 60+ currencies Fiat + Crypto
  • Fiat AND crypto in one API
  • 60-second update frequency
  • Historical data included
  • Clean, simple API design
  • 1,000 req/mo limit
  • API key required
  • Fewer currencies than OXR
  • Limited documentation

Frostbyte Crypto Prices

Real-time crypto rates, no signup required

200 free credits 50+ cryptos Real-time updates
  • No API key or signup needed
  • Real-time crypto prices
  • 50+ cryptocurrencies
  • Simple REST endpoint
  • Crypto only, no fiat pairs
  • 200 credit limit
  • No historical data
  • USD denomination only

Fiat vs Crypto Exchange Rate APIs

Two different worlds of currency data. Choose based on what you're building.

Feature Fiat APIs Crypto APIs
Data sourceCentral banks (ECB, Fed)Exchange aggregators (Binance, Coinbase)
Update frequencyHourly to dailyReal-time (seconds)
Market hoursWeekdays only (forex market)24/7/365
VolatilityLow (0.1-2% daily)High (5-20% swings common)
Currencies~180 fiat currenciesThousands of tokens
Typical free tier1,000-5,000 req/mo10,000-50,000 req/mo
Best forE-commerce, invoicing, travel appsTrading bots, DeFi, portfolio trackers

Code Examples

Copy-paste examples for the most popular exchange rate APIs. All examples work with free tiers.

Frankfurter — No API Key Required

cURL
JavaScript
Python
# Latest rates (USD base)
curl "https://api.frankfurter.dev/v1/latest?base=USD"

# Specific currencies only
curl "https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP,JPY"

# Historical rate for a specific date
curl "https://api.frankfurter.dev/v1/2025-01-15?base=USD&symbols=EUR"

# Time series (date range)
curl "https://api.frankfurter.dev/v1/2025-01-01..2025-01-31?base=USD&symbols=EUR"
// Latest USD rates — no API key needed
const res = await fetch('https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP,JPY');
const data = await res.json();

console.log(`1 USD = ${data.rates.EUR} EUR`);
console.log(`1 USD = ${data.rates.GBP} GBP`);
console.log(`1 USD = ${data.rates.JPY} JPY`);

// Convert 250 USD to EUR
const eurAmount = 250 * data.rates.EUR;
console.log(`250 USD = ${eurAmount.toFixed(2)} EUR`);
import requests

# Latest rates
r = requests.get('https://api.frankfurter.dev/v1/latest', params={
    'base': 'USD',
    'symbols': 'EUR,GBP,JPY'
})
data = r.json()

for currency, rate in data['rates'].items():
    print(f"1 USD = {rate} {currency}")

# Historical rate
r = requests.get('https://api.frankfurter.dev/v1/2025-06-15', params={
    'base': 'USD', 'symbols': 'EUR'
})
print(f"Historical: {r.json()}")

ExchangeRate-API

cURL
JavaScript
Python
# Latest rates for USD
curl "https://v6.exchangerate-api.com/v6/YOUR_KEY/latest/USD"

# Pair conversion: USD to EUR
curl "https://v6.exchangerate-api.com/v6/YOUR_KEY/pair/USD/EUR"

# Pair conversion with amount
curl "https://v6.exchangerate-api.com/v6/YOUR_KEY/pair/USD/EUR/250"
const API_KEY = 'YOUR_KEY'; // Get free at exchangerate-api.com

// Latest rates
const res = await fetch(`https://v6.exchangerate-api.com/v6/${API_KEY}/latest/USD`);
const data = await res.json();

console.log(`1 USD = ${data.conversion_rates.EUR} EUR`);
console.log(`Last updated: ${data.time_last_update_utc}`);

// Direct pair conversion with amount
const pair = await fetch(`https://v6.exchangerate-api.com/v6/${API_KEY}/pair/USD/EUR/250`);
const result = await pair.json();
console.log(`250 USD = ${result.conversion_result} EUR`);
import requests

API_KEY = 'YOUR_KEY'  # Get free at exchangerate-api.com

# Latest rates
r = requests.get(f'https://v6.exchangerate-api.com/v6/{API_KEY}/latest/USD')
data = r.json()

print(f"1 USD = {data['conversion_rates']['EUR']} EUR")
print(f"1 USD = {data['conversion_rates']['GBP']} GBP")

# Pair conversion
r = requests.get(f'https://v6.exchangerate-api.com/v6/{API_KEY}/pair/USD/EUR/250')
print(f"250 USD = {r.json()['conversion_result']} EUR")

Frostbyte Crypto Prices — No API Key Required

cURL
JavaScript
Python
# Get Bitcoin price in USD
curl "https://api-catalog-three.vercel.app/v1/crypto-feeds/api/price/BTC"

# Get Ethereum price
curl "https://api-catalog-three.vercel.app/v1/crypto-feeds/api/price/ETH"

# Get Solana price
curl "https://api-catalog-three.vercel.app/v1/crypto-feeds/api/price/SOL"
// Get crypto prices — no API key needed
const btc = await fetch('https://api-catalog-three.vercel.app/v1/crypto-feeds/api/price/BTC');
const eth = await fetch('https://api-catalog-three.vercel.app/v1/crypto-feeds/api/price/ETH');

const btcData = await btc.json();
const ethData = await eth.json();

console.log(`BTC: $${parseFloat(btcData.price).toLocaleString()}`);
console.log(`ETH: $${parseFloat(ethData.price).toLocaleString()}`);

// Calculate portfolio value
const portfolio = { BTC: 0.5, ETH: 10 };
const total = (0.5 * parseFloat(btcData.price)) + (10 * parseFloat(ethData.price));
console.log(`Portfolio: $${total.toLocaleString()}`);
import requests

# Get crypto prices — no API key needed
symbols = ['BTC', 'ETH', 'SOL', 'DOGE']

for symbol in symbols:
    r = requests.get(f'https://api-catalog-three.vercel.app/v1/crypto-feeds/api/price/{symbol}')
    data = r.json()
    price = float(data['price'])
    print(f"{symbol}: ${price:,.2f}")

Live Currency Converter

Try it now — converts using real exchange rates from Frankfurter (fiat) or Frostbyte (crypto).


  

Pricing at Scale

What happens when you outgrow free tiers. Monthly cost for 10,000 requests/month:

Frankfurter
$0 /mo
Unlimited forever
Self-host for $0
ExchangeRate-API
$9.99 /mo
Lite plan: 30K req/mo
+ historical data
Open Exchange Rates
$12 /mo
Developer: 10K req/mo
+ all base currencies
FreeCurrencyAPI
$9.99 /mo
Basic: 50K req/mo
+ priority support
AbstractAPI
$9 /mo
Starter: 10K req/mo
+ time-series data
Frostbyte Crypto
$5 /mo
Top up via USDC
Pay per request

Which Exchange Rate API Should You Use?

Pick the right API based on your specific requirements.

🏗️ Side Project / Prototype

Use Frankfurter. No signup, no API key, unlimited requests. Perfect for MVPs and weekend projects. Works client-side.

🛒 E-Commerce / SaaS

Use ExchangeRate-API. 161 currencies, pair conversion endpoint, 15 years of reliability. Scale to paid when needed ($9.99/mo).

🌐 Maximum Currency Coverage

Use Open Exchange Rates. 200+ currencies including exotic ones. Best community integrations. USD base on free tier.

📈 Historical Data / Analytics

Use Frankfurter for free historical data since 1999. Or FreeCurrencyAPI for 5,000 free req/mo with historical included.

🪙 Crypto + Fiat Together

Use AbstractAPI for unified fiat+crypto in one API. Or combine Frankfurter (fiat) + Frostbyte (crypto) for zero-signup coverage.

⚡ Real-Time Crypto Prices

Use Frostbyte Crypto Prices. No signup, real-time data for 50+ cryptocurrencies. Simple REST API with instant responses.

Need Crypto Prices? Try Frostbyte Free

Real-time prices for BTC, ETH, SOL, and 50+ more cryptocurrencies. No API key needed. 200 free credits.

Get Free API Key → See Crypto API Comparison

Frequently Asked Questions

What is the best free currency exchange rate API?
For most projects, Frankfurter is the best free exchange rate API. It requires no API key, has no rate limits, supports historical data back to 1999, and uses European Central Bank data. For higher request volumes with more currencies, ExchangeRate-API supports 161 currencies. For crypto rates alongside fiat, Frostbyte Crypto Prices covers 50+ cryptocurrencies with 200 free credits.
Is there a free exchange rate API with no API key?
Yes. Frankfurter (api.frankfurter.dev) is completely free with no API key required. It sources data from the European Central Bank and has no documented rate limits. You can use it directly in browser-side JavaScript without exposing any credentials. Frostbyte Crypto Prices also requires no API key for crypto rates.
Which currency API has historical exchange rates for free?
Frankfurter offers free historical data back to January 1999 from the European Central Bank. FreeCurrencyAPI also includes historical data on its free tier. ExchangeRate-API and Open Exchange Rates restrict historical data to paid plans.
How do I convert currencies using an API?
Most exchange rate APIs return a rate relative to a base currency. To convert, multiply your amount by the exchange rate. For example, to convert 100 USD to EUR: fetch the USD-to-EUR rate (e.g., 0.92), then 100 * 0.92 = 92 EUR. Some APIs like ExchangeRate-API have dedicated pair conversion endpoints that handle the math for you.
What is the difference between fiat and crypto exchange rate APIs?
Fiat exchange rate APIs cover government-issued currencies (USD, EUR, GBP, JPY) and update hourly or daily. Crypto exchange rate APIs cover cryptocurrencies (BTC, ETH, SOL) and update in real-time since crypto markets trade 24/7. Some APIs like AbstractAPI cover both in one service.
How often do exchange rate APIs update?
Update frequency varies: Frankfurter updates daily at 16:00 CET when the ECB publishes rates. Open Exchange Rates updates hourly on the free tier, with 5-minute updates on the Unlimited plan ($97/month). AbstractAPI updates every 60 seconds. Crypto APIs like Frostbyte update in real-time.
Can I use a free exchange rate API in production?
Yes, but check the terms. Frankfurter is suitable for production use with reasonable traffic. ExchangeRate-API free tier is designed for personal projects. Open Exchange Rates free tier (1,000 req/month) works for low-traffic apps. For high-volume production use, you will likely need a paid plan.