---
title: ECB Exchange Rates API
slug: ecb-exchange-rates
url: https://apyhub.com/callable-labs/service/ecb-exchange-rates
provider: Callable Labs
tags: [fx-rates, exchange-rates, historical-rates, currency-reference]
auth: api_key
version: 0.1.0
service_type: sync
endpoints: 4
atoms: 3
mcp: true
---

# ECB Exchange Rates API

Access latest and historical exchange rates, daily currency rate time series, and supported currency data for financial applications and reporting.

## Endpoints

| Method | URL | Description | Atoms |
| --- | --- | --- | --- |
| GET | `https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/currencies` | What it does Returns the list of currencies available from the currency conversion service, along w… | 3 |
| GET | `https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/latest` | What it does Retrieves the latest reference exchange rates for a base currency, optionally limited… | 3 |
| GET | `https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/historical/:date` | What it does Retrieves historical reference exchange rates for a specified date, with an optional b… | 3 |
| GET | `https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/timeseries` | What it does Returns a daily time series of reference FX rates for the date range you provide, usin… | 3 |

## Endpoint reference

### List currencies

`GET https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/currencies` · 3 atoms · accepts `application/json` · returns `application/json`

#### Quickstart

Fetch the latest list of currencies supported by the API.

```bash
curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/currencies" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `count` as an integer, `latest` as a date string, and `currencies` as an array of currency objects.

Each currency object includes `code`, `name`, `kind`, `first_date`, `last_date`, and `current`, with optional `parity` when applicable.

```json
{
  "count": 66,
  "latest": "2026-10-06",
  "currencies": [
    {
      "code": "AED",
      "name": "UAE dirham",
      "kind": "peg",
      "first_date": "1999-01-04",
      "last_date": "2026-10-06",
      "current": true,
      "parity": "3.6725 per USD (fixed)"
    }
  ]
}
```

### Get latest reference rates

`GET https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/latest` · 3 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `base` | query | string | no | Base currency (ISO 4217). Default `EUR`. Default: `EUR`. |
| `symbols` | query | string | no | Comma-separated currencies to return, e.g. `USD,GBP,JPY`. Default: all available. |

#### Quickstart

Get the latest reference rates for the default base currency, or pass a different base in the query string.

```bash
curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/latest?base=EUR" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `source`, `notice`, `pegged`, `base`, `date`, and `rates` fields. `source` and `notice` are strings, `pegged` is an array of currency codes, `base` and `date` describe the reference date used, and `rates` is an object whose keys are currency codes and whose values are numbers.

```json
{
  "base": "USD",
  "date": "2026-10-06",
  "rates": {
    "AED": 3.6725,
    "EUR": 0.88738131,
    "GBP": 0.75321678
  },
  "notice": "Reference rates for information, published around 16:00 CET on TARGET business days; not for trading.",
  "pegged": ["AED"],
  "source": "European Central Bank euro foreign exchange reference rates; fixed-parity currencies derived from their official pegs"
}
```

### Get historical reference rates

`GET https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/historical/:date` · 3 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `base` | query | string | no | Base currency (ISO 4217). Default `EUR`. Default: `EUR`. |
| `date` | path | string (date) | yes | ISO date from 1999-01-04 |
| `symbols` | query | string | no | Comma-separated currencies to return, e.g. `USD,GBP,JPY`. Default: all available. |

#### Quickstart

Fetch the latest reference rates for a specific date, using the base currency and optional symbols filter in the query string.

```bash
curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/historical/:date" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `source`, `notice`, `pegged`, `base`, `date`, and `rates` fields. `source` and `notice` are strings, `pegged` is an array of currency codes, `base` and `date` are strings, and `rates` is an object whose keys are currency codes and values are numbers.

```json
{
  "source": "European Central Bank euro foreign exchange reference rates; fixed-parity currencies derived from their official pegs",
  "notice": "Reference rates for information, published around 16:00 CET on TARGET business days; not for trading.",
  "pegged": ["AED"],
  "base": "USD",
  "date": "2026-10-06",
  "rates": {
    "AED": 3.6725,
    "EUR": 0.88738131,
    "GBP": 0.75321678
  }
}
```

### Get a daily time series

`GET https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/timeseries` · 3 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `end` | query | string (date) | yes | Last day, included |
| `base` | query | string | no | Base currency (ISO 4217). Default `EUR`. Default: `EUR`. |
| `start` | query | string (date) | yes | First day, included |
| `symbols` | query | string | no | Comma-separated currencies to return, e.g. `USD,GBP,JPY`. Default: all available. |

#### Quickstart

Fetch reference rates for a date range, with the required dates passed as query parameters.

```bash
curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/timeseries?start=2026-09-01&end=2026-09-30" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `source` and `notice` strings, `pegged` as an array of strings, `base`, `start`, and `end` strings, `count` as an integer, and `rates` as an object mapping publication dates to currency-to-rate objects.

```json
{
  "source": "European Central Bank euro foreign exchange reference rates; fixed-parity currencies derived from their official pegs",
  "notice": "Reference rates for information, published around 16:00 CET on TARGET business days; not for trading.",
  "pegged": ["AED"],
  "base": "USD",
  "start": "2026-09-01",
  "end": "2026-09-30",
  "count": 22,
  "rates": {
    "2026-09-30": {
      "EUR": 0.8912,
      "GBP": 0.7466
    }
  }
}
```

## About

## What it does
ECB Exchange Rates API gives you foreign exchange reference data from the European Central Bank (ECB): the official daily rates it publishes, plus fixed-parity rates for currencies that don't have an ECB rate. It covers the latest rates, any specific day back to 4 January 1999, and a day-by-day series across a date range of up to 366 days, along with a reference list of every currency it tracks.

You choose a base currency (the default is `EUR`) and, optionally, which currencies you want rates for. For a single day's rate, if that exact day had no publication (a weekend or TARGET holiday), the response automatically falls back to the last published day before it and tells you the date you originally asked for. For a date range, days without a publication are simply left out of the results, along with a count of how many publication days actually fall in that range. Every rate response also tells you which of the returned currencies are pegged, meaning their rate comes from a fixed official parity instead of an ECB rate, plus a source note and a usage notice. Retired currencies still return rates for the years they were in use. You can also look up the full list of tracked currencies to check which ones are currently active, which have been retired, and which are pegged, before requesting them.

The ECB publishes its rates around 16:00 CET on TARGET business days. ECB Exchange Rates API is a good fit for finance systems, currency converters, market data dashboards, and reporting jobs that need a lightweight FX reference feed (latest, historical, or ranged) without trading-grade execution data.

## Usage

Base URL: `https://api.eu.apyhub.com` (default region — see
`GET https://apyhub.com/api/public/regions` for the rest).

Authenticate with an ApyHub API key in the `apy-token` header.
Full docs and a live playground: https://apyhub.com/callable-labs/service/ecb-exchange-rates
