The 10 Best Free Currency APIs in 2026: Free Exchange Rate and Converter APIs, Ranked

Reviewed by Madhushan, Fintech Developer — June 2026
Free currency exchange

Short answer: for most projects the best free currency API in 2026 is one that gives you real-time mid-market rates, a free tier you can test against, and no credit card at signup. This guide compares 10 of them — exchange rate APIs and currency converter APIs alike — on the numbers that matter: real free-tier limits, how often rates refresh, where the data comes from, and which ship official SDKs.

If you need exchange rate data in your application, your options range from free-with-caveats to expensive-with-everything. Most developers start by searching "free currency API" and end up with a service that caps at 100 requests per month, requires a credit card for signup, or returns stale data cached from yesterday. Then they outgrow it, switch to a paid service, and rewrite their integration.

This guide ranks the 10 best currency exchange APIs available to developers in 2026, compares their free tiers side by side, and explains why AllRatesToday is the best option for most use cases: real-time mid-market rates for 160+ currencies, sourced from institutional foreign exchange market data, with official SDKs and a free tier to start.

Just want a working key without the comparison shopping? Grab a free currency API key — Free tier, real-time rates, no credit card. For the full endpoint picture, including the keyless official-rate endpoint, see the exchange rate API overview.

Note: this guide covers live market rates. If you need the official rate a central bank published — for accounting, tax, or contracts — that is a different product with different winners: see our central bank exchange rate API ranking.

What Is a Currency Exchange API?

A currency exchange API is a web service that returns live or historical exchange rate data over HTTPS in a machine-readable format — usually JSON. Your application sends a request (e.g. "USD to EUR"), and the API responds with the current mid-market rate pulled from its data feeds. Instead of maintaining your own pipeline of bank feeds, FX aggregators, and exchange connections, you integrate one REST endpoint and let the provider handle the data plumbing.

Developers typically reach for a currency API to power:

Comparing Free Currency APIs in 2026

Here is an honest comparison of what is available:

API Free Tier Currencies Update Frequency Credit Card
AllRatesToday Free 160+ Real-time (60s) No
CurrencyFreaks 1,000 req/month 1,000+ Daily (free) No
ExchangeRate-API 1,500 req/month 161 Daily Yes (for upgrades)
Open Exchange Rates 1,000 req/month 200+ Hourly Yes
CurrencyLayer 100 req/month (non-commercial) 168 Daily Yes
XE Free trial 170+ Up to 60s Yes
Frankfurter Unlimited 165 (v2) Daily (official fixings) No
CurrencyAPI 300 req/month (private use) 170+ Daily Yes
Fixer.io 100 req/month (non-commercial) 170+ Hourly Yes
Alpha Vantage 25 req/day Multi-asset Daily No
ExchangeRate.host Free plan 168+ Daily No

The key differentiators for AllRatesToday: real-time rates updated every 60 seconds (not daily), mid-market rates sourced from institutional foreign exchange market data, and official SDKs for JavaScript, Python, PHP, Go and Rust.

The 10 Best Currency Exchange APIs in 2026, Ranked

2. CurrencyFreaks

Covers 1,000+ symbols including fiats, metals, and hundreds of cryptocurrencies. Update frequency ranges from 24 hours on the free plan down to 60 seconds on the Professional tier. A solid all-rounder if breadth of crypto coverage matters more than depth of FX sourcing.

3. Fixer

Delivers FX rates through a clean JSON API, with historical data going back to 1999 and sourcing aligned with the European Central Bank. The free plan is capped at 100 calls/month with hourly updates — suitable mainly for prototypes.

4. ExchangeRate-API

Developer-friendly API with 161 currencies and a 1,500 request/month free tier. Paid plans bring hourly and 5-minute updates. Straightforward to integrate and well-documented.

5. Open Exchange Rates

A long-running provider with 200+ currencies and a large ecosystem of open-source client libraries. The free tier is hourly-updated and capped at 1,000 requests.

6. CurrencyLayer

Part of the APILayer network; 168 currencies and metals with a familiar endpoint structure. Free tier is limited to 100 calls/month.

7. Frankfurter

Open source (MIT), keyless and unlimited. Its v1 API serves the European Central Bank's daily reference rates for about 30 currencies; v2 combines official rates from 105 providers into 165 currencies. That makes it the right pick when you need free volume and can live with one fixing a day. No real-time rates, no weekend data, no support. If you start there and later need live rates or more currencies, AllRatesToday serves the same ECB table keyless at /api/open/central-bank/ecb and a Frankfurter-compatible endpoint at /api/compat/frankfurter/, so the switch is a base-URL change (see migration guides).

8. CurrencyAPI

Straightforward REST API covering 170+ fiat currencies and cryptocurrencies, with sandbox access on paid tiers and 60-second updates at higher plans.

9. Alpha Vantage

Broader market-data API covering stocks, forex, crypto, ETFs, and commodities, plus 60+ technical indicators. Rate limits on the free tier are low but cross-asset coverage is unmatched in this list.

10. ExchangeRate.host

Simple, fast forex and crypto API with 19 years of historical data, 168+ symbols, and a free plan. Paid tiers unlock higher request limits and faster updates.

Free Currency API Without an API Key

Some of the data behind AllRatesToday is open and needs no key, no signup and no quota. These endpoints are the quickest way to get a working rate into a script, a spreadsheet or a browser page. The ECB endpoints (/api/open/latest/{BASE} and /api/compat/) may be used commercially with a visible link to allratestoday.com; the central-bank tables are for non-commercial use without a key (see the terms):

curl "https://allratestoday.com/api/open/central-bank/ecb"
# {"bank":"ecb","rate_date":"2026-10-19","cadence":"daily",
#  "rates":[{"base":"EUR","quote":"USD","type":"reference","value":1.1225}, ...]}

What the keyless endpoints do not give you is real-time market rates: central banks publish once a day. For a live mid-market feed you need a key, and that is where the free tier and the exchange rate API start.

More detail: 7 free currency APIs without a key compared, open-source currency converter APIs you can self-host, and a free currency converter API for JavaScript with browser code.

How to Choose the Right API

Getting Started in 30 Seconds

Sign up at allratestoday.com/register to get your free API key.

Fetch exchange rates

curl -X GET "https://allratestoday.com/api/v1/rates?source=USD&target=EUR" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response:

{
  "source": "USD",
  "target": "EUR",
  "rate": 0.9234,
  "time": "2026-04-09T12:00:00Z"
}

Get multiple currency pairs

curl -X GET "https://allratestoday.com/api/v1/rates?source=USD" \
  -H "Authorization: Bearer YOUR_API_KEY"

Returns rates for all available target currencies against USD.

Historical rates (paid plans)

curl -X GET "https://allratestoday.com/api/v1/rates?source=USD&target=EUR&from=2026-01-01&to=2026-03-31" \
  -H "Authorization: Bearer YOUR_API_KEY"

Historical rates are useful for financial reporting, tax calculations, and charting exchange rate trends over time.

Using It as a Currency Converter API

Fetching a rate and converting an amount are different jobs. Most APIs give you the rate and leave you to multiply — fine until you are doing it in three places and one of them rounds differently. A currency converter API does the arithmetic server-side and hands back the figure.

Add amount to the rates call and you get the conversion instead of the raw rate:

curl "https://allratestoday.com/api/v1/rates?source=USD&target=EUR&amount=1000" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "from": { "currency": "USD", "amount": 1000 },
  "to":   { "currency": "EUR", "amount": 923.4 },
  "rate": 0.9234,
  "source": "mid-market"
}

Both the rate and the converted amount come back, so you can show the customer the figure and still display or audit the rate it came from. Leave amount off and the endpoint returns the plain rate exactly as before — the same key, the same endpoint, no separate integration.

For a converter widget you usually want one call per rate refresh rather than one per keystroke: fetch the rate once, convert locally as the user types, and re-fetch on an interval. That keeps a busy converter inside a small free tier.

Official SDKs

Unlike most currency APIs that leave you writing raw HTTP calls, AllRatesToday provides official SDKs for JavaScript, Python, PHP, Go and Rust, plus a React component and central-bank packages. The three most used are below; the SDK overview covers all of them with install commands and minimum versions.

JavaScript / TypeScript

npm install @allratestoday/sdk
import AllRatesToday from '@allratestoday/sdk';

const client = new AllRatesToday('YOUR_API_KEY');

// Get a single rate
const rate = await client.getRate('USD', 'EUR');
console.log(`1 USD = ${rate} EUR`);

// Convert an amount
const result = await client.convert('USD', 'EUR', 1000);
console.log(`$1,000 = €${result.result}`);

// Historical rates
const history = await client.getHistoricalRates('USD', 'EUR', '30d');
history.rates.forEach(point => {
  console.log(`${point.time}: ${point.rate}`);
});

npm: @allratestoday/sdk — View on GitHub

Python

pip install allratestoday
from allratestoday import AllRatesToday

client = AllRatesToday("YOUR_API_KEY")

# Get exchange rate
rate = client.get_rate("USD", "EUR")
print(f"1 USD = {rate} EUR")

# Convert amount
result = client.convert("USD", "EUR", 1000)
print(f"$1,000 = €{result['result']}")

# Historical rates
history = client.get_historical_rates("USD", "EUR", "30d")
for point in history["rates"]:
    print(f"{point['time']}: {point['rate']}")

PyPI: allratestoday — View on GitHub

PHP

composer require allratestoday/sdk
use AllRatesToday\AllRatesToday;

$client = new AllRatesToday('YOUR_API_KEY');

// Get exchange rate
$rate = $client->getRate('USD', 'EUR');
echo "1 USD = {$rate[0]['rate']} EUR\n";

// Convert amount
$result = $client->convert('USD', 'EUR', 100);
echo "$100 = €{$result['result']}\n";

// Historical rates
$history = $client->getHistoricalRates('USD', 'EUR', '30d');
foreach ($history['rates'] as $point) {
    echo "{$point['time']}: {$point['rate']}\n";
}

Packagist: allratestoday/sdk — View on GitHub

React Price Display Component

A drop-in React component that shows prices in multiple currencies. The API key stays on your server: a small backend route fetches the rate and caches it for a minute, and the component calls that route.

// server.js (Express): holds the key, called by your frontend
app.get('/api/fx', async (req, res) => {
  const { from, to } = req.query;
  const r = await fetch(
    `https://allratestoday.com/api/v1/rates?source=${from}&target=${to}`,
    { headers: { Authorization: `Bearer ${process.env.ALLRATES_API_KEY}` } }
  );
  const [row] = await r.json(); // [{ rate, source, target, time }]
  res.set('Cache-Control', 'public, max-age=60').json({ rate: row.rate });
});
import { useState, useEffect } from 'react';

function useExchangeRate(from, to) {
  const [rate, setRate] = useState(null);

  useEffect(() => {
    // Calls your own backend route, never allratestoday.com with a key
    fetch(`/api/fx?from=${from}&to=${to}`)
      .then(r => r.json())
      .then(data => setRate(data.rate));
  }, [from, to]);

  return rate;
}

function PriceDisplay({ amount, from, to }) {
  const rate = useExchangeRate(from, to);

  if (!rate) return <span>Loading...</span>;

  return (
    <span>
      {(amount * rate).toFixed(2)} {to}
    </span>
  );
}

// Usage: <PriceDisplay amount={99.99} from="USD" to="EUR" />

Why AllRatesToday Over Other APIs?

Data Source and Accuracy

AllRatesToday sources its exchange rates from institutional foreign exchange market data. These are mid-market rates — the real exchange rate between currencies before any bank markup is applied.

Unlike APIs that only provide ECB reference rates (published once daily at 16:00 CET for ~30 currencies), AllRatesToday delivers live rates updated every 60 seconds for 160+ currencies.

Pricing

AllRatesToday offers multiple plans from free to high-volume. The free plan is enough to evaluate the API for personal, non-commercial use. Production and commercial apps (price displays, periodic rate fetching, financial dashboards) start on the Small plan at €4.99/month for 5,000 requests. View plans and pricing.

Quick Reference

FAQs

What is the best free currency exchange rate API?

It depends on what you need from the free tier. For ongoing free volume, Frankfurter (unlimited, daily ECB rates) and ExchangeRate-API (1,500 requests/month, daily updates) give the most. For real-time rates, AllRatesToday offers a free tier (no card) to evaluate real-time mid-market rates for 160+ currencies with official SDKs, then paid plans from €4.99/month.

How do I start with a free currency API?

Sign up for the provider's free plan, get an API key, and send a request to the latest-rates endpoint using curl or your language's HTTP client.

Can I get both real-time and historical rates?

Yes — quality APIs expose both. Historical endpoints usually accept a YYYY-MM-DD date parameter. See how to handle base currency conversion for working with historical data across bases.

Is there a free currency converter API?

Yes. AllRatesToday converts server-side: pass amount alongside source and target and the response carries both the converted figure and the rate used. It is the same endpoint and the same free tier as a plain rate lookup, so a converter needs no separate integration.

Is there a free currency API without an API key?

Yes, for official rates. AllRatesToday's open endpoints return the latest table from any of 122 central banks keyless, for example https://allratestoday.com/api/open/central-bank/ecb, and Frankfurter is keyless for ECB rates. Real-time market rates need a free key because the feed is metered.

How many currencies does AllRatesToday support?

Over 160, with real-time mid-market rates refreshed every 60 seconds.

Does AllRatesToday require a credit card?

No. The free plan needs only an email address, no card. Paid plans start at €4.99/month.

Does AllRatesToday have official SDKs?

Yes. JavaScript/TypeScript, Python, PHP, Go and Rust, plus a React component and an MCP server for AI agents.

Do free tiers support cryptocurrency?

Some do (CurrencyFreaks, CurrencyAPI). Always check the documentation for supported symbols before committing.

How often are rates updated?

Free tiers typically refresh daily or hourly. Paid tiers drop to 60 seconds or faster. AllRatesToday updates every 60 seconds — full details in how often are exchange rates updated.

Start Building with Real-Time Exchange Rates

Get your free API key in 30 seconds. 160+ currencies, real-time mid-market rates. Endpoints, live table and pricing are on the exchange rate API overview.

Get Your Free API Key

Related Articles