Skip to content
Free currency API

Free exchange rate API

Start with the fxapi free plan: 300 requests per month, latest and historical exchange rates, fluctuation and monthly averages for 190+ currencies, any base currency – without a credit card.

Price$0
Requests300 / mo
UpdatesDaily
CardNot needed

What’s included in the free plan

FeatureFree plan
Requests per month300
Rate limit10 requests per minute
Update frequencydaily
Latest exchange rates (/v1/latest)✓
Historical exchange rates since 1999 (/v1/historical)✓
Fluctuation between two dates (/v1/fluctuation)✓
Monthly, quarterly & yearly averages (/v1/average)✓
Supported currencies (/v1/currencies)✓
Quota status (/v1/status, free of charge)✓
Any base currency✓
190+ currencies incl. crypto and metals✓
HTTPS encryption✓
API keys1
Credit card requiredno

Need conversion, time series, hourly or 60-second updates? Paid plans start at $9.99/month – see pricing.

Get started in three steps

  1. Create a free account – no payment details needed.
  2. Copy your API key from the dashboard.
  3. Make your first request:
curl -G "https://api.fxapi.com/v1/latest" \
  -d base_currency=USD -d currencies=EUR,GBP,JPY \
  -H "apikey: YOUR_API_KEY"

That’s it – you’ll get the latest rates as JSON. Try it without an account in the live demo on the homepage.

Make 300 requests go a long way

The free plan updates rates once a day, so there is no point fetching them more often. A simple pattern covers most small projects with a fraction of the quota:

  • Fetch once per day on your server (cron job, serverless scheduled function, GitHub Action) – that’s about 30 requests a month.
  • Request all currencies at once – leave out currencies and one call returns every rate.
  • Store the result in a file, database or KV store and convert locally: amount × rate.
  • Check your remaining quota with /v1/status – it doesn’t count against your limit.
# daily_rates.py – run once a day, e.g. via cron
import json, os, requests

r = requests.get(
    "https://api.fxapi.com/v1/latest",
    headers={"apikey": os.environ["FXAPI_KEY"]},
    timeout=10,
)
r.raise_for_status()
with open("rates.json", "w") as f:
    json.dump(r.json(), f)

Good fits for a free currency API

  • Side projects, prototypes and hackathons
  • Student and university projects
  • Personal finance and budgeting tools
  • Internal dashboards with daily refresh
  • Static sites that rebuild once a day
  • Testing an integration before going live

When to upgrade

Upgrade when you need fresher data (hourly on Basic, every 60 seconds on Professional and Enterprise), more requests, the currency converter API, time series, multiple API keys, team management or an SLA. You can switch plans at any time, and yearly billing gives you two months free.

This endpoint is part of the fxapi FX rates API – the same key, response format and 190+ currencies across every endpoint.

Frequently asked questions

Is the free exchange rate API really free?
Yes. The Free plan costs nothing, has no time limit and does not require a credit card. You only pay if you decide to upgrade.
What are the limits of the free plan?
300 requests per month and up to 10 requests per minute. Rates are updated daily. Latest, historical, fluctuation, average, currencies and status are included; the convert and range endpoints are not – you can still convert by multiplying the latest rate yourself.
Can I use the free plan in production?
Yes, as long as you stay within the limits. Many low-traffic apps cache one daily request and serve all users from it. For hourly or 60-second updates, choose a paid plan.
Do I need HTTPS on the free plan?
All plans, including Free, are served exclusively over HTTPS.
What happens when I use up my 300 requests?
The API returns HTTP 429 until your monthly quota resets. You can upgrade at any time to get a higher quota.
Free plan · no credit card

Get your free exchange rate API key

300 requests a month, latest and historical rates, fluctuation and averages – free forever. Upgrade when you need faster updates or more requests.