# Economic Calendar: Eurostat, ECB and ONS Release Calendar (`plainrecordlabs/official-release-calendar`) Actor

Economic calendar of upcoming official release dates from the Eurostat release calendar, the ECB statistical and meeting calendars and the ONS release calendar, in one row shape with status, time zone, links and an iCal event per row. Dates only, no forecasts or actual values. Unofficial tool.

- **URL**: https://apify.com/plainrecordlabs/official-release-calendar.md
- **Developed by:** [Plain Record Labs](https://apify.com/plainrecordlabs) (community)
- **Categories:** Developer tools, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 release dates

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Economic Calendar: Eurostat, ECB and ONS Release Calendar

Get an economic calendar of upcoming official release dates for the euro area and the UK as clean rows. One run
reads the Eurostat release calendar, the ECB statistical calendar and meeting calendar, and the ONS release calendar, and returns each release
in the same shape: source, release name, series codes, reference period, date, time with its time zone, status and a
link. Every row also carries an iCal event and the credit line its source asks for.

Press Start with the defaults to get the next 30 days from all three sources.

> This is an unofficial tool, not affiliated with Eurostat, the European Central Bank or the Office for National
> Statistics. It gives release dates only. It has no consensus forecasts, no previous values and no actual figures.
> ECB information may be obtained free of charge through www.ecb.europa.eu, and the other two calendars are free on
> their own sites too. This Actor puts them in one feed.

### What people use it for

- **Macro dashboards and trading tools:** add the European half of an economic release calendar next to a US one,
  from the agencies themselves instead of a news site.
- **AI agents and bots:** ask "what does Eurostat or the ONS release this week" through one API call that returns
  dates in UTC where the source gives a time.
- **Calendar files:** import the run's iCal file into Outlook, Google Calendar or Apple Calendar to see ECB release
  dates, ECB meetings and ONS releases next to your own events.

### Input

| Field | What it does |
|---|---|
| **Sources** | `eurostat`, `ecb`, `ons`. Empty means all three. |
| **From date** and **To date** | Like `2026-11-01`. Empty means today to 30 days from today. At most 400 days per run. |
| **Keywords** | Keeps a row when any keyword is in its title, category, theme, reference period or series code. For example `inflation`, `GDP`, `HICP`, `labour market` or `monetary policy`. |
| **Eurostat scope** | Euro indicators only (the default, which covers flash inflation, GDP, unemployment, retail trade and similar), or everything in the Eurostat calendar, which adds articles and publications. |
| **Include ECB meetings** | On by default. Adds Governing Council and General Council meeting dates and press conferences. |
| **Include cancelled ONS releases** | Off by default. |
| **Max results** | A cap on how many rows one run returns. |

The next 30 days from all three sources was 128 rows on 2026-10-27 (82 ONS, 29 ECB, 17 Eurostat euro indicators).
A run makes about four requests and takes well under a minute.

### Output

One item per release or meeting, sorted by date. This one is from a real run on 2026-10-27:

```json
{
  "uid": "eurostat:22494428",
  "source": "Eurostat",
  "agency": "Eurostat (European Commission)",
  "timezone": "Europe/Luxembourg",
  "category": "data release, euro indicators release, statistics explained",
  "title": "Flash estimate inflation euro area",
  "seriesCodes": ["prc_hicp_fp", "prc_hicp_manr", "prc_hicp_mmor", "prc_hicp_midx", "prc_hicp_inw", "prc_hicp_cow"],
  "theme": "Economy and finance",
  "referencePeriod": "October 2026",
  "releaseDate": "2026-11-04",
  "releaseTimeLocal": null,
  "releaseDateTimeUtc": null,
  "timeStated": false,
  "status": "confirmed",
  "provisionalDateText": null,
  "previousDate": null,
  "changeNotice": null,
  "euroIndicator": true,
  "includesPressRelease": null,
  "summary": null,
  "url": "https://ec.europa.eu/eurostat/web/main/news/release-calendar",
  "ical": "BEGIN:VEVENT\r\nUID:...@official-release-calendar.plainrecordlabs\r\n...\r\nEND:VEVENT",
  "attribution": "Source: Eurostat release calendar. Reformatted into rows by Plain Record Labs. Eurostat is not responsible for this reuse.",
  "licence": "Eurostat copyright notice and free re-use of data (Commission Decision 2011/833/EU)",
  "licenceUrl": "https://ec.europa.eu/eurostat/web/main/help/copyright-notice",
  "retrievedAt": "2026-10-27T15:43:15.491Z"
}
```

The run's key value store also holds `CALENDAR`, all returned rows as one `.ics` file, and `SUMMARY`, the counts per
source and each source's attribution.

Things to know before you rely on it:

- **Times.** The ECB gives a time for each statistical release, local to Frankfurt, and the ONS gives one for each
  confirmed release. Those rows have `releaseTimeLocal` and `releaseDateTimeUtc`. The Eurostat calendar feed gives
  the day only, and the ECB meeting calendar gives no times, so those rows have the date and a null time. In the
  iCal file they are all day events.
- **Status.** Most rows are `confirmed`. A `provisional` row is an ONS date not fixed yet, with the ONS text such
  as "November 2026" in `provisionalDateText`. A `tentative` row is one the ECB marks tentative. A `postponed` row is
  an ONS release that moved, with the old date and the reason. ONS rows can also be `cancelled`, or `published` when
  your range starts in the past.
- **Dates move.** Agencies change dates. Run it again before you act on a date, and treat provisional and tentative
  rows as estimates.
- **Links.** ONS rows link to the release page. Eurostat and ECB rows link to the calendar page they came from.
- **What it does not cover.** The Bank of England is not included. Its site terms allow only non commercial reuse.
  National statistics offices of other EU countries are not included either. The Eurostat calendar also lists a few
  releases that other bodies produce, such as the Commission's Economic Sentiment Indicator and ECB interest rate
  figures. Those are left out of the Eurostat rows. ECB releases come from the ECB's own calendar instead.

| Field | What it holds |
|---|---|
| `uid` | A stable id for the row. |
| `source`, `agency` | Eurostat, ECB or ONS, and the agency's full name. |
| `title`, `category`, `theme` | The release or meeting as the source names it, its type and the Eurostat theme. |
| `seriesCodes`, `referencePeriod` | Eurostat or ECB dataset codes, and the period the release covers. |
| `releaseDate`, `releaseTimeLocal`, `timezone` | The date and local time in the source's own time zone. |
| `releaseDateTimeUtc`, `timeStated` | The time in UTC, and whether the source states a time at all. |
| `status`, `provisionalDateText`, `previousDate`, `changeNotice` | Confirmed, provisional, tentative, postponed, cancelled or published, with the ONS details of a date change. |
| `euroIndicator`, `includesPressRelease` | Eurostat euro indicator flag, and whether an ECB release comes with a press release. |
| `summary` | The ONS release summary. |
| `url` | The ONS release page, or the Eurostat or ECB calendar page. |
| `ical` | The row as an iCalendar event. |
| `attribution`, `licence`, `licenceUrl` | The credit line and terms the source asks you to keep with the data. |
| `retrievedAt` | When the run read the source, in UTC. |

### Where the data comes from and how to credit it

| Source | Read from | Terms | Credit to keep with the data |
|---|---|---|---|
| ONS | The ONS release calendar search API at api.beta.ons.gov.uk | Open Government Licence v3.0 | Source: Office for National Statistics. Contains public sector information licensed under the Open Government Licence v3.0. |
| Eurostat | The feed behind the Eurostat release calendar page | Eurostat copyright notice, reuse for commercial or non commercial purposes with the source acknowledged | Source: Eurostat release calendar. Reformatted into rows by Plain Record Labs. Eurostat is not responsible for this reuse. |
| ECB | The ECB statistical calendar and the Governing Council meeting schedule | ECB copyright notice, free use with the ECB cited as the source | Source: European Central Bank (ECB). This information may be obtained free of charge through www.ecb.europa.eu. |

The same credit is in each row's `attribution` field and in the iCal event description. If you pass the data on,
keep it there.

### FAQ

**Is this an economic release calendar with forecasts?**
No. It has official dates only. Sites that list consensus forecasts get them from surveys of economists, and no
agency publishes those.

**How do I get the ONS release calendar as JSON?**
Set **Sources** to `ons` and pick your dates. Each row has the ONS release page link, its status and the time in UTC.

**How do I get the Eurostat release calendar for euro indicators?**
That is the default. Set **Eurostat scope** to everything to get the full Eurostat calendar.

**Where are the ECB release dates for HICP or money supply?**
Set **Sources** to `ecb` and **Keywords** to `HICP` or `BSI`. The ECB dataset code is in `seriesCodes`.

**How often should I run it?**
Once a day is plenty. The calendars change a few times a week at most.

### Use it from an AI agent or MCP

AI agents can find and run this Actor through the [Apify MCP server](https://mcp.apify.com). Its `search-actors`
tool finds it, `fetch-actor-details` reads the input and output fields described above, and `call-actor` runs it on
your Apify account at the prices on the Pricing tab. To give an agent only this Actor as a tool, add it to the server
URL: `https://mcp.apify.com?tools=plainrecordlabs/official-release-calendar`.

Every field is optional. An empty input `{}` returns the next 30 days from all three sources. For example, this input
returns the inflation releases in November 2026:

```json
{ "fromDate": "2026-11-01", "toDate": "2026-11-30", "keywords": ["inflation"] }
```

### Pricing

You pay per release row returned. There is no start fee. Prices are on the Pricing tab. **Max results** and your
run's cost limit cap what one run can cost.

### Feedback

Need another official source or a field? Open an issue on the Issues tab.

Plain Record Labs

# Actor input Schema

## `sources` (type: `array`):

Which calendars to read: eurostat, ecb or ons. Empty = all three, for example \["ecb"] for ECB release and meeting dates only.

## `fromDate` (type: `string`):

First release date to return, as YYYY-MM-DD, for example 2026-11-01. Empty = today (UTC).

## `toDate` (type: `string`):

Last release date to return, as YYYY-MM-DD, for example 2026-11-30. Empty = 30 days after the from date. At most 400 days per run.

## `keywords` (type: `array`):

Keep a row when any keyword appears in its title, category, theme, reference period or series code, for example inflation, GDP, HICP or monetary policy. Case does not matter. Empty = all.

## `eurostatScope` (type: `string`):

euro-indicators keeps only the headline releases such as flash inflation, GDP and unemployment. all returns every item in the Eurostat calendar, including articles and publications. For example euro-indicators.

## `includeEcbMeetings` (type: `boolean`):

Add Governing Council and General Council meeting dates and press conferences from the ECB meeting calendar, for example to see the next monetary policy meeting.

## `includeCancelled` (type: `boolean`):

Also return ONS releases marked cancelled in the date range, for example to spot a release that will not come out.

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

Return at most this many rows, for example 50. The next 30 days from all three sources is usually 100 to 450 rows. 0 = no limit. Default 1000.

## Actor input object example

```json
{
  "sources": [
    "eurostat",
    "ecb"
  ],
  "fromDate": "2026-11-01",
  "toDate": "2026-11-30",
  "keywords": [
    "inflation",
    "GDP"
  ],
  "eurostatScope": "euro-indicators",
  "includeEcbMeetings": true,
  "includeCancelled": false,
  "maxResults": 50
}
```

# Actor output Schema

## `releases` (type: `string`):

One item per release or meeting, sorted by date.

## `calendar` (type: `string`):

The returned rows as one .ics calendar you can import or subscribe to.

## `summary` (type: `string`):

Counts per source, the date range and each source's attribution.

# 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 = {
    "keywords": [],
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("plainrecordlabs/official-release-calendar").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 = {
    "keywords": [],
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("plainrecordlabs/official-release-calendar").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 '{
  "keywords": [],
  "maxResults": 50
}' |
apify call plainrecordlabs/official-release-calendar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plainrecordlabs/official-release-calendar"
        }
    }
}
```

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/lIcCyDgc9xVpJadS9/builds/5bgdSj3LPB9bIVHnK/openapi.json
