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 | ||
Rakefile | ||
README.md |
Frankfurter
Foreign exchange (forex) rates and currency conversion API
Getting Started
Frankfurter is a free, 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.
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
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
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
Within a few minutes, you will access the API at https://yourdomain.com
.