Bank of England Calendar: MPC Dates, Releases & Bank Rate
Pricing
from $1.40 / 1,000 calendar row returneds
Bank of England Calendar: MPC Dates, Releases & Bank Rate
The Bank of England schedule as dated rows: MPC rate-announcement dates with Monetary Policy Report flags, FPC dates with Financial Stability Report flags, statistical release, publication, speech and event feeds with exact UTC moments, and the official Bank Rate change history.
Pricing
from $1.40 / 1,000 calendar row returneds
Rating
0.0
(0)
Developer
Samat Makatov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Share
The Bank of England schedule as dated rows: MPC rate-announcement dates with Monetary Policy Report flags, FPC dates with Financial Stability Report flags, statistical release, publication, speech and event feeds with exact UTC moments, and the official Bank Rate change history.
Four schedules of the UK central bank, all read from the Bank's own pages and feeds, all returned as flat rows you can sort, filter and join: the days the Monetary Policy Committee announces Bank Rate, the days the Financial Policy Committee reports on financial stability, what the Bank has published lately (statistics, reports, speeches, news, booked events) with the publication moment to the minute in UTC and London time, and every change of Bank Rate since January 1975 with its move in basis points. For rates desks, risk and regulatory teams, macro researchers, newsroom planners and agents that need the UK central-bank diary as data. No API key, no proxy, no browser — one to five plain requests per run. It answers when something happens and what the rate did; it carries no market consensus and no forecast column.
Use cases
- When is the next UK rate decision:
mode: "mpcDates"returns every announcement day the committee has published for this year and next, withdaysUntilcounting down andbankRateAtFetchPercentgiving the level in force right now — enough to drive a countdown widget or an agent's answer in one call. - A trading calendar without a portal in the middle: the announcement days, the quarterly Monetary Policy Report days and the financial-stability dates come from the institution that sets them, so nothing breaks when a third-party calendar site changes its markup.
- Watching the statistical releases you depend on: run
mode: "releases"withfeeds: ["statistics"],sinceHours: 24andonlyNew: trueon a schedule and a row appears only when something new has actually come out — the rest of the time the run writes nothing. - Planning around the financial-stability cycle:
mode: "fpcDates"gives risk, treasury and regulatory-affairs teams the committee record dates and flags the two dates a year that also bring a Financial Stability Report. - Feeding a rate model, a backtest or a chart:
mode: "bankRate"returns the policy path as rows — effective date, new level, previous level, signed basis points — so a study starts from the official table rather than a hand-typed list. - Reading the tone between meetings: the speeches feed with
sortOrder: "latest"gives each speech with its exact publication moment, the standfirst and the link to the full text, which is what a news monitor or an FX desk reacts to.
Input
Nothing is required. A run with the defaults returns the MPC announcement days the Bank has published, soonest first, in one request. The example values shown in the console are prefills, not defaults: clearing them does not switch a filter back on.
| Field | Type | Default | Allowed values / notes |
|---|---|---|---|
mode | string | mpcDates | mpcDates, fpcDates, releases, bankRate. See Modes |
feeds | string[] | — (prefilled statistics, publications) | Any of statistics, publications, speeches, news, events. Empty = all five. Only in releases mode. See Feeds |
query | string | — (prefilled money and credit) | Keyword matched case-insensitively against the title and the summary. Empty = no keyword. Only in releases mode. See Recurring statistical releases |
sinceHours | integer | — | 1–8760. Keep entries published inside the last N hours, counted in UTC. Dates still ahead are kept regardless. Only in releases mode |
onlyUpcoming | boolean | false | Drop rows whose date has already passed. Works in every mode; in bankRate it leaves nothing, since every change is in the past |
dateFrom | string | — | Earliest event date, YYYY-MM-DD, inclusive |
dateTo | string | — | Latest event date, YYYY-MM-DD, inclusive |
onlyNew | boolean | false | Write only rows absent or differently dated in the previous run with the same filters. See The onlyNew watcher |
sortOrder | string | soonest | soonest = earliest date first, latest = latest first |
maxItems | integer | 25 | 1–1000. Which rows survive is decided per mode before sorting. See What maxItems keeps |
fields | string[] | all | Keep only these fields, in this order, e.g. ["eventDate", "title", "hasMonetaryPolicyReport"] |
A value that is close to an allowed one is corrected and the correction is logged ("speechs" becomes speeches);
anything that is not close fails with the list of allowed values. Filters that belong to another mode are switched off
and reported in the log rather than applied silently.
Reference
Modes
| Mode | Reads | Rows per run | What it is for |
|---|---|---|---|
mpcDates | /monetary-policy/upcoming-mpc-dates | 16 on 2026-09-29 (this year and next) | Rate-announcement days, minutes and Monetary Policy Report flags |
fpcDates | /financial-stability/upcoming-fpc-dates | 8 on 2026-09-29 | Committee record days and Financial Stability Report flags |
releases | /rss/<feed>, one request per feed | up to 50 per feed | What the Bank published, or booked, with the moment to the minute |
bankRate | /boeapps/database/Bank-Rate.asp | 258 changes on 2026-09-29, back to 1975-01-20 | The policy path with basis-point moves |
Feeds
Each feed is one request and carries its 50 most recent entries, so how far back that reaches depends on how often the Bank publishes into it.
| Feed | What is in it | Reach of 50 entries (2026-09-29) | eventType |
|---|---|---|---|
statistics | Monthly and quarterly statistical releases | about eight months | statisticalRelease |
publications | Reports, working papers, consultation and policy papers | about three months | publication |
speeches | Speeches and remarks by Bank officials | about ten months | speech |
news | Announcements, market notices, minutes of market groups | about three months | news |
events | Conferences, workshops, calls for papers, citizens' forums | mixed: mostly past, with a handful of future dates | event |
Recurring statistical releases
Useful values for query when you follow one family in the statistics feed: money and credit,
effective interest rates, capital issuance, mortgage lenders and administrators, uk international reserves,
external business of monetary financial institutions, consolidated worldwide claims, credit union,
banking sector regulatory capital. In the publications feed, working paper, weekly report and
monetary policy report behave the same way.
Event types
mpcAnnouncement, fpcAnnouncement, statisticalRelease, publication, speech, news, event,
bankRateChange. One mode produces one type, except releases, where the type follows the feed.
What maxItems keeps
In bankRate the most recent changes survive, because a date-sorted cut would otherwise hand you 1975. In every other
mode the entries closest to today survive, in both directions — which is what a diary is asked for. Sorting happens
after that, so sortOrder never changes which rows you get, only the order they arrive in.
The onlyNew watcher
Each emitted row is remembered by its link plus its date in a named key-value store, under a key derived from mode, feeds and keyword — two scheduled tasks with different filters keep separate histories. A date that moves therefore counts as new, which is the point of watching a central-bank calendar. The first run writes everything it finds, and a later run that finds nothing new ends successfully with zero rows instead of failing.
Times
The committee date pages print calendar dates and no clock time at all, so their rows carry timeKnown: false with
eventDateTimeUtc and eventTimeLondon left null — no invented 09:30. Feed entries are stamped in London time and the
Bank switches notation with the season (+0100 in summer, Z in winter); both are converted to the same wall clock, so
a 09:30 release is 08:30Z in September and 09:30Z in January. An entry the Bank stamped 00:00:00 carries no
publication time either and says so. eventDate is always the London calendar day, the day the Bank itself prints.
Examples
The next UK rate decisions
{ "mode": "mpcDates", "maxItems": 20 }
The financial-stability cycle, only what is still ahead
{ "mode": "fpcDates", "onlyUpcoming": true, "maxItems": 20 }
Statistical releases of the last day, as a watcher
{ "mode": "releases", "feeds": ["statistics"], "sinceHours": 24, "onlyNew": true, "sortOrder": "latest", "maxItems": 50 }
Money and Credit only, newest first
{ "mode": "releases", "feeds": ["statistics"], "query": "money and credit", "sortOrder": "latest", "maxItems": 10 }
Bank Rate since 2015 for a model
{ "mode": "bankRate", "dateFrom": "2015-01-01", "sortOrder": "latest", "maxItems": 30 }
Speeches and news of the past week, trimmed to four fields
{ "mode": "releases", "feeds": ["speeches", "news"], "sinceHours": 168, "sortOrder": "latest", "fields": ["eventDateTimeUtc", "eventType", "title", "detailUrl"], "maxItems": 40 }
Output
One row per date. A real row from the run that produced this README (mode: "mpcDates", run SMIDuHEgpmcAdDqqj):
{"eventDate": "2026-11-05","eventType": "mpcAnnouncement","title": "November MPC Summary and minutes and November Monetary Policy Report","isUpcoming": true,"daysUntil": 37,"timeKnown": false,"eventDateTimeUtc": null,"eventTimeLondon": null,"dayOfWeek": "Thursday","committee": "MPC","detailUrl": "https://www.bankofengland.co.uk/monetary-policy-summary-and-minutes/2026/november-2026","summary": null,"sourceFeed": null,"url": "https://www.bankofengland.co.uk/monetary-policy/upcoming-mpc-dates","fetchedAt": "2026-09-29T22:29:52.650Z","dateConfirmed": true,"hasMinutes": true,"hasMonetaryPolicyReport": true,"bankRateAtFetchPercent": 3.75}
A statistical release (feeds: ["statistics"], run K2EXhlc2GicTyi8cx) and a rate change
(mode: "bankRate", run GxglBrNle1Yqthrue) from the same verification, trimmed to the fields that differ:
{"eventDate": "2026-09-29","eventType": "statisticalRelease","title": "Money and Credit - August 2026","timeKnown": true,"eventDateTimeUtc": "2026-09-29T08:30:00.000Z","eventTimeLondon": "09:30","summary": "Our monthly Money and Credit statistical release is made up of three parts: broad money and credit, lending to individual and lending to businesses.","sourceFeed": "statistics","detailUrl": "https://www.bankofengland.co.uk/statistics/money-and-credit/2026/august-2026"}
{"eventDate": "2025-12-18","eventType": "bankRateChange","title": "Bank Rate cut to 3.75% (-25 bps)","bankRatePercent": 3.75,"previousRatePercent": 4,"changeBps": -25,"changeDirection": "decrease","url": "https://www.bankofengland.co.uk/boeapps/database/Bank-Rate.asp"}
| Field | Type | Meaning |
|---|---|---|
eventDate | string | The London calendar day of the event, YYYY-MM-DD |
eventType | string | One of the event types |
title | string | What lands that day, as the Bank names it; for a rate change, the move in words |
isUpcoming | boolean | Still ahead. With a published time, measured against that moment; a date-only entry counts as ahead for the whole of its day |
daysUntil | number | Whole days from today to eventDate, negative once it has passed |
timeKnown | boolean | Whether the source published a time of day at all |
eventDateTimeUtc | string | null | The publication moment, ISO 8601 UTC; null when timeKnown is false |
eventTimeLondon | string | null | The same moment as HH:MM London wall clock; null when timeKnown is false |
dayOfWeek | string | Weekday name of eventDate |
committee | string | null | MPC, FPC, or null for feed entries and rate changes |
detailUrl | string | null | The page the entry points to — minutes, report, release, speech or event |
summary | string | null | The standfirst the Bank syndicates with a feed entry, cut at 400 characters; null on the date pages |
sourceFeed | string | null | Which feed the row came from, in releases mode |
url | string | The page or feed that was fetched |
fetchedAt | string | Fetch time, ISO 8601 UTC |
dateConfirmed | boolean | mpcDates/fpcDates: false when the year's heading marks the dates as provisional |
hasMinutes | boolean | mpcDates: the summary and minutes are published that day |
hasMonetaryPolicyReport | boolean | mpcDates: a quarterly Monetary Policy Report lands with the decision |
bankRateAtFetchPercent | number | null | mpcDates: the Bank Rate printed on the schedule page at fetch time |
hasFpcRecord | boolean | fpcDates: the committee record is published that day |
hasFinancialStabilityReport | boolean | fpcDates: a Financial Stability Report lands with it |
bankRatePercent | number | bankRate: the level the change moved to, in percent |
previousRatePercent | number | null | bankRate: the level before it; null for the oldest change in the table |
changeBps | number | null | bankRate: signed move in basis points |
changeDirection | string | null | bankRate: increase or decrease |
Every run also writes a SUMMARY record to its key-value store: requests made, entries read, what each filter dropped,
and — in mpcDates — the Bank Rate and the next announcement date the page prints.
Dataset views: Calendar (any mode), Committee dates, Releases and speeches, Bank Rate changes.
Use it from code / agents
One run is one to five requests and finishes in seconds, so a synchronous call is fine for an agent or a request handler.
curl -X POST "https://api.apify.com/v2/acts/yadroo~boe-release-calendar/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"mpcDates","onlyUpcoming":true,"fields":["eventDate","dayOfWeek","hasMonetaryPolicyReport","daysUntil"],"maxItems":5}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('yadroo/boe-release-calendar').call({ mode: 'bankRate', dateFrom: '2015-01-01', sortOrder: 'latest', maxItems: 30 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("yadroo/boe-release-calendar").call(run_input={"mode": "releases", "feeds": ["statistics"], "sinceHours": 24, "sortOrder": "latest"})items = client.dataset(run["defaultDatasetId"]).list_items().items
MCP: add https://mcp.apify.com to Claude / Cursor / any MCP client and call the yadroo/boe-release-calendar tool with
the same JSON input. Narrow the row with fields to keep a model's context small.
Pricing
Pay per event: $0.001 for starting a run plus $0.002 per dataset row on the free tier (per-row price is lower on paid tiers: $0.0018 bronze, $0.0016 silver, $0.0014 gold and above; the start event is flat). Every run is charged the start event, including a watcher run that finds nothing — calendar runs are small, so that $0.001 is a visible share of a tiny run.
| Run | Rows | Cost |
|---|---|---|
MPC announcement days (mpcDates) | 16 | $0.001 + $0.032 = $0.033 |
FPC dates (fpcDates) | 8 | $0.001 + $0.016 = $0.017 |
A month of statistical releases (releases, statistics) | 30 | $0.001 + $0.060 = $0.061 |
Bank Rate since 2015 (bankRate) | 25 | $0.001 + $0.050 = $0.051 |
A daily watcher run with nothing new (onlyNew) | 0 | $0.001 + $0 = $0.001 |
Compute is negligible in practice: 256 MB, no browser, one to five requests, a few seconds per run.
Limits & FAQ
- Dates, not figures. The Bank publishes the schedule and the rate level; there is no actual, forecast or previous
column anywhere in this source, and none in the output. The numbers live behind
detailUrl. - No calendar of forthcoming statistical releases. The Bank has no feed of what is about to be published: its filtered "upcoming" listings are filled in the browser and its two-week diary page is free prose with no per-item markup, so neither is used here. Future dates are therefore covered for the two committees and for booked events — past releases come from the feeds. Do not expect next month's Money and Credit date from this actor.
- The committee pages hold the current and next year only. Sixteen MPC dates and eight FPC dates on 2026-09-29.
Earlier years are not on those pages, and
dateFromcannot bring them back. - No clock time on the committee pages. Those rows say
timeKnown: falserather than guessing an hour. The announcement has been at noon London for years, but the Bank does not print it on the schedule, so the actor does not either. - Feeds hold 50 entries each. That is roughly eight months of statistics, three months of publications or news, ten
months of speeches. Anything older is gone from the source;
dateFromnarrows what is there, it cannot extend it. - The events feed mixes past and future. It is the one place future dates appear, but most of its 50 entries are
past. Use
onlyUpcoming: truefor the diary half. - Two HTML layouts. The committee pages are parsed by shape — a year heading followed by a two-column table — not by CSS classes. A redesign that removes the tables makes the run fail with a message naming the page instead of quietly returning zero rows. The rate table is a legacy page and is matched by its own column headers.
- robots.txt is honoured. The Bank excludes its interactive database area and the site search; none of the four
paths used here is excluded. Before reading the rate table the actor fetches
robots.txtand stops with a clear message if that ever changes. - Politeness. One request per page or feed, at most five per run, with backoff on 429 and 5xx and a normal User-Agent. There is no login, captcha or anti-bot wall on any of these paths.
- Empty results are not silent. A run whose filters match nothing ends with a message naming mode, keyword and
window — except with
onlyNew, where zero rows is the correct "nothing changed" answer. - Personal data. The only names in the output are those of Bank officials inside the speech titles the Bank publishes itself. No contact details are collected.
- Source and licence. Data comes from the Bank of England: the MPC date page, the FPC date page, the Bank's RSS feeds and the Bank Rate table. Reuse of the rate data is covered by the UK Open Government Licence; rows carry facts about the schedule and links, never the text of a publication.
Made by Yadroo. Sibling actors: ons-release-calendar, fed-fomc-calendar, bls-release-calendar, us-treasury-yields, statcan-release-calendar.