Bank of England Calendar: MPC Dates, Releases & Bank Rate avatar

Bank of England Calendar: MPC Dates, Releases & Bank Rate

Pricing

from $1.40 / 1,000 calendar row returneds

Go to Apify Store
Bank of England Calendar: MPC Dates, Releases & Bank Rate

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

Samat Makatov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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.

Need it tailored to your workflow? Missing a field, a filter, another source or a different output format? Open an issue and describe what you need — we read every request and adapt the actor.

Use cases

  • When is the next UK rate decision: mode: "mpcDates" returns every announcement day the committee has published for this year and next, with daysUntil counting down and bankRateAtFetchPercent giving 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" with feeds: ["statistics"], sinceHours: 24 and onlyNew: true on 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.

FieldTypeDefaultAllowed values / notes
modestringmpcDatesmpcDates, fpcDates, releases, bankRate. See Modes
feedsstring[]— (prefilled statistics, publications)Any of statistics, publications, speeches, news, events. Empty = all five. Only in releases mode. See Feeds
querystring— (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
sinceHoursinteger—1–8760. Keep entries published inside the last N hours, counted in UTC. Dates still ahead are kept regardless. Only in releases mode
onlyUpcomingbooleanfalseDrop rows whose date has already passed. Works in every mode; in bankRate it leaves nothing, since every change is in the past
dateFromstring—Earliest event date, YYYY-MM-DD, inclusive
dateTostring—Latest event date, YYYY-MM-DD, inclusive
onlyNewbooleanfalseWrite only rows no earlier run with the same filters delivered; a moved date counts as new. See The onlyNew watcher
sortOrderstringsoonestsoonest = earliest date first, latest = latest first
maxItemsinteger251–1000. Which rows survive is decided per mode before sorting; with onlyNew, rows delivered before do not count. See What maxItems keeps
fieldsstring[]allKeep only these fields, in this order, e.g. ["eventDate", "title", "hasMonetaryPolicyReport"]. eventDate, eventType and title are always kept. See Output fields

mode, feeds and sortOrder take exactly the values listed above, and maxItems/sinceHours must stay inside their ranges: anything else ("speechs", maxItems: 5000) is refused by Apify before the run starts, with the allowed values in the error, and nothing is charged. query is free text, matched case-insensitively with runs of spaces counted as one. Filters that belong to another mode are switched off and reported in the log and SUMMARY rather than applied silently.

Reference

Modes

ModeReadsRows per runWhat it is for
mpcDates/monetary-policy/upcoming-mpc-dates16 on 2026-09-29 (this year and next)Rate-announcement days, minutes and Monetary Policy Report flags
fpcDates/financial-stability/upcoming-fpc-dates8 on 2026-09-29Committee record days and Financial Stability Report flags
releases/rss/<feed>, one request per feedup to 50 per feedWhat the Bank published, or booked, with the moment to the minute
bankRate/boeapps/database/Bank-Rate.asp258 changes on 2026-09-29, back to 1975-01-20The 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.

FeedWhat is in itReach of 50 entries (2026-09-29)eventType
statisticsMonthly and quarterly statistical releasesabout eight monthsstatisticalRelease
publicationsReports, working papers, consultation and policy papersabout three monthspublication
speechesSpeeches and remarks by Bank officialsabout ten monthsspeech
newsAnnouncements, market notices, minutes of market groupsabout three monthsnews
eventsConferences, workshops, calls for papers, citizens' forumsmixed: mostly past, with a handful of future datesevent

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. A "Maximum cost per run" that pays for fewer rows cuts the same list the same way: you get the rows closest to today, and the run says it stopped at your spending limit.

The onlyNew watcher

Each written row is remembered by its link plus its date in the named key-value store boe-release-calendar-state of your own Apify account, one record per filter set: mode, feeds, keyword and the window filters (sinceHours, dateFrom, dateTo, onlyUpcoming). Two scheduled tasks with different filters therefore keep separate histories. A date that moves counts as new, which is the point of watching a central-bank calendar. Entries delivered before are dropped before maxItems cuts the list, and an entry is remembered only once its row is written — a run stopped by your spending limit or the timeout loses nothing. The first run writes up to maxItems rows; later runs continue with what has not been delivered yet, then only with what is new. A run that finds nothing new ends successfully with zero rows and says so. Watchers set up before 2 October 2026 keep their history, except those with a window filter or a keyword with punctuation or accents: they start a new history once.

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"
}
FieldTypeMeaning
eventDatestringThe London calendar day of the event, YYYY-MM-DD
eventTypestringOne of the event types
titlestringWhat lands that day, as the Bank names it; for a rate change, the move in words
isUpcomingbooleanStill ahead. With a published time, measured against that moment; a date-only entry counts as ahead for the whole of its day
daysUntilnumberWhole days from today to eventDate, negative once it has passed
timeKnownbooleanWhether the source published a time of day at all
eventDateTimeUtcstring | nullThe publication moment, ISO 8601 UTC; null when timeKnown is false
eventTimeLondonstring | nullThe same moment as HH:MM London wall clock; null when timeKnown is false
dayOfWeekstringWeekday name of eventDate
committeestring | nullMPC, FPC, or null for feed entries and rate changes
detailUrlstring | nullThe page the entry points to — minutes, report, release, speech or event
summarystring | nullThe standfirst the Bank syndicates with a feed entry, cut at 400 characters; null on the date pages
sourceFeedstring | nullWhich feed the row came from, in releases mode
urlstringThe page or feed that was fetched
fetchedAtstringFetch time, ISO 8601 UTC
dateConfirmedbooleanmpcDates/fpcDates: false when the year's heading marks the dates as provisional
hasMinutesbooleanmpcDates: the summary and minutes are published that day
hasMonetaryPolicyReportbooleanmpcDates: a quarterly Monetary Policy Report lands with the decision
bankRateAtFetchPercentnumber | nullmpcDates: the Bank Rate printed on the schedule page at fetch time
hasFpcRecordbooleanfpcDates: the committee record is published that day
hasFinancialStabilityReportbooleanfpcDates: a Financial Stability Report lands with it
bankRatePercentnumberbankRate: the level the change moved to, in percent
previousRatePercentnumber | nullbankRate: the level before it; null for the oldest change in the table
changeBpsnumber | nullbankRate: signed move in basis points
changeDirectionstring | nullbankRate: increase or decrease

Output fields

fields narrows every row to the columns you list, in your order. eventDate, eventType and title are always kept (first, unless you place them), so a row never comes back empty. Letter case and a one-letter slip (hasMinute) are corrected and named in the run status; a column of another mode (bankRatePercent in mpcDates) or an unknown name is skipped with a note; a list with no usable column stops the run before anything is fetched (only the start event is charged).

Every run also writes a SUMMARY record to its key-value store (linked from the run's output as summary): requests made, entries read, what each filter dropped, rows skipped by onlyNew, why the run stopped early if it did, 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 ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yadroo/boe-release-calendar").call(run_input={"mode": "releases", "feeds": ["statistics"], "sinceHours": 720, "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. Bronze −10 %, Silver −20 %, Gold and above −30 % on the row price ($0.0018, $0.0016, $0.0014); the start event is the same on every plan. Platform usage is included — there is no separate compute bill. 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.

RunRowsCost
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

Your "Maximum cost per run" is respected: the run writes only the rows it pays for and ends with "Stopped at your spending limit: N rows delivered".

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 dateFrom cannot bring them back.
  • No clock time on the committee pages. Those rows say timeKnown: false rather 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; dateFrom narrows 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: true for 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.txt and 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, and not a failure. A run whose valid filters match nothing ends successfully with zero rows and a status that names the mode, feeds, keyword and window, says how many entries each filter dropped and which one to change; you pay only the start event. With onlyNew the status says "Nothing new" instead. A run fails only when the Bank's site cannot be read or a page no longer parses.
  • Run timeout. One run is one to five requests and takes seconds. If you set a very short timeout, the run stops before it and ends successfully with what it has read ("Stopped before the run timeout").
  • 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.