Skip to content
Exchange Rates API
Branch: master
Clone or download
Latest commit e376464 Nov 7, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore scheduler locking Apr 30, 2018
LICENSE add README and LICENSE with rounding update Mar 26, 2018
Pipfile update packages Oct 8, 2018
Pipfile.lock update packages Oct 8, 2018
Procfile refactor and more app.json support Apr 29, 2018 add a API wrapper by Ben Major Apr 21, 2019
app.json use string because thats what Heroku wants May 1, 2018

Exchange Rates API

Exchange rates API is a free service for current and historical foreign exchange rates published by the European Central Bank.



Lates & specific date rates

Get the latest foreign exchange rates.

GET /latest

Get historical rates for any day since 1999.

GET /2018-03-26

Rates are quoted against the Euro by default. Quote against a different currency by setting the base parameter in your request.

GET /latest?base=USD

Request specific exchange rates by setting the symbols parameter.

GET /latest?symbols=USD,GBP

Rates history

Get historical rates for a time period.

GET /history?start_at=2018-01-01&end_at=2018-09-01

Limit results to specific exchange rates to save bandwidth with the symbols parameter.

GET /history?start_at=2018-01-01&end_at=2018-09-01&symbols=ILS,JPY

Quote the historical rates against a different currency.

GET /history?start_at=2018-01-01&end_at=2018-09-01&base=USD

Client side usage

The primary use case is client side. For instance, with money.js in the browser

let demo = () => {
  let rate = fx(1).from("GBP").to("USD")
  alert("£1 = $" + rate.toFixed(4))

  .then((resp) => resp.json())
  .then((data) => fx.rates = data.rates)

API wrappers


Exchange rates API is built upon Sanic to achieve high throughput. The current setup can asyncronously handle thousands of requests per second.

Libraries used



pipenv shell

Install packages

pipenv install

Load in initial data & Scheduler

The scheduler will keep your database up to date hourly with information from European Central bank. It will download the last 90 days worth of data every hour.

The reference rates are usually updated around 16:00 CET on every working day, except on TARGET closing days. They are based on a regular daily concertation procedure between central banks across Europe, which normally takes place at 14:15 CET.

On initialization it will check the database. If it's empty all the historic rates will be downloaded and records created in the database.


gunicorn --worker-class sanic.worker.GunicornWorker --reload


Thanks for your interest in the project! All pull requests are welcome from developers of all skill levels. To get started, simply fork the master branch on GitHub to your personal account and then clone the fork into your development environment.

Madis Väin (madisvain on Github, Twitter) is the original creator of the Exchange Rates API framework.



You can’t perform that action at this time.