# Central Bank Rates & FX API: RBA, ECB, Bank of England (`eythan/central-bank-series`) Actor

Clean time series from official central-bank publications: RBA cash rate and tables, ECB reference rates and policy rates, Bank of England Bank Rate and SONIA. Licence-checked per series, with revision history.

- **URL**: https://apify.com/eythan/central-bank-series.md
- **Developed by:** [Eythan Cohen](https://apify.com/eythan) (community)
- **Categories:** Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 series records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Central Bank Rates & FX API: RBA, ECB, Bank of England

**Official central-bank rates as clean data: RBA cash rate, ECB reference FX and policy rates, Bank of England Bank Rate. 1,991 series, with attribution.**

One consistent record format for the **Reserve Bank of Australia** (cash rate target, money-market
rates, exchange rates and about 1,900 series from the RBA's statistical tables), the **European Central Bank** (daily euro
reference rates for 44 currencies, key policy rates, euro short-term rate) and the **Bank of
England** (Bank Rate, SONIA). Each value comes with its units, frequency and the attribution its
publisher requires, and every series has been licence-checked.

**Who uses it**

- **Finance and treasury tools** that need a trustworthy rate with its source attached.
- **Spreadsheet and BI users** who want series in one format, without hunting across three websites.
- **Researchers and students** working with long histories (RBA from 1959, ECB from 1999, BoE from 1975).
- **AI agents** that need an official figure instead of a guess.

### What does this Actor do?

It serves a pre-built archive of series published by the central banks themselves and returns each
observation with its units, frequency, provider and the attribution text the publisher requires.

- **Licence-checked per series.** RBA tables mix RBA data with data from ASX, ABS, Bloomberg and
  others. Only series whose own source line is the RBA, or APRA (which publishes under CC BY 4.0),
  are served. Other third-party series are excluded. APRA-sourced series carry APRA's attribution.
- **Values are not modified.** Numbers are returned exactly as published.
- **Revision tracking.** The archive records when a published value is later changed. Tracking began
  on the first archive snapshot, so only changes seen since then are available.
- **Official sources only**: RBA statistical tables, ECB SDMX data API, Bank of England database.

### Example inputs (copy, paste, run)

**1. Today's policy rates from three central banks in one call**

```json
{"seriesIds": ["RBA:FIRMMCRTD", "BoE:IUDBEDR", "ECB:FM.B.U2.EUR.4F.KR.DFR.LEV"], "latestOnly": true}
```

Returns 3 records: the RBA cash rate target (4.60), the Bank of England Bank Rate (3.75) and the ECB
deposit facility rate, each with its date and attribution.

**2. Daily euro to Australian dollar reference rate since the start of 2025**

```json
{"providers": ["ECB"], "seriesIds": ["ECB:EXR.D.AUD.EUR.SP00.A"], "dateFrom": "2025-01-01", "maxResults": 5000}
```

Returns about 450 daily records. The value is how many Australian dollars one euro buys.

**3. Find RBA series by topic: the latest housing figures**

```json
{"providers": ["RBA"], "titleContains": "housing", "latestOnly": true, "maxResults": 200}
```

Returns the latest value of about 68 housing-related series, for example owner-occupier housing debt
to income (99.7 per cent, June 2026).

Tip: if you do not know a series ID, run example 3 with a different `titleContains` word
(for example `inflation`, `exchange`, `credit`) and read the `seriesId` column.

### Input

| Field | Meaning |
|---|---|
| `providers` | RBA, ECB, BoE |
| `seriesIds` | exact IDs such as `RBA:FIRMMCRTD`, `BoE:IUDBEDR`, `ECB:EXR.D.USD.EUR.SP00.A` |
| `titleContains` | find series by title text, for example `cash rate` or `us dollar` |
| `dateFrom` / `dateTo` | `YYYY-MM-DD` |
| `latestOnly` | one most-recent observation per series, with `previousValue`, `previousDate` and `change` (did the rate just move?) |
| `includeRevisions` | include records where an earlier value was revised |
| `maxResults` | cap on records (you pay per record returned) |

### Output example

```json
{
  "date": "2026-10-08",
  "seriesId": "RBA:FIRMMCRTD",
  "title": "Cash Rate Target",
  "value": "4.60",
  "units": "Per cent",
  "frequency": "Daily",
  "provider": "RBA",
  "recordType": "observation",
  "previousValue": null,
  "table": "f1",
  "attribution": "Source: Reserve Bank of Australia. Free at rba.gov.au. Not endorsed by the RBA."
}
```

### Pricing

Pay per record returned, plus a tiny start fee. Use `maxResults` and `latestOnly` to control cost.
The underlying data is published free of charge by the central banks; this Actor adds a unified
format, series catalogue, filtering, revision tracking and API/agent delivery.

### Good to know

- Not real-time: the archive is refreshed on a schedule and the run summary shows the snapshot dates.
- Revision history only starts from the first archive snapshot; earlier revisions are not available.
- Some publisher series carry their own conditions (for example the RBA Cash Rate and Financial Data
  terms). Do not state or imply endorsement by any central bank.

### Disclaimer

Not affiliated with, endorsed by or certified by the Reserve Bank of Australia, the European Central
Bank or the Bank of England. Provided as is, without warranty; not financial advice. Contains public
sector information licensed under the Open Government Licence v3.0 (Bank of England data).

# Actor input Schema

## `providers` (type: `array`):

Which central banks to include.

## `seriesIds` (type: `array`):

Exact series IDs, e.g. 'RBA:FIRMMCRTD' (RBA cash rate target), 'BoE:IUDBEDR' (Bank Rate), 'ECB:EXR.D.USD.EUR.SP00.A' (EUR/USD reference rate).

## `titleContains` (type: `string`):

Case-insensitive text to find series by title, e.g. 'cash rate' or 'US dollar'.

## `dateFrom` (type: `string`):

YYYY-MM-DD

## `dateTo` (type: `string`):

YYYY-MM-DD

## `latestOnly` (type: `boolean`):

Return only the most recent observation of each matching series.

## `includeRevisions` (type: `boolean`):

Also return records where a previously published value was later revised (available once the archive has captured revisions).

## `maxResults` (type: `integer`):

Stop after this many records. You are only charged for records returned.

## Actor input object example

```json
{
  "providers": [
    "RBA",
    "ECB",
    "BoE"
  ],
  "seriesIds": [
    "RBA:FIRMMCRTD",
    "BoE:IUDBEDR",
    "ECB:FM.B.U2.EUR.4F.KR.DFR.LEV"
  ],
  "titleContains": "",
  "dateFrom": "",
  "dateTo": "",
  "latestOnly": true,
  "includeRevisions": false,
  "maxResults": 100
}
```

# Actor output Schema

## `observations` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "providers": [
        "RBA",
        "ECB",
        "BoE"
    ],
    "seriesIds": [
        "RBA:FIRMMCRTD",
        "BoE:IUDBEDR",
        "ECB:FM.B.U2.EUR.4F.KR.DFR.LEV"
    ],
    "latestOnly": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("eythan/central-bank-series").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "providers": [
        "RBA",
        "ECB",
        "BoE",
    ],
    "seriesIds": [
        "RBA:FIRMMCRTD",
        "BoE:IUDBEDR",
        "ECB:FM.B.U2.EUR.4F.KR.DFR.LEV",
    ],
    "latestOnly": True,
}

# Run the Actor and wait for it to finish
run = client.actor("eythan/central-bank-series").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "providers": [
    "RBA",
    "ECB",
    "BoE"
  ],
  "seriesIds": [
    "RBA:FIRMMCRTD",
    "BoE:IUDBEDR",
    "ECB:FM.B.U2.EUR.4F.KR.DFR.LEV"
  ],
  "latestOnly": true
}' |
apify call eythan/central-bank-series --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,eythan/central-bank-series"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/FCpRoCHD3TMFzered/builds/ljoresVeEn8N4pXli/openapi.json
