// the find
lineofflight/frankfurter
💱 Currency data API
Frankfurter is a self-hostable REST API that aggregates daily exchange rates from 80+ central banks worldwide, storing them in SQLite. It's for developers who need currency conversion without paying for a commercial rates API and want to own their data source.
The provider coverage is genuinely impressive — 80+ central bank adapters, each with its own spec file, pulling from authoritative sources rather than scraped commercial feeds. The peg handling is a thoughtful addition that most currency APIs miss entirely: pegged currencies like AED or SAR have their own seed files so the math stays correct even when the central bank doesn't publish daily. The consensus layer (`lib/consensus.rb`) resolves conflicting rates across providers rather than just picking one arbitrarily. Docker deployment is genuinely one command, and the SQLite default means you can run this on a $5 VPS without standing up Postgres.
SQLite as the production store will hit write contention if you're running multiple workers or doing heavy backfills — there's no Postgres option mentioned despite the migration system suggesting it could be swapped. The API versioning situation is awkward: v1 and v2 coexist with different query shapes and the OpenAPI specs live as static JSON files rather than being generated from the code, so they'll drift. No rate-limiting or auth on the self-hosted version, which means anyone who exposes this publicly is one Reddit post away from getting hammered. The backfill story for historical data is unclear — the README warns about 'empty data until backfill completes' but doesn't say how long that takes or how to monitor it.