Go to file
2018-10-09 15:55:20 +01:00
bin Implement fork-based daemon for scheduling jobs 2018-10-07 01:08:45 +01:00
config Add sitemap 2018-10-09 15:55:20 +01:00
db/migrate Denormalise database schema 2018-10-07 01:08:45 +01:00
lib Add sitemap 2018-10-09 15:55:20 +01:00
spec Denormalise database schema 2018-10-07 01:08:45 +01:00
.dockerignore Don't ignore markdown 2018-09-11 18:15:07 +01:00
.env.example Rebrand, serve HTML 2018-06-08 15:32:52 +01:00
.eslintrc Rebrand, serve HTML 2018-06-08 15:32:52 +01:00
.gitignore Update homepage 2018-09-11 17:59:42 +01:00
.rubocop.yml Denormalise database schema 2018-10-07 01:08:45 +01:00
.tool-versions Rebrand, serve HTML 2018-06-08 15:32:52 +01:00
.travis.yml Rebrand, serve HTML 2018-06-08 15:32:52 +01:00
app.json Add Deploy to Heroku button 2018-10-07 01:08:45 +01:00
config.ru Rebrand, serve HTML 2018-06-08 15:32:52 +01:00
docker-compose.override.yml Implement fork-based daemon for scheduling jobs 2018-10-07 01:08:45 +01:00
docker-compose.prod.yml Implement fork-based daemon for scheduling jobs 2018-10-07 01:08:45 +01:00
docker-compose.yml Implement fork-based daemon for scheduling jobs 2018-10-07 01:08:45 +01:00
Dockerfile Revert "Replace Unicorn with Puma" 2018-09-12 00:54:39 +01:00
Gemfile Add sitemap 2018-10-09 15:55:20 +01:00
Gemfile.lock Add sitemap 2018-10-09 15:55:20 +01:00
LICENSE Remove dates from license 2017-01-03 12:44:13 +00:00
limit_req.conf Repack app 2018-03-08 23:51:36 +00:00
Procfile Add Deploy to Heroku button 2018-10-07 01:08:45 +01:00
Rakefile Repack app 2018-03-08 23:51:36 +00:00
README.md Add Deploy to Heroku button 2018-10-07 01:08:45 +01:00

Frankfurter

Deploy

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.

We host a public instance on https://frankfurter.app. Alternatively, you can deploy a private instance using the provided Docker image.

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/.

Travis