# Economic Calendar API: FOMC, ECB, CPI, GDP (`maliksaid/economic-calendar`) Actor

Official economic calendar from 9 agencies: release dates and times for GDP, CPI inflation, jobs and retail data, plus Fed FOMC, ECB and Bank of Canada meeting dates. US, UK, euro area, Canada and Japan. Time zones, periods, source links, policy rates and a change-only mode.

- **URL**: https://apify.com/maliksaid/economic-calendar.md
- **Developed by:** [Malik Said](https://apify.com/maliksaid) (community)
- **Categories:** AI, Developer tools, Other
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 calendar events

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 API: FOMC, ECB, CPI, GDP

This Actor returns an official economic calendar. It reads the release calendars of statistics offices and the meeting calendars of central banks. Every row is one scheduled event: a data release, a central bank rate decision or a set of minutes.

Each row has the country, the agency, the event name, the local date and time with its time zone, the exact UTC time, the period the release covers and a link to the official page. Central bank rows carry the current policy rate. With your own free FRED key, main U.S. releases also get their actual and previous values.

Use it to plan trading days, set alerts before CPI or a rate decision, fill a market dashboard, or give an AI agent the dates it needs. Turn on change-only mode and schedule it to hear about new dates, moved dates and new values.

### Economic calendar coverage

Counted on 21 October 2026 for 1 January 2026 to 31 December 2027, without a FRED key. That run returned 1,012 events.

| Country | Agency | Code | Events | Time of day | Values |
|---|---|---|---|---|---|
| United States | Bureau of Economic Analysis | `BEA` | GDP, personal income and outlays (PCE), trade, regional data | Yes | With FRED key: real GDP, PCE price index |
| United States | Census Bureau | `CENSUS` | Retail sales, housing starts, durable goods, construction, wholesale and more | Yes | With FRED key: retail sales, housing starts |
| United States | Bureau of Labor Statistics | `BLS` | CPI, jobs report, PPI, JOLTS (dates come from FRED) | No | With FRED key: all four |
| United States | Federal Reserve | `FED` | FOMC meetings and minutes; G.17 industrial production with FRED key | No | With FRED key: target range upper limit, industrial production |
| United Kingdom | Office for National Statistics | `ONS` | GDP, CPI inflation, labour market, retail sales, trade, public finances | Yes | No |
| Euro area and EU | Eurostat | `EUROSTAT` | Euro indicators: flash HICP inflation, GDP, unemployment, industry, retail | No | No |
| Euro area | European Central Bank | `ECB` | Governing Council monetary policy decisions | No | Deposit facility rate |
| Canada | Bank of Canada | `BOC` | Interest rate announcements and Monetary Policy Reports | No | Target for the overnight rate |
| Japan | Statistics Bureau of Japan | `SBJ` | CPI (Japan and Tokyo), Labour Force Survey | No | No |

Events per source in that run: BEA 110, Census 313, FOMC 22, ONS 337, Eurostat 154, ECB 10, Bank of Canada 16, Statistics Bureau of Japan 50.

"Time of day: No" means the source gives the date only. Those rows have an empty `scheduledTime` and `scheduledAtUtc`. The Actor does not guess a time.

There are no consensus forecasts. Forecasts are made by private data firms and are not in any official source.

### Economic calendar data returned

| Field | Meaning |
|---|---|
| `country` | `US`, `GB`, `EU`, `CA` or `JP` |
| `currency` | Currency of the country or area: `USD`, `GBP`, `EUR`, `CAD` or `JPY` |
| `impact` | `high`, `medium` or `low`, from the impact table below |
| `countryName` | Country or area in English |
| `agency` | Agency code from the table above |
| `agencyName` | Agency name |
| `eventType` | `data-release`, `central-bank-meeting` or `central-bank-minutes` |
| `eventName` | Release or event name as the agency writes it |
| `scheduledDate` | Local date at the agency |
| `scheduledTime` | Local time, 24-hour. Empty when the source gives none |
| `timezone` | Time zone of the local date and time, for example `America/New_York` |
| `scheduledAtUtc` | Exact time in UTC. Empty when the source gives no time |
| `dateStatus` | `confirmed`, or `provisional` for ONS dates not yet fixed |
| `status` | `upcoming`, `released` or `cancelled` at run time |
| `periodCovered` | Reference period, for example `September 2026` |
| `actualValue` | Value published at this event |
| `actualValuePeriod` | Observation date of the actual value |
| `previousValue` | Value before this event |
| `previousValuePeriod` | Observation date of the previous value |
| `valueUnit` | Unit and measure of the values |
| `valueSeriesId` | Official series id of the values |
| `valueSource` | FRED, ALFRED, Bank of Canada Valet API or ECB Data Portal |
| `sourceUrl` | Official page for the event or the calendar |
| `id` | Stable event id, used by change-only mode |
| `changeType` | `new` or `changed` in change-only mode |
| `scrapedAt` | When the Actor collected the event |

How the values work:

- **Bank of Canada:** `previousValue` is the target rate on the announcement day. For a past announcement, `actualValue` is the rate on the next business day, when a change takes effect.
- **ECB:** the calendar lists future meetings only. `previousValue` is the latest deposit facility rate.
- **FRED (your key):** for a past release, `actualValue` and `previousValue` are the values as first published on the release day (ALFRED vintage). Later revisions do not change them. For an upcoming release, `previousValue` is the latest value. FOMC rows get the upper limit of the target range before and after the meeting.

### Economic calendar impact levels

Every event has an `impact` level. The level is our own fixed rating by event type. No official source rates impact, so the table below is the whole rule. Use the **Minimum impact** input to keep only high or medium events. Rows below the minimum are not saved and not charged.

| Impact | Events |
|---|---|
| `high` | Rate decisions (FOMC, ECB, Bank of Canada). CPI inflation (US BLS, UK ONS, euro area flash and HICP, Japan). Jobs reports (US Employment Situation, UK Labour Market). GDP (US advance, second and third estimates, UK first quarterly and monthly estimates, euro area flash). US Personal Income and Outlays (PCE) |
| `medium` | FOMC minutes. Retail sales. Producer prices. Trade balance (US, UK, euro area). Industrial production. US durable goods, housing starts, new home sales and JOLTS. UK quarterly national accounts. Euro area unemployment and GDP main aggregates. Tokyo CPI. Japan Labour Force Survey basic tabulation |
| `low` | Every other release, for example construction, public finances, business formation and regional data |

### How to get an economic calendar

1. Set **Days ahead** for the upcoming window (default 30) and **Days back** for recent events (default 7). Or set a **Start date** and **End date**.
2. Pick **Countries**, **Agencies** or **Event types**, or leave them empty for all.
3. Add **Keywords** such as `GDP`, `inflation` or `retail` to narrow the list. Or set **Minimum impact** to `high` for market-moving events only.
4. Optional: paste your free **FRED API key** to add BLS dates and U.S. values. Get a key at [fred.stlouisfed.org](https://fred.stlouisfed.org/docs/api/api_key.html).
5. Run the Actor. Download the events as JSON, CSV or Excel, or read them through the API.

#### Input example

```json
{
    "daysAhead": 30,
    "daysBack": 7,
    "countries": ["US", "EU"],
    "eventTypes": ["central-bank-meeting", "data-release"],
    "keywords": ["GDP", "inflation", "FOMC", "ECB"],
    "minImpact": "medium",
    "changeOnly": false,
    "maxItems": 100
}
```

#### Output example

This is a real row from a run on 21 October 2026, with the `impact` and `currency` fields added on 23 October 2026.

```json
{
    "id": "BOC:BOC rate announcement|2026-01",
    "country": "CA",
    "currency": "CAD",
    "countryName": "Canada",
    "agency": "BOC",
    "agencyName": "Bank of Canada",
    "eventType": "central-bank-meeting",
    "eventName": "Bank of Canada interest rate announcement and Monetary Policy Report",
    "impact": "high",
    "scheduledDate": "2026-01-28",
    "scheduledTime": null,
    "timezone": "America/Toronto",
    "scheduledAtUtc": null,
    "dateStatus": "confirmed",
    "periodCovered": null,
    "sourceUrl": "https://www.bankofcanada.ca/2026/01/fad-press-release-2026-01-28/",
    "actualValue": 2.25,
    "actualValuePeriod": "2026-01-29",
    "previousValue": 2.25,
    "previousValuePeriod": "2026-01-28",
    "valueUnit": "Percent (target for the overnight rate)",
    "valueSeriesId": "V39079",
    "valueSource": "Bank of Canada Valet API",
    "status": "released",
    "changeType": null,
    "scrapedAt": "2026-10-21T14:51:43.750Z"
}
```

A UK release row from the same run:

```json
{
    "id": "ONS:Consumer price inflation, UK|October 2026",
    "country": "GB",
    "currency": "GBP",
    "agency": "ONS",
    "eventType": "data-release",
    "eventName": "Consumer price inflation, UK: October 2026",
    "impact": "high",
    "scheduledDate": "2026-11-18",
    "scheduledTime": "07:00",
    "timezone": "Europe/London",
    "scheduledAtUtc": "2026-11-18T07:00:00Z",
    "dateStatus": "confirmed",
    "periodCovered": "October 2026",
    "sourceUrl": "https://www.ons.gov.uk/releases/consumerpriceinflationukoctober2026",
    "status": "upcoming"
}
```

### Change-only mode for economic calendar alerts

Turn on **Change-only mode** and schedule the Actor, for example every morning. The first run returns every event in the window. Later runs with the same **Monitor name** return only:

- events that were not seen before (`changeType: "new"`)
- events whose date, time, date status, status, actual value or previous value changed (`changeType: "changed"`)

The id stays the same when a release moves, so a moved date shows up as `changed`. Eurostat gives no period, so a moved Eurostat date shows as a new event. Use a different monitor name for each watch list. The old field `stateKey` still works.

### How much does an economic calendar cost?

You pay per event saved, plus a small fee per run. The default window (7 days back, 30 days ahead) returned 81 events on 21 October 2026. A run that saves nothing in change-only mode pays the start fee only.

| Event | Price |
|---|---|
| Run start | $0.02 |
| Calendar event | $0.003 ($3.00 per 1,000) |

| Calendar events in one run | Cost, start fee included |
|---|---|
| 100 | $0.32 |
| 1,000 | $3.02 |

### Sources and terms

The Actor reads public calendars and official APIs only. It sends a few slow requests per source and respects each robots.txt.

- U.S. Federal Reserve Board, Bureau of Economic Analysis and Census Bureau: U.S. government information.
- UK Office for National Statistics: Open Government Licence v3.0.
- Eurostat: Creative Commons Attribution 4.0 (CC BY 4.0). Source: Eurostat.
- European Central Bank: the source is the ECB. This information is available free of charge at [ecb.europa.eu](https://www.ecb.europa.eu/press/calendars/mgcgc/html/index.en.html).
- Bank of Canada: the source is the Bank of Canada. This information is available free of charge at [bankofcanada.ca](https://www.bankofcanada.ca/core-functions/monetary-policy/key-interest-rate/).
- Statistics Bureau of Japan, Ministry of Internal Affairs and Communications: Government of Japan Standard Terms of Use (compatible with CC BY 4.0). Edited: dates are converted to ISO format.
- FRED: This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis. By using your FRED key you agree to the [FRED API Terms of Use](https://fred.stlouisfed.org/docs/api/terms_of_use.html). Series that FRED marks as third-party copyright are skipped.

Not included: Bank of England, Bank of Japan and China's National Bureau of Statistics. Their terms limit commercial reuse of their web content. Statistics Canada was offline during the build and may come in a later version.

### Related Actors

- [Inflation and CPI Tracker](https://apify.com/maliksaid/inflation-cpi-tracker): official CPI values and release dates from ONS, Statistics Canada, ABS, Eurostat and OECD.
- [Central Bank Exchange Rates API](https://apify.com/maliksaid/central-bank-fx-rates): official FX reference rates from five central banks.

### FAQ

**Does it include forecasts?** No. Consensus forecasts are private data. The Actor returns official dates and official values only.

**Why are some times empty?** Eurostat, the ECB, the Bank of Canada, the FOMC, FRED and the Statistics Bureau of Japan publish dates without times in the pages the Actor reads.

**Why are BLS releases missing?** The BLS website blocks automated access in its robots.txt. With a FRED key, the Actor gets BLS release dates and values from FRED.

**How is the impact level set?** By a fixed table of event types, shown in the impact levels section. We wrote the table ourselves. No agency publishes an impact rating.

**Can I filter by currency?** Every row has a `currency` code, such as `EUR` for the euro area. Pick the matching **Countries** in the input: `US` for USD, `GB` for GBP, `EU` for EUR, `CA` for CAD and `JP` for JPY.

**Can I get past events?** Yes. Set a **Start date**. History goes back as far as each calendar lists it. The ECB calendar shows future meetings only.

# Actor input Schema

## `daysAhead` (type: `integer`):

Include events up to this many days after today (UTC). Ignored when End date is set.

## `daysBack` (type: `integer`):

Include events from this many days before today (UTC), so recent releases show their status and values. Ignored when Start date is set.

## `countries` (type: `array`):

Keep only these countries. Leave empty for all. EU covers Eurostat and the European Central Bank.

## `agencies` (type: `array`):

Keep only these agencies. Leave empty for all. BLS release dates need a FRED API key.

## `eventTypes` (type: `array`):

Keep only these event types. Leave empty for all.

## `minImpact` (type: `string`):

Keep only events at or above this impact level. The level is our fixed rating by event type (see the README table). Rows below it are not saved and not charged.

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

Keep only events whose name, agency or period contains at least one keyword, for example GDP or inflation. Leave empty to keep every event.

## `fredApiKey` (type: `string`):

Your own free key from fred.stlouisfed.org. With it the Actor adds BLS release dates (CPI, jobs report, PPI, JOLTS), Federal Reserve G.17 dates and actual and previous values for main U.S. releases and FOMC decisions. Without it the Actor runs without those.

## `changeOnly` (type: `boolean`):

Return only events that are new or changed since the last change-only run with the same monitor name. A change is a new date or time, a new status, or a new actual or previous value. Schedule the Actor with this on to get alerts.

## `monitorName` (type: `string`):

Name of the memory that change-only mode uses. Use a different name for each separate watch list. Inputs that still send the old field `stateKey` keep working.

## `allUkReleases` (type: `boolean`):

ONS also lists health, crime and population releases. Off keeps the main economic releases only, such as GDP, inflation, labour market, retail sales, trade and public finances.

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

Optional fixed start, for example 2026-01-01. Overrides Days back.

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

Optional fixed end, for example 2026-12-31. Overrides Days ahead.

## `maxItems` (type: `integer`):

Stop after saving this many events. The default keeps test runs short and cheap. Set 0 for no limit.

## Actor input object example

```json
{
  "daysAhead": 30,
  "daysBack": 7,
  "countries": [],
  "agencies": [],
  "eventTypes": [],
  "minImpact": "low",
  "keywords": [],
  "changeOnly": false,
  "monitorName": "default",
  "allUkReleases": false,
  "maxItems": 100
}
```

# Actor output Schema

## `results` (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 = {
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("maliksaid/economic-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 = { "maxItems": 100 }

# Run the Actor and wait for it to finish
run = client.actor("maliksaid/economic-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 '{
  "maxItems": 100
}' |
apify call maliksaid/economic-calendar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maliksaid/economic-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/OxCJHOEQaFHJCYs6D/builds/ColV0fejEJFMPhEDU/openapi.json
