bin | ||
config | ||
db/migrate | ||
lib | ||
spec | ||
.dockerignore | ||
.env.example | ||
.eslintrc | ||
.gitignore | ||
.rubocop.yml | ||
.tool-versions | ||
.travis.yml | ||
app.json | ||
config.ru | ||
docker-compose.override.yml | ||
docker-compose.prod.yml | ||
docker-compose.yml | ||
Dockerfile | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE | ||
limit_req.conf | ||
Procfile | ||
Rakefile | ||
README.md |
Frankfurter
Frankfurter is a free and open source API for current and historical foreign exchange rates. It tracks data published by the European Central Bank. Rates are updated around 4PM CET every working day.
A public instance runs on https://frankfurter.app
. You can also self-host with Heroku or Docker.
Examples
Get the current foreign exchange rates.
GET /latest HTTP/1.1
Get historical rates for any day since 1999.
GET /2000-01-03 HTTP/1.1
Get historical rates for a time period.
GET /2010-01-01..2010-01-31 HTTP/1.1
Get historical rates for a time period up to the present.
GET /2010-01-01.. HTTP/1.1
Rates quote against the Euro by default. Quote against a different currency.
GET /latest?from=USD HTTP/1.1
Request specific exchange rates.
GET /latest?to=USD,GBP HTTP/1.1
Convert a specific amount.
GET /latest?amount=1000&from=GBP&to=USD HTTP/1.1
With a full list of currencies, time series grow large in size. For better performance, use the to parameter to reduce the response weight.
GET /2016-01-01..2016-12-31?from=GBP&to=USD HTTP/1.1
Here we return the current GBP/USD currency pair with JavaScript.
// Fetch and display GBP/USD
fetch('/latest?from=GBP&to=USD')
.then(resp => resp.json())
.then((data) => { alert(`GBPUSD = ${data.rates.USD}`); });
Cache data whenever possible.
Deployment
To build locally, type
docker-compose up -d
Now you can access the API at http://localhost:8080
.
In production, create a .env
file and run with
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
To update to a newer image, run
docker-compose -f docker-compose.yml -f docker-compose.prod.yml pull
Within a few minutes, you will access the API at https://yourdomain.com/
.