The public API runs at api.frankfurter.dev. If you want to keep requests within your own infrastructure, you can run a private instance with Docker.

Quick Start

The quickest way to get started:

docker run -d -p 8080:8080 lineofflight/frankfurter

This starts Frankfurter on port 8080 with an ephemeral database. Some endpoints may return empty data until their initial backfill completes.

Production

For production, mount a volume to persist the SQLite database across container restarts:

docker run -d -p 8080:8080 \
  -e DATABASE_URL="sqlite:///data/db.sqlite3" \
  -v ./data:/data \
  --pull always \
  lineofflight/frankfurter

Without a mounted volume, the database is ephemeral and rebuilds on each restart.

The --pull always flag ensures Docker pulls the latest image on every run.

API Keys

Some data providers require API keys. All are free and optional.

docker run -d -p 8080:8080 \
  -e DATABASE_URL="sqlite:///data/db.sqlite3" \
  -e BAM_API_KEY="your_key" \
  -e BANXICO_API_KEY="your_key" \
  -e BCCH_USER="your_email" \
  -e BCCH_PASS="your_password" \
  -e BOT_API_KEY="your_key" \
  -e FRED_API_KEY="your_key" \
  -e TCMB_API_KEY="your_key" \
  -v ./data:/data \
  --pull always \
  lineofflight/frankfurter
BAM_API_KEY
Bank Al-Maghrib data. Register at apihelpdesk.centralbankofmorocco.ma.
BANXICO_API_KEY
Banco de México data. Register at banxico.org.mx.
BCCH_USER and BCCH_PASS
Banco Central de Chile data. Register at bcentral.cl.
BOT_API_KEY
Bank of Thailand data. Register at gateway.api.bot.or.th.
FRED_API_KEY
Federal Reserve data. Register at fred.stlouisfed.org.
TCMB_API_KEY
Turkish Central Bank data. Register at evds3.tcmb.gov.tr.

Legacy TLS

Set OPENSSL_CONF=config/openssl_legacy.cnf as an environment variable to enable the BCN provider, which requires TLS 1.0. Without it, BCN is skipped.

docker run -d -p 8080:8080 \
  -e OPENSSL_CONF="config/openssl_legacy.cnf" \
  -v ./data:/data \
  --pull always \
  lineofflight/frankfurter