Currency Exchange — entry 014 of 18

Frankfurter

Verified Jul 2026

Frankfurter aggregates and republishes daily reference rates from roughly 84 central banks, not solely the ECB, covering 200+ currencies with history back to 1948, and supports current, dated, and time-series conversion queries, including filtering to a specific source institution. It's free with no API key and no request quotas beyond abuse-prevention rate limiting, returns JSON by default plus CSV and streaming NDJSON, and now also ships an official self-hosting Docker image and an MCP server for AI-agent integration. The project's site and docs moved from frankfurter.app to frankfurter.dev, with the old domain now redirecting.

no-keyhistoricaltime-seriesself-hostable
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, CSV, NDJSONResponses can be requested as JSON or CSV or NDJSON.

GreatAPIs Score

Score100out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats15/15Supports 3 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 100 on greatapis.com
<a href="https://greatapis.com/api/frankfurter/"><img src="https://greatapis.com/badge/frankfurter.svg" alt="Scored 100 on greatapis.com"></a>

Auth quickstart

  1. No key needed — call it now.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://api.frankfurter.dev/v2
currencies1
GET/currenciesGet available currencies
Parameters
NameInRequiredType
scopequerynostring
Responses
StatusDescriptionSchema
200Available currencies
currency1
GET/currency/{code}Get a single currency
Parameters
NameInRequiredType
codepathyesstring
Responses
StatusDescriptionSchema
200Currency detailsCurrencyDetail
404
providers1
GET/providersGet available data providers
Responses
StatusDescriptionSchema
200Available providers
rate1
GET/rate/{base}/{quote}Get a single exchange rate pair
Parameters
NameInRequiredType
basepathyesstring
quotepathyesstring
Responses
StatusDescriptionSchema
200Exchange rateRate
404
422
503
rates1
GET/ratesGet exchange rates
Responses
StatusDescriptionSchema
200Exchange rates
404
422
503

Try it

Developer reference

Base URLhttps://api.frankfurter.dev/v2
Rate limit

No fixed quota — abuse-prevention rate limiting only

Key endpoints
  • GET/rates
  • GET/rate/{base}/{quote}