Deploy
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/frankfurterThis 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/frankfurterWithout 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/frankfurterBAM_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_USERandBCCH_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