# Economic Calendar Scraper & API (Official Sources) (`ocius-data/economic-calendar`) Actor

Macro release calendar for the US, euro area, UK, Canada and Australia from BLS, BEA, Fed, ECB and ONS with actual values. AI agents ready via MCP.

- **URL**: https://apify.com/ocius-data/economic-calendar.md
- **Developed by:** [Ocius Data](https://apify.com/ocius-data) (community)
- **Categories:** Business, Agents
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 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 Scraper & API (Official Sources)

**Unlike calendars scraped from Investing.com or ForexFactory, every run also gives you a ready-to-import calendar file (`CALENDAR.ics`) for Google Calendar, Outlook or Apple Calendar, plus an `INSIGHTS` record with the next high-importance release and the largest moves against the previous period.** The run's status message shows those numbers and the calendar link as soon as it finishes.

**Economic Calendar API** returns the macroeconomic release calendar of the **United States, the euro area, the United Kingdom, Canada and Australia**, built only from the **official calendars of statistics agencies and central banks**: BLS, BEA, U.S. Census Bureau, Federal Reserve, Eurostat, ECB, ONS, Statistics Canada, Bank of Canada, ABS and RBA. Each row is one release or rate decision with the **time in UTC and in the agency's local time zone**, country, currency, event name, reference period, **importance**, category, **actual and previous values** for the most traded indicators, the **source URL** and the **licence** under which the data can be reused. You pay per event saved.

### Why this economic calendar

- **One-click calendar file and insights (new in 0.1.7).** `CALENDAR.ics` holds every event of the run, with country, importance, reference period, previous value, source and licence in each entry. `INSIGHTS` gives the next high-importance release with the hours left, the five largest moves against the previous period, the busiest day and counts by country, importance, category and data quality. Both are free and come from the data already read in the run.
- **Change and quality on every row (new in 0.1.7).** `change`, `changePercent` and `direction` against the previous period; `importanceReason` explains in one sentence why the release has its importance; `valuesStatus`, `dataQuality` and `warnings` say when a value is still pending or not covered, so an empty cell is never ambiguous.
- **Official sources, cleared for reuse.** Every event comes from the publishing agency itself, under public domain, the Open Government Licence, CC BY 4.0 or an equivalent reuse licence. Each row carries its `license` and the `attribution` text the agency asks for. Calendars copied from trading websites usually forbid redistribution; this one does not depend on them.
- **Actual and previous values from the source.** For CPI, the U.S. jobs report, PPI, JOLTS, euro area HICP, unemployment, GDP, retail trade and industrial production, UK CPI, labour market, monthly GDP and retail sales, and Canada's CPI, Labour Force Survey and monthly GDP, the values come from the agencies' own statistics APIs (BLS, Eurostat, ONS, Statistics Canada). They are included at no extra charge.
- **Correct times all year.** Times are converted from each agency's local time with daylight saving time handled per time zone (for example, euro indicators at 11:00 Luxembourg time are 10:00 UTC in winter and 09:00 UTC in summer).
- **Filters that work.** Date range (absolute or relative such as `today` to `+7d`), countries, importance and categories. Every filter is applied before a row is saved, so you never pay for rows you did not ask for.
- **Fair billing.** One `calendar-event` charge per row saved. Status messages and errors are never written to the dataset and never charged. Your maximum cost per run is respected.
- **Clear status.** Every country and source ends with a status in the `RUN_SUMMARY` record. If more than 20% of the selected countries or official sources cannot be read, the run is marked as failed so you notice; the events that were read are still delivered.

### How to use it

1. Choose the **date range**. Leave it empty for today and the next 7 days, or write dates such as `2026-11-01`, or relative values: `today`, `tomorrow`, `-7d`, `+2w`.
2. Choose the **countries**: `US`, `EA` (euro area), `GB`, `CA`, `AU`. Empty means all five.
3. Choose the **importance**: `high`, `medium`, `low` (default: high and medium).
4. Optionally limit the **categories**: inflation, labour, growth, consumer, business, housing, trade, central-bank, government, sentiment, other.
5. Run the Actor and open the **Calendar**, **Values and changes** or **Data quality and licence** view, download JSON, CSV or Excel, or import the `CALENDAR.ics` file linked in the status message.

Example input: high-importance U.S. and euro area events for the next two weeks, with dates read in New York time.

```json
{
  "dateFrom": "today",
  "dateTo": "+14d",
  "countries": ["US", "EA"],
  "importance": ["high"],
  "timezone": "America/New_York"
}
```

| Input | Default | Description |
|---|---|---|
| `dateFrom` | today | First day, `YYYY-MM-DD` or relative (`today`, `yesterday`, `-7d`). |
| `dateTo` | start + 7 days | Last day (included). Maximum range: 366 days. |
| `countries` | all | `US`, `EA`, `GB`, `CA`, `AU`. `UK` and `EU` are accepted as aliases. |
| `importance` | high, medium | Our rating of the release type (see the FAQ). |
| `categories` | all | One or more categories. |
| `releaseStatus` | all | `all`, `released` (time already passed) or `scheduled`. |
| `includeValues` | true | Adds actual and previous values where an official API provides them. |
| `timezone` | UTC | IANA time zone used to read the date range; adds `datetimeInRequestedTimezone` to each row. |
| `maxEvents` | 1000 | Stops after this many rows. |

### Output example and field dictionary

```json
{
  "eventId": "6cbcbbf49b72d188",
  "datetimeUtc": "2026-10-14T12:30:00.000Z",
  "date": "2026-10-14",
  "time": "08:30",
  "datetimeLocal": "2026-10-14T08:30:00-04:00",
  "timezone": "America/New_York",
  "timeType": "official",
  "dateStatus": "confirmed",
  "country": "US",
  "countryName": "United States",
  "currency": "USD",
  "event": "Consumer Price Index",
  "referencePeriod": "September 2026",
  "category": "inflation",
  "importance": "high",
  "status": "released",
  "actual": 3.7,
  "forecast": null,
  "previous": 3.4,
  "unit": "%",
  "metric": "CPI-U all items, year over year",
  "additionalValues": [
    { "metric": "CPI-U all items, month over month (seasonally adjusted)", "unit": "%", "actual": 0.6, "previous": 0.4 },
    { "metric": "Core CPI (less food and energy), year over year", "unit": "%", "actual": 2.6, "previous": 2.4 },
    { "metric": "Core CPI (less food and energy), month over month (seasonally adjusted)", "unit": "%", "actual": 0.3, "previous": 0.3 }
  ],
  "valuesSource": "BLS Public Data API",
  "source": "U.S. Bureau of Labor Statistics",
  "sourceUrl": "https://www.bls.gov/schedule/2026/home.htm",
  "license": "Public domain (U.S. government work)",
  "attribution": "Source: U.S. Bureau of Labor Statistics. BLS.gov cannot vouch for the data or analyses derived from these data after the data have been retrieved from BLS.gov.",
  "input": { "dateFrom": "2026-10-01", "dateTo": "2026-10-31", "timezone": "UTC" },
  "scrapedAt": "2026-11-02T12:37:30.160Z",
  "change": 0.3,
  "changeUnit": "percentage points",
  "changePercent": null,
  "direction": "up",
  "hoursUntilRelease": -456.1,
  "dayOfWeek": "Wednesday",
  "valueIsComputed": true,
  "valuesPeriod": "2026-09",
  "valuesSeriesUpdatedAt": "2026-10-14T12:30:00.000Z",
  "importanceReason": "Rated high (inflation): the official title matches our inflation rule for high-importance releases.",
  "valuesStatus": "actual_published",
  "dataQuality": "complete",
  "warnings": []
}
```

| Field | Type | Meaning | When it is null |
|---|---|---|---|
| `eventId` | string | Stable key (agency + release + reference period). The same release keeps its ID across runs, even if it is rescheduled. Use it to deduplicate. | Never |
| `datetimeUtc` | ISO 8601 | Release time in UTC. | Never |
| `date`, `time`, `datetimeLocal` | string | Release date, time and timestamp with offset in the agency's time zone. | Never |
| `timezone` | string | IANA time zone of the publishing agency. | Never |
| `timeType` | string | `official`: the time is published by the agency. `standard`: the agency publishes the date and the time is its standing practice (FOMC 14:00 ET, ECB 14:15 CET, Bank of Canada 9:45 ET). | Never |
| `dateStatus` | string | `confirmed`, or `provisional` when the agency marks the date as provisional (ONS, Eurostat). | Never |
| `country`, `countryName`, `currency` | string | `US`/USD, `EA`/EUR, `GB`/GBP, `CA`/CAD, `AU`/AUD. | Never |
| `event` | string | Official release name. | Never |
| `referencePeriod` | string | Period the data refers to, as published (for example `September 2026`, `Q3/2026`). | Rate decisions and releases without a period |
| `category`, `importance` | string | Our classification (see the FAQ). | Never |
| `status` | string | `released` if the release time has passed when the Actor ran, otherwise `scheduled`. | Never |
| `actual` | number | Headline value for the reference period, from the official statistics API. | Scheduled events, releases outside the covered indicators, or when the agency's API has not been updated yet |
| `forecast` | null | Always null. No official source publishes a market consensus, and commercial consensus data cannot be redistributed. Kept for compatibility with other calendars. | Always |
| `previous` | number | Same metric for the period before. | Releases outside the covered indicators |
| `unit`, `metric` | string | Unit and exact definition of `actual` and `previous`. | When there are no values |
| `additionalValues` | array | Other metrics of the same release (for example core CPI, unemployment rate, average hourly earnings). | Empty when there are none |
| `valuesSource` | string | API the values come from. | When there are no values |
| `source`, `sourceUrl` | string | Publishing agency and the page or file the event was read from. | Never |
| `license`, `attribution` | string | Reuse licence and the credit line the agency asks for. | Never |
| `datetimeInRequestedTimezone` | string | Release time in the `timezone` you chose. | Absent when the time zone is UTC or the agency's own |
| `input`, `scrapedAt` | object, string | Date range of the run and the time the row was produced. | Never |
| `change` | number | `actual` minus `previous`. For rates (unit `%`) it is in percentage points. Also given inside each `additionalValues` item, with `changeUnit`, `changePercent` and `direction`. | When `actual` or `previous` is missing |
| `changeUnit` | string | `percentage points` for rates, otherwise the unit of the value. | When `change` is null |
| `changePercent` | number | Percent change against `previous`, only for levels (for example job openings in thousands). | Rates, values that are already changes (payrolls), or when `change` is null |
| `direction` | string | `up`, `down` or `unchanged`. | When `change` is null |
| `hoursUntilRelease` | number | Hours from the start of the run to the release; negative when already released. | Never |
| `dayOfWeek` | string | Weekday of the release in the agency's time zone. | Never |
| `valueIsComputed` | boolean | `true` when `actual` and `previous` are computed from the official index or level (month over month, year over year), `false` when published as is. | When there are no values |
| `valuesPeriod` | string | Observation the values belong to (`2026-09`, `2026-Q3`). | When there are no values |
| `valuesSeriesUpdatedAt` | ISO 8601 | Last update of the official series, as reported by the statistics API. | When the API does not report it or there are no values |
| `importanceReason` | string | One sentence explaining the importance and category of the release. | Never |
| `valuesStatus` | string | `actual_published`, `awaiting_release` (scheduled; previous only), `released_value_pending` (released, API not updated yet), `not_matched`, `provider_unavailable`, `not_covered` (no official values API for this release in this version) or `not_requested` (`includeValues` off). | Never |
| `dataQuality` | string | `complete` (actual and previous), `partial` (one of them) or `calendar_only` (date, time and source only). | Never |
| `warnings` | array | Plain-language notes on this row: standard instead of published time, provisional date, value still pending, API unavailable. | Empty when there is nothing to flag |

`forecast` is not shown in the Calendar view because it is always null; it stays in the data and in "All fields" for compatibility.

#### Key-value store records

| Record | Content |
|---|---|
| `RUN_SUMMARY` | Status per country and source, events read and time taken per source, events removed by each filter, values coverage per statistics API, reconciliation between rows saved and events charged, HTTP statistics, warnings, and the links to `INSIGHTS` and `CALENDAR.ics`. |
| `INSIGHTS` | `nextHighImportance` (event, time, hours until release, previous value), `nextEvents` (next five), `largestMoves` (five largest changes against the previous period), `busiestDay`, `eventsByDay`, `eventsByCountry`, `eventsByImportance`, `eventsByCategory`, `dataQualityCounts`, counts of released and scheduled events and `calendarFileUrl`. |
| `CALENDAR.ics` | iCalendar file (RFC 5545) with one 15-minute entry per saved row, in UTC. Import it in Google Calendar (Settings > Import), Outlook or Apple Calendar. The link in the status message and in `INSIGHTS` is a signed link that opens without a token. Not written when the run saves no rows. |
| `INPUT`, `STATE` | Your input, and the progress used to resume after a platform migration without duplicates or double charges. |

The Output tab links each view, the Calendar view as CSV, `INSIGHTS`, `CALENDAR.ics` and `RUN_SUMMARY`.

**About actual values.** `actual` is the latest official value for the reference period at the time of the run, so it includes any revision published since the first release. Percent changes marked "month over month" or "year over year" for BLS, ONS (monthly GDP, retail sales) and Statistics Canada are computed from the official index or level with one decimal, and can differ by 0.1 from the rounded figure in the press release.

### Sources and coverage

| Country | Source | What is read | Dates covered | Licence |
|---|---|---|---|---|
| US | U.S. Bureau of Labor Statistics | Release schedule (CPI, jobs report, PPI, JOLTS and more); values from the BLS Public Data API | Past and future years | Public domain |
| US | U.S. Bureau of Economic Analysis | Release calendar (GDP, personal income and outlays, trade) | Past and future | Public domain |
| US | U.S. Census Bureau | Economic indicators calendar (retail sales, durable goods, housing starts, construction) | Current and next year | Public domain |
| US | Federal Reserve Board | FOMC rate decisions and minutes | 2021 onwards | Public domain |
| EA | Eurostat | Euro indicators release calendar; values from the Eurostat API | Past and future | CC BY 4.0 |
| EA | European Central Bank | Monetary policy decisions | Upcoming meetings | ECB reuse policy |
| GB | Office for National Statistics | Release calendar (economic releases only); values from ONS time series | Past and future | Open Government Licence v3.0 |
| CA | Statistics Canada | Major economic releases; values from the Web Data Service | 2012 onwards and future | Statistics Canada Open Licence |
| CA | Bank of Canada | Interest rate announcements | Current and next year | Bank of Canada terms (reuse with attribution) |
| AU | Australian Bureau of Statistics | Release calendar (economic releases only) | Upcoming (current month and the next 6) | CC BY 4.0 |
| AU | Reserve Bank of Australia | Cash rate decisions | Current year | CC BY 4.0 |

Bank of England dates are not included: the Bank's website terms allow only personal and internal use.

### Pricing and cost calculator

**Typical job cost** (prices read from the live pricing on 4 November 2026, Free and Bronze plans): a week of U.S. high-importance releases (2 rows in the week of 4 November 2026) costs about USD 0.006; the default input (next 7 days, all five economies, high and medium importance: 11 rows) costs about USD 0.033. Add USD 0.00005 for the run start. Platform compute is included in the price; you pay nothing else.

**Apify Store discounts:** `calendar-event` costs 15% less on Silver and 30% less on Gold and above.

Pay per event: USD 0.003 per `calendar-event`, one charge per row saved to the dataset. The only other charge is Apify's standard start event (`apify-actor-start`), USD 0.00005 per run at the default memory.

| Event | When it is charged |
|---|---|
| `calendar-event` | One calendar row (release or rate decision) that passed validation and was saved. |

**Free plan:** the USD 5 of monthly usage included in the Apify Free plan covers about 1,650 calendar rows (USD 0.003 each): about 100 runs of the default input (next 7 days, 16 rows).

Never charged: actual and previous values, sources that could not be read, invalid inputs, events removed by your filters, and the `RUN_SUMMARY` record. Your maximum cost per run is respected: the Actor stops before saving a row it cannot charge.

Rows measured in test runs (November 2026):

| Typical use | Rows | Cost |
|---|---|---|
| Next 7 days, all countries, high and medium importance (default input) | 16 | USD 0.048 |
| Next 7 days, all countries, all importance levels | 22 | USD 0.066 |
| One month (October 2026), all countries, high and medium importance | 49 | USD 0.147 |
| One month (October 2026), all countries, all importance levels | 86 | USD 0.258 |
| 35 days, United States only, high importance | 7 | USD 0.021 |

Formula: `rows × 0.003`. Prices shown are for the Free and Bronze plans; Silver and Gold pay less. **Defects:** if a run delivers a wrong time or value because of a defect in the Actor, open an issue with the run ID. Defects are fixed with priority, usually within 72 hours.

### Integrations: schedules, API, webhooks, Sheets and AI agents

**Schedules.** Save an input such as `{"dateFrom": "today", "dateTo": "today", "importance": ["high"]}` as a task and schedule it every morning, or every 15 minutes during release hours with `"releaseStatus": "released"` to collect actual values as soon as the agencies publish them. Deduplicate with `eventId`.

**API.** Run the Actor and get the results in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/ocius-data~economic-calendar/run-sync-get-dataset-items?token=YOUR_API_TOKEN&format=json" \
  -H "Content-Type: application/json" \
  -d '{"dateFrom": "today", "dateTo": "+7d", "countries": ["US"], "importance": ["high"]}'
```

Python, with the official `apify-client` package:

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ocius-data/economic-calendar").call(run_input={"dateFrom": "-30d", "dateTo": "today", "importance": ["high"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["datetimeUtc"], row["country"], row["event"], row["actual"], row["previous"], row["unit"])
```

**Webhooks.** In the task, open **Integrations**, add a webhook for `ACTOR.RUN.SUCCEEDED` and download the dataset from `resource.defaultDatasetId`.

**Google Sheets, Zapier, Make and n8n.** Use the Apify integration or app and map the fields of the **Calendar** view.

**MCP and AI agents.** Add `ocius-data/economic-calendar` to the Apify MCP server (`https://mcp.apify.com`); an agent can ask for `{"dateFrom": "today", "dateTo": "+7d", "importance": ["high"]}` and receive clean, sourced rows.

### Statuses and errors

Statuses are in the `RUN_SUMMARY` record, never in the dataset.

| Status | Where | Meaning | What to do |
|---|---|---|---|
| `OK` | Country, source | The calendar was read; the events in range are saved. | Nothing |
| `NO_RESULTS_CONFIRMED` | Country | The calendars were read and no release matches your filters in the range. | Widen the range or add `low` importance. |
| `PARTIAL` | Country | At least one source of the country could not be read; its events are missing. The warning names the source. | Run again later. |
| `TRUNCATED` | Country | More events matched than `maxEvents` allowed. | Raise `maxEvents`. |
| `STOPPED_COST_LIMIT` | Country | Your maximum cost per run was reached before all events were saved. | Raise the limit. |
| `BLOCKED` | Source | The agency's website refused the request after all retries and proxy changes. | Run again later. |
| `ERROR_SOURCE` | Source | The agency's website failed or changed. | Open an issue with the run ID. |
| Input error | Run | The run fails within seconds with a message that says which field to fix. | Correct the input. |

A calendar page that is read but yields no events is reported as `ERROR_SOURCE` (its layout probably changed), never as an empty result.

`RUN_SUMMARY` also lists, per source, the number of events read and the time taken; the events removed by each filter; the values coverage per statistics API; the reconciliation between rows saved and events charged; and warnings. When values from one statistics API are unavailable, the events are still saved with `actual` and `previous` empty, and a warning says so.

### Known limits

- **No consensus forecast.** Official agencies do not publish a market consensus, so `forecast` is always null and is not shown in the Calendar view (see the field dictionary). This is the main difference from Investing.com or ForexFactory calendars.
- **Values cover the main indicators only** (listed in "Why this economic calendar"). Other releases have the date, time, period, importance and source, without values. U.S. GDP and PCE values are not included yet because the BEA API requires a personal key.
- **Some calendars list only upcoming dates:** ECB (upcoming meetings), ABS (current month and the next 6), RBA (current year) and Bank of Canada (current and next year). Past ranges for those sources return fewer events, and a note in `RUN_SUMMARY` says so.
- **Rescheduled releases** appear at their new date once the agency updates its calendar; the `eventId` stays the same.
- **Release times** are those published by the agencies. Central bank decision times marked `timeType: standard` follow the bank's standing practice.
- **Countries:** five economies in this version. Requests for more are welcome in the Issues tab.

### FAQ

**How is importance decided?** By release type, with fixed rules applied to the official release name. High: CPI and inflation flash estimates, the U.S. jobs report and other labour force surveys, GDP, retail sales, personal income and outlays, central bank rate decisions. Medium: producer prices, JOLTS and job vacancies, industrial production and manufacturing, trade and balance of payments, housing and construction, sentiment surveys, central bank minutes. Low: all other economic releases, and regional or state breakdowns.

**Why are some releases missing for the UK and Australia?** ONS and ABS also publish health, population and crime statistics. Only economic releases are kept.

**Can I use the data in my product?** Each row carries the licence and the credit line of its source. Public domain, Open Government Licence, CC BY 4.0 and the Statistics Canada Open Licence allow commercial reuse with attribution. The RBA asks that customers be told when data it publishes for free is part of a paid service: its data is available free at rba.gov.au. This is not legal advice.

**How fresh are the values?** They are read live from the statistics APIs during the run. Right at release time an agency's API can lag its press release by a few minutes; run again and the `actual` field is filled.

### Related Actors from ocius-data

Built to the same standard (status per input in `RUN_SUMMARY`, actionable errors, pay only for valid data):

- **[Google Trends API](https://apify.com/ocius-data/google-trends-reliable)**: search interest over time and by region, useful next to macro releases.

### Changelog

- **0.1.7** (November 2026) Additive: `CALENDAR.ics` file and `INSIGHTS` record; `change`, `changeUnit`, `changePercent`, `direction`, `hoursUntilRelease`, `dayOfWeek`, `valueIsComputed`, `valuesPeriod`, `valuesSeriesUpdatedAt`, `importanceReason`, `valuesStatus`, `dataQuality` and `warnings` on every row; labelled columns in every view and a new Data quality and licence view; `forecast` removed from the Calendar view only; output links per view and as CSV; rows saved and charged in batches (faster). No field was removed or renamed and the price did not change.
- **0.1** (November 2026) First version: official calendars of BLS, BEA, Census, Federal Reserve, Eurostat, ECB, ONS, Statistics Canada, Bank of Canada, ABS and RBA; importance and category per release; actual and previous values from the BLS, Eurostat, ONS and Statistics Canada APIs; UTC and local times; licence and attribution per row.

### Tutorials and examples

**Ready-to-import templates:** [Google Sheets](https://github.com/christianbarbosapayan-commits/apify-data-apis-examples/tree/main/integrations/google-sheets), [Make](https://github.com/christianbarbosapayan-commits/apify-data-apis-examples/blob/main/integrations/make.md), [Zapier](https://github.com/christianbarbosapayan-commits/apify-data-apis-examples/blob/main/integrations/zapier.md) and a [webhook receiver](https://github.com/christianbarbosapayan-commits/apify-data-apis-examples/blob/main/integrations/webhook/receiver.mjs).

- Tutorial: [Economic calendar API from official sources: alerts for high-impact releases (JavaScript)](https://github.com/christianbarbosapayan-commits/apify-data-apis-examples/blob/main/tutorials/economic-calendar-api-high-impact-alerts.md)
- Example code: [JavaScript: high-impact release alert](https://github.com/christianbarbosapayan-commits/apify-data-apis-examples/blob/main/javascript/economic_calendar_alert.mjs)
- All examples: [apify-data-apis-examples on GitHub](https://github.com/christianbarbosapayan-commits/apify-data-apis-examples)

### Rate this Actor

If this Actor saved you time, please consider leaving a rating or a short review on its Apify Store page. It helps other users find it and shows us what to improve. If something does not work as expected, please open an issue first so we can fix it.

### Support

Open an issue on the Actor page. Issues are answered within one business day.

# Changelog

This Actor's version history is a separate document: https://apify.com/ocius-data/economic-calendar/changelog.md

# Actor input Schema

## `dateFrom` (type: `string`):

First day of the calendar, as YYYY-MM-DD or a relative value: "today", "tomorrow", "yesterday", "-7d", "+2w". Leave empty for today.

## `dateTo` (type: `string`):

Last day of the calendar (included), as YYYY-MM-DD or a relative value such as "+7d". Leave empty for 7 days after the start date. Maximum range: 366 days.

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

Economies to include. Leave empty for all: United States (US), euro area (EA), United Kingdom (GB), Canada (CA) and Australia (AU).

## `importance` (type: `array`):

Expected market impact of each release (our rating by release type: high = CPI, jobs report, GDP, retail sales, central bank decisions; medium = PPI, trade, industrial production, housing, sentiment; low = everything else). Leave empty for all levels.

## `categories` (type: `array`):

Limit the calendar to these categories. Leave empty for all.

## `releaseStatus` (type: `string`):

All events, only those already released, or only upcoming (scheduled) ones.

## `includeValues` (type: `boolean`):

Adds the headline actual and previous values for the most traded releases (CPI, jobs report, PPI, JOLTS, euro area HICP, unemployment, GDP, retail and industry, UK CPI, labour market, GDP and retail sales, Canada CPI, Labour Force Survey and GDP) from the official statistics APIs. Free of extra charge.

## `timezone` (type: `string`):

IANA time zone used to read From/To dates and to add a converted timestamp to each row, for example UTC, America/New_York, Europe/London or America/Bogota. Every row always includes the UTC time and the local time of the publishing agency.

## `maxEvents` (type: `integer`):

Stops after this many events. You are charged once per event saved.

## `proxyConfiguration` (type: `object`):

Official calendars are read with a direct connection. A proxy is used only as a fallback when a source blocks a request. Usually no change is needed.

## Actor input object example

```json
{
  "dateFrom": "today",
  "dateTo": "+7d",
  "countries": [
    "US",
    "EA",
    "GB",
    "CA",
    "AU"
  ],
  "importance": [
    "high",
    "medium"
  ],
  "releaseStatus": "all",
  "includeValues": true,
  "timezone": "UTC",
  "maxEvents": 1000
}
```

# Actor output Schema

## `events` (type: `string`):

One row per official release or central bank decision, with UTC and local time, importance and the reason for it, actual, previous and change, data quality flags, source URL and licence.

## `calendarView` (type: `string`):

Time, country, event, importance, actual and previous values.

## `valuesView` (type: `string`):

Actual, previous, change against the previous period and direction for indicators with official values.

## `qualityView` (type: `string`):

Why each release has its importance, values status, quality flags, warnings and licence.

## `csv` (type: `string`):

The Calendar view as a CSV file, ready for Excel or Google Sheets.

## `calendarFile` (type: `string`):

Every event of the run as an iCalendar file to import into Google Calendar, Outlook or Apple Calendar.

## `insights` (type: `string`):

Next high-importance release, largest moves against the previous period, busiest day and counts by country, importance, category and data quality.

## `runSummary` (type: `string`):

Status of each country and source, filters applied, values coverage and charge reconciliation.

# 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 = {
    "dateFrom": "today",
    "dateTo": "+7d",
    "countries": [
        "US",
        "EA",
        "GB",
        "CA",
        "AU"
    ],
    "importance": [
        "high",
        "medium"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ocius-data/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 = {
    "dateFrom": "today",
    "dateTo": "+7d",
    "countries": [
        "US",
        "EA",
        "GB",
        "CA",
        "AU",
    ],
    "importance": [
        "high",
        "medium",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("ocius-data/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 '{
  "dateFrom": "today",
  "dateTo": "+7d",
  "countries": [
    "US",
    "EA",
    "GB",
    "CA",
    "AU"
  ],
  "importance": [
    "high",
    "medium"
  ]
}' |
apify call ocius-data/economic-calendar --silent --output-dataset

```

## MCP server setup

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