# Central Bank Interest Rates: Policy Rates and Rate Changes (`scrapemint/central-bank-policy-rates`) Actor

Keyless policy interest rates for the Federal Reserve, ECB, Bank of England, Bank of Canada and Reserve Bank of Australia, plus Japan as a labelled proxy. Includes the derived decision history: every change with its date, size in basis points and direction.

- **URL**: https://apify.com/scrapemint/central-bank-policy-rates.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Business, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Central Bank Interest Rates: Policy Rates and Rate Changes

What the major central banks currently charge, and the part nobody publishes as one clean table: **the history of every rate decision**. When each bank last moved, by how many basis points, in which direction, how long it has held that level, and whether it is tightening, easing or on hold.

Covers the **Federal Reserve, European Central Bank, Bank of England, Bank of Canada and Reserve Bank of Australia**, plus Japan as a clearly labelled proxy. No API key, no login, no browser.

### Modes

- **Latest** - one row per central bank: current rate, how long it has been at that level, the last change and the previous one, the number of moves in the past year and the resulting stance.
- **Changes** - one row per rate decision across all banks, newest first, with how long the previous level had held.
- **History** - one row per published observation.

### Example output

```json
{
  "mode": "latest",
  "centralBank": "US Federal Reserve",
  "rateName": "federal funds target range",
  "currentRatePercent": 3.75,
  "targetRangeLowerPercent": 3.5,
  "targetRangeUpperPercent": 3.75,
  "targetRangeMidpointPercent": 3.625,
  "atCurrentLevelSince": "2025-12-11",
  "daysAtCurrentLevel": 230,
  "lastChangeBasisPoints": -25,
  "lastChangeDirection": "decrease",
  "changesInLast12Months": 3,
  "netChange12MonthsBasisPoints": -75,
  "policyStance": "easing"
}
```

### Things the data will not let you get away with

- **The Fed does not set a rate, it sets a range.** Quoting the upper bound alone as "the Fed rate" hides half the policy setting. Both bounds and the midpoint ship on the row.
- **The ECB has three key rates.** Since 2022 the deposit facility rate is the one steering market rates, so that is the headline here, with the main refinancing and marginal lending rates alongside it. Calling any one of them "the ECB rate" without saying which is how people end up 15 basis points out.
- **A policy rate series repeats the same number every day.** A decision is a change in value, not a new observation, and a gap in publication is not a decision either. Missing values are dropped rather than carried as zeros, so a bank holiday never appears as a cut to nothing.
- **Japan is a proxy and is labelled as one.** There is no clean keyless series for the Bank of Japan's own published target, so the closest available is an OECD compiled monthly average of the overnight call rate. It tracks policy but it is not the announced rate and it lags about two months. Because it is a market average it drifts by fractions of a point between months, so **no decision history is derived for Japan at all** — those movements are drift, not announcements, and reporting them as rate changes would invent decisions that never happened. The row says so in `decisionHistoryAvailable` and `proxyCaveat`.
- **The newest row is often blank.** The Bank of England and the RBA both publish a row for today with the rate column still empty. Empty is not zero; the current rate comes from the newest row that actually has a value.
- **One publisher, two date formats.** The Australian daily table dates rows as `29-Jul-2026` while its monthly table uses `30/06/2026`. Both are accepted rather than assuming either.

### Who this is for

Macro traders and anyone pricing off the front end, fintech and dashboard builders who need the current rate for six economies without six integrations, and researchers who want a cross-country decision history in one table.

### Pricing

**$0.004 per row.** The first 2 rows of every run are free, and note rows (an unknown central bank, a source that returned nothing, Japan being excluded from the decision history) are never charged.

A snapshot of all six banks is 6 rows, or **$0.024**. Three years of decisions across five banks is around 40 rows, or **$0.16**. Full daily history is one row per publication day per bank.

### Related actors

- **Government Bond Yields Worldwide** - the market curve these rates anchor.
- **Credit Spreads, VIX & Financial Stress** - the risk premium on top.
- **SOFR & Money Market Rates** - the overnight funding market in the US.

### How to run it via API

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~central-bank-policy-rates/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"changes","banks":["fed","ecb","boe"],"yearsBack":3}'
```

Sources: FRED (Fed and ECB series), Bank of England IADB, Bank of Canada Valet, Reserve Bank of Australia table F1.

# Actor input Schema

## `mode` (type: `string`):

latest = current rate per central bank with the last change and the 12 month picture. changes = one row per rate decision, newest first. history = one row per published observation.

## `banks` (type: `array`):

fed, ecb, boe, boc, rba, boj. Country names work too, for example "Canada". Empty returns all six.

## `yearsBack` (type: `integer`):

How far back to read. Affects the change history and the 12 month figures; 3 years covers the last full tightening and easing cycle.

## `startDate` (type: `string`):

YYYY-MM-DD. Overrides years of history.

## `endDate` (type: `string`):

YYYY-MM-DD. Defaults to today.

## `maxRows` (type: `integer`):

Cap on rows returned. Controls total cost.

## Actor input object example

```json
{
  "mode": "latest",
  "banks": [
    "fed",
    "ecb",
    "boe",
    "boc",
    "rba",
    "boj"
  ],
  "yearsBack": 3,
  "startDate": "",
  "endDate": "",
  "maxRows": 300
}
```

# 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 = {
    "banks": [
        "fed",
        "ecb",
        "boe",
        "boc",
        "rba",
        "boj"
    ],
    "yearsBack": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/central-bank-policy-rates").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 = {
    "banks": [
        "fed",
        "ecb",
        "boe",
        "boc",
        "rba",
        "boj",
    ],
    "yearsBack": 3,
}

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

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

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

```

## CLI example

```bash
echo '{
  "banks": [
    "fed",
    "ecb",
    "boe",
    "boc",
    "rba",
    "boj"
  ],
  "yearsBack": 3
}' |
apify call scrapemint/central-bank-policy-rates --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapemint/central-bank-policy-rates",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/2Cye1Oy912sTLOTai/builds/wHXeIEqOMH2ovLQQs/openapi.json
