Frankfurter website screenshot

Frankfurter

Frankfurter is an open-source (MIT) currency exchange rates API that blends foreign-exchange reference rates published by 50+ central banks and monetary authorities. It hosts a free, no-key public endpoint at api.frankfurter.dev (current v2 and frozen v1) and ships as a Docker image for unlimited self-hosting. Historical data extends back to 1948 and covers 201 currencies; the API serves JSON, NDJSON, and CSV.

2 APIs 10 Features
Currency ExchangeForeign ExchangeFXOpen SourceMITSelf-HostedPublic APIs

APIs

Frankfurter API v2

Current Frankfurter API. Blended exchange rates across multiple institutional providers, one row per currency pair, with optional per-provider expansion, week/month downsampling...

Frankfurter API v1

Frozen v1 Frankfurter API. ECB-style reference rates with single-base aggregate response shape (rates keyed by quote currency). Maintained for backward compatibility; new integr...

Collections

Pricing Plans

Rate Limits

Frankfurter Rate Limits

2 limits

RATE LIMITS

Features

Blended Reference Rates

Combines daily FX rates from 50+ central banks and monetary authorities into a consensus-filtered, outlier-rejecting blend.

Multi-Format Output

JSON, NDJSON (streamed), and CSV from the same endpoint.

Historical Time Series

Daily rates back to 1948 with optional week/month downsampling.

201 Currencies

Active and legacy currency coverage with ISO 4217 metadata.

Per-Provider Expansion

`expand=providers` exposes each provider's individual quote so callers can audit the blend, with `excluded: true` flags on outliers and peg overrides.

No Authentication

No keys, no accounts, no monthly or daily caps.

Self-Hostable

Single Docker image with optional SQLite volume mount.

Free Upstream Provider Keys

Optional, no-cost provider keys for Bank Al-Maghrib, Banco de México, Banco Central de Chile, Bank of Thailand, US Federal Reserve, and the Turkish Central Bank widen self-hosted coverage.

Open CORS

GET and OPTIONS allowed from any origin — direct browser use.

Open Source (MIT)

Full source on GitHub; community contributions and fork-friendly.

Use Cases

Treasury and Payments Pricing

Embed blended FX rates into invoicing, payouts, and conversion.

E-commerce Storefront Localization

Convert displayed prices into the visitor's currency on page load.

Reporting and Analytics

Backfill historical FX into BI dashboards and finance reports.

Reference Data Maintenance

Sync ISO 4217 currency tables and provider metadata into ERPs.

AI Assistant Tooling

Equip Claude and other MCP-capable agents with the official Frankfurter MCP server (get_rates, convert, list_currencies, list_providers).

Private FX Service

Self-host inside a VPC for compliance-sensitive workloads.

Academic and Research

Long historical series for FX econometric studies.

Integrations

European Central Bank

Primary upstream provider (ECB reference rates).

US Federal Reserve

Optional upstream provider via free FED API key.

Bank of Canada

Upstream provider (BOC) included in the blend.

Banco Central do Brasil

Upstream provider (BCB).

Turkish Central Bank

Optional upstream provider via free TCMB key.

Bank of Thailand

Optional upstream provider via free BOT key.

Banco Central de Chile

Optional upstream provider via free BCCh key.

Banco de México

Optional upstream provider via free Banxico key.

Bank Al-Maghrib (Morocco)

Optional upstream provider via free BAM key.

Model Context Protocol

Official MCP server (lineofflight/frankfurter-mcp) registered at the MCP registry.

Docker Hub / GHCR

Container distribution for self-hosting.

GitHub Discussions

Community 'Show and Tell' for libraries and tools built on Frankfurter.

Solutions

Public Hosted (Free)

api.frankfurter.dev — no key, soft fair-use limits, ideal for prototypes and low-volume production.

Self-Hosted FOSS

Run lineofflight/frankfurter via Docker; no application-level rate limit.

MCP Tooling

Drop the Frankfurter MCP server into any Claude / agent stack for natural-language FX access.

Semantic Vocabularies

Frankfurter V1 Context

3 classes · 4 properties

JSON-LD

Frankfurter V2 Context

4 classes · 22 properties

JSON-LD

API Governance Rules

Frankfurter API Rules

37 rules · 14 errors 18 warnings 5 info

SPECTRAL

JSON Structure

V1 Amount Structure

0 properties

JSON STRUCTURE

V1 Base In Structure

0 properties

JSON STRUCTURE

V1 Base Structure

0 properties

JSON STRUCTURE

V1 Currencies Structure

0 properties

JSON STRUCTURE

V1 Date Structure

0 properties

JSON STRUCTURE

V1 Rates By Date Structure

0 properties

JSON STRUCTURE

V1 Rates On Date Structure

4 properties

JSON STRUCTURE

V1 Rates Structure

0 properties

JSON STRUCTURE

V2 Currency Detail Structure

6 properties

JSON STRUCTURE

V2 Currency Structure

6 properties

JSON STRUCTURE

V2 Provider Structure

11 properties

JSON STRUCTURE

V2 Rate Structure

5 properties

JSON STRUCTURE

Example Payloads

V1 Currencies Example

4 fields

EXAMPLE

V1 Rates By Date Example

3 fields

EXAMPLE

V1 Rates Example

4 fields

EXAMPLE

V1 Rates On Date Example

4 fields

EXAMPLE

V2 Currency Detail Example

6 fields

EXAMPLE

V2 Currency Example

6 fields

EXAMPLE

V2 Provider Example

11 fields

EXAMPLE

V2 Rate Example

5 fields

EXAMPLE

Resources

🔗
Website
Website
🔗
Documentation
Documentation
👥
GitHubOrganization
GitHubOrganization
👥
Frankfurter (canonical)
GitHubRepository
👥
Frankfurter MCP Server
GitHubRepository
🔗
MIT License
License
🔗
Docker (Frankfurter)
ContainerImage
🔗
Docker (Frankfurter MCP)
ContainerImage
🔧
MCP Server
Tools
🔧
Hosted MCP Endpoint
Tools
🔧
MCP Registry Listing
Tools
🔗
PublicAPIsListing
PublicAPIsListing
🔗
Issues
Issues
🔗
Forums
Forums
🔗
SpectralRules
SpectralRules
🔗
Vocabulary
Vocabulary
🔗
Plans
Plans
🔗
RateLimits
RateLimits

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Frankfurter API
  version: 2.1.1
items:
- info:
    name: Rates
    type: folder
  items:
  - info:
      name: Frankfurter Get Exchange Rates
      type: http
    http:
      method: GET
      url: https://api.frankfurter.dev/v2/rates
      params:
      - name: date
        value: ''
        type: query
        description: Specific date (YYYY-MM-DD). Cannot be combined with from/to.
      - name: from
        value: ''
        type: query
        description: Start of date range (YYYY-MM-DD)
      - name: to
        value: ''
        type: query
        description: End of date range (YYYY-MM-DD). Defaults to today.
      - name: base
        value: ''
        type: query
        description: 'Base currency (default: EUR)'
      - name: quotes
        value: ''
        type: query
        description: Comma-separated list of quote currencies to include
      - name: providers
        value: ''
        type: query
        description: Comma-separated list of data providers to include
      - name: group
        value: ''
        type: query
        description: Downsample rates by time period. Only applies to date ranges.
      - name: expand
        value: ''
        type: query
        description: 'Comma-separated list of optional fields to include per record. Currently supports `providers`, which
          adds an array of `{ key, rate }` objects per record showing each provider''s individual rate. Outliers excluded
          from the blend (and providers whose rate was overridden by a currency peg) are flagged with `excluded: true`. The
          field is omitted on synthesized peg rows where no provider published the quote. In CSV output, the `providers` column
          is encoded as `KEY:RATE` pairs joined by `|`, with a trailing `*` on excluded entries (e.g. `ECB:0.92|FED:1.50*`).'
    docs: Returns exchange rates blended across providers. Without date params, returns the latest rates. Each record is a
      single currency pair.
  - info:
      name: Frankfurter Get a Single Exchange Rate Pair
      type: http
    http:
      method: GET
      url: https://api.frankfurter.dev/v2/rate/:base/:quote
      params:
      - name: base
        value: ''
        type: path
      - name: quote
        value: ''
        type: path
      - name: date
        value: ''
        type: query
        description: Specific date (YYYY-MM-DD). Cannot be combined with from/to.
      - name: providers
        value: ''
        type: query
        description: Comma-separated list of data providers to include
    docs: Returns the blended exchange rate for a single currency pair. Without a date param, returns the latest rate.
- info:
    name: Currencies
    type: folder
  items:
  - info:
      name: Frankfurter Get a Single Currency
      type: http
    http:
      method: GET
      url: https://api.frankfurter.dev/v2/currency/:code
      params:
      - name: code
        value: ''
        type: path
    docs: Returns details for a single currency, including provider information or peg metadata.
  - info:
      name: Frankfurter Get Available Currencies
      type: http
    http:
      method: GET
      url: https://api.frankfurter.dev/v2/currencies
      params:
      - name: scope
        value: ''
        type: query
        description: Set to 'all' to include legacy currencies
      - name: providers
        value: ''
        type: query
        description: Comma-separated list of data providers to include
    docs: Returns available currencies with their names and date ranges. By default, only active currencies are included.
- info:
    name: Providers
    type: folder
  items:
  - info:
      name: Frankfurter Get Available Data Providers
      type: http
    http:
      method: GET
      url: https://api.frankfurter.dev/v2/providers
    docs: Returns available exchange rate data providers with their base currency.
bundled: true