Fixer.io Free Tier Alternative: Same JSON Shape, HTTPS, Any Base

Fixer's free plan is EUR-base only and 100 calls a month. AllRatesToday serves the same {success, timestamp, base, date, rates} JSON over HTTPS with any base currency, no access_key needed for latest rates.

Replace the Fixer.io free tier without rewriting your parser

Fixer was the first popular ECB-based API and its {success, timestamp, base, date, rates} shape is baked into a great many codebases and libraries. After the apilayer acquisition the free plan was capped at 100 requests a month for non-commercial use, lost base-currency switching (EUR only) and for a period lost HTTPS, so many free-tier projects broke on the HTTPS change or hit the cap within a day.

The fix is a hostname change. Same path, same query parameters, same JSON fields. Latest, dated and range lookups need no key at all.

Before and after

# before
curl "http://data.fixer.io/api/latest?access_key=YOUR_KEY&base=EUR&symbols=USD,GBP"

# after
curl "https://allratestoday.com/api/compat/fixer/latest?base=EUR&symbols=USD,GBP"

Response:

{"success":true,"timestamp":1789041600,"base":"USD","date":"2026-09-12","rates":{"GBP":0.7377,"JPY":146.91}}

Python:

import requests

# before
# r = requests.get("http://data.fixer.io/api/latest?access_key=YOUR_KEY&base=EUR&symbols=USD,GBP").json()
# after
r = requests.get("https://allratestoday.com/api/compat/fixer/latest?base=EUR&symbols=USD,GBP").json()
print(r["date"], r["rates"])

JavaScript:

// before
// const r = await fetch("http://data.fixer.io/api/latest?access_key=YOUR_KEY&base=EUR&symbols=USD,GBP").then(x => x.json());
// after
const r = await fetch("https://allratestoday.com/api/compat/fixer/latest?base=EUR&symbols=USD,GBP").then(x => x.json());
console.log(r.date, r.rates);

Endpoints

EndpointReturnsKey
/api/compat/fixer/latest?base=USD&symbols=GBP,JPYLatest ECB table over HTTPS, any base; no access_keyNo key
/api/compat/fixer/2026-01-15?base=USDHistorical table for a date, with historical: trueNo key
/api/compat/fixer/timeseries?start_date=2026-01-01&end_date=2026-03-31&base=USDFixer timeseries shape (up to a year per request)No key
/api/compat/fixer/convert?from=USD&to=EUR&amount=100Conversion with query, info.rate and resultNo key
/api/compat/fixer/symbolsCurrency list in Fixer's {success, symbols} shapeNo key

None of these needs a key. Rates come from the European Central Bank's daily reference table, the same source Fixer.io used; a non-EUR base is a cross-rate inside that table. Every response also carries the ECB publication date, so the number is citable.

When you need more than ECB rates

Frequently asked questions

Is the Fixer.io compatible endpoint really free?

Yes, for everything: latest, dated and range lookups are all keyless, with no quota, CORS enabled and edge-cached. The data is the ECB's public reference table, so it is free for any use, commercial included. Public displays must carry a visible attribution link to allratestoday.com.

Are the numbers the same?

Yes. Both serve the European Central Bank's daily reference rates. Cross-rates for a non-EUR base are computed inside the same ECB table, exactly as the original API did. Rates change once per business day at about 16:00 CET.

What is different?

Two additive fields, source and attribution, appear at the top level; every original field is unchanged. HTTPS and any base currency work on the keyless tier. Date ranges are limited to a year per request.

Can I get real-time market rates too?

Yes, on the same key. GET /api/v1/rates returns mid-market rates for 160+ currencies refreshed every 60 seconds; the compatible endpoints stay ECB-only so existing code keeps its semantics.

Fix it now

Latest rates, dates and ranges work with no key. A free key adds real-time rates for 160+ currencies.

Get a free API key All migration guides

Related