# Economic Release Calendar: Official US, UK, CA, AU Dates (`cprussin/economic-release-calendar`) Actor

Official macro release dates and times from OMB (BLS), Census, BEA, the Fed (FOMC), ONS, Statistics Canada and ABS: CPI, jobs, GDP, retail sales, rate decisions. Timezone-aware, filters, change alerts and ICS. No forecasts. $3 per 1,000 releases.

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

## Pricing

from $3.00 / 1,000 release events

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Release Calendar: Official US, UK, Canada & Australia Release Dates API

**Economic Release Calendar** gives you the date and time of every scheduled macro release (CPI, jobs report, GDP, retail sales, PPI, FOMC rate decisions...) for the **United States, United Kingdom, Canada and Australia**, read only from **official sources**: the OMB Principal Federal Economic Indicators schedule, the Census Bureau, BEA, the Federal Reserve, the ONS, Statistics Canada and the ABS. One normalized row per release, with timezone-aware times, a change-alert mode and an ICS calendar file. No login, no API key, no browser, no proxy.

- ✅ **Official dates only**: no Investing.com or ForexFactory scraping, no Cloudflare, no terms-of-service risk.
- ✅ **Normalized rows**: `country`, `agency`, `releaseName`, `indicator` key (`cpi`, `employment-situation`, `gdp`, `retail-sales`, `fomc-decision`...), `referencePeriod` (`2026-10`, `2026-Q3`), `scheduledAt` with UTC offset, `scheduledAtUtc`, `sourceUrl`.
- ✅ **Honest times**: every row says where its time comes from (`published`, `omb-default` or `agency-standard`).
- ✅ **Change alerts**: `changes` mode outputs only releases added, removed, rescheduled or cancelled since the last run.
- ✅ **ICS export**: subscribe-ready `calendar.ics` for Google Calendar, Outlook or Apple Calendar.
- ✅ **Filters**: countries, agencies, indicators, date window.

### Start in one minute

Click **Start** with the prefilled input:

```json
{
  "mode": "calendar",
  "maxItems": 100
}
```

You get: every headline release in the next 30 days (about 50 rows), sorted by time, with `scheduledAt`, `indicator`, `referencePeriod` and `sourceUrl`.

**Cost:** about $0.15: 50 releases × $0.003, plus the $0.00005 actor-start fee.

### Use with an AI assistant

Connect the [Apify MCP server](https://mcp.apify.com) to Claude, ChatGPT, Cursor or any MCP client (`https://mcp.apify.com?tools=cprussin/economic-release-calendar` loads only this actor), then paste:

```text
Use the Apify actor cprussin/economic-release-calendar to list the US CPI, jobs report and FOMC decision dates for the next 60 days, with release times in UTC.
```

### Recipes

#### US market-moving releases this month

```json
{
  "countries": ["US"],
  "indicators": [
    "cpi",
    "ppi",
    "employment-situation",
    "gdp",
    "retail-sales",
    "personal-income",
    "fomc-decision"
  ]
}
```

#### CPI in all four countries for the next year, as an ICS file

```json
{
  "indicators": ["cpi"],
  "dateTo": "2027-11-30",
  "outputFormat": "datasetAndIcs"
}
```

#### Daily change alerts (scheduled task)

Schedule this daily. The first run saves a baseline; later runs output only releases that were added, removed, rescheduled or cancelled.

```json
{
  "mode": "changes",
  "stateKey": "all-headline",
  "dateTo": "2027-03-31"
}
```

#### Every UK and Australian statistical release, not just headline indicators

```json
{
  "countries": ["GB", "AU"],
  "includeOtherReleases": true,
  "maxItems": 2000
}
```

### Input

| Field                  | Description                                                                     | Example           |
| ---------------------- | ------------------------------------------------------------------------------- | ----------------- |
| `mode`                 | `calendar` (one row per release) or `changes` (diff against the last run)       | `"calendar"`      |
| `countries`            | `US`, `GB`, `CA`, `AU` (empty: all)                                             | `["US", "GB"]`    |
| `agencies`             | `BLS`, `CENSUS`, `BEA`, `FED`, `ONS`, `STATCAN`, `ABS` (empty: all)             | `["BLS"]`         |
| `indicators`           | Normalized keys (empty: every recognized headline indicator)                    | `["cpi", "gdp"]`  |
| `includeOtherReleases` | Also output releases without an indicator key (smaller statistical releases)    | `true`            |
| `dateFrom`             | First release date (default today)                                              | `"2026-11-06"`    |
| `dateTo`               | Last release date, inclusive (default `dateFrom` + 30 days, at most 400 days)   | `"2026-12-31"`    |
| `outputFormat`         | `dataset` or `datasetAndIcs` (also saves `calendar.ics` in the key-value store) | `"datasetAndIcs"` |
| `stateKey`             | `changes` mode: name of the saved snapshot (one per schedule or filter set)     | `"all-headline"`  |
| `maxItems`             | Max rows (default 1,000)                                                        | `500`             |

Indicator keys: US `cpi`, `ppi`, `employment-situation`, `real-earnings`, `eci`, `productivity-costs`, `import-export-prices`, `gdp`, `personal-income`, `corporate-profits`, `trade`, `international-transactions`, `retail-sales`, `housing-starts`, `new-home-sales`, `construction-spending`, `durable-goods`, `factory-orders`, `business-inventories`, `wholesale-trade`, `industrial-production`, `consumer-credit`, `fomc-decision` and more; UK `cpi`, `ppi`, `labour-market`, `gdp`, `gdp-monthly`, `retail-sales`, `trade`, `public-finances`...; Canada `cpi`, `labour-force-survey`, `gdp`, `gdp-monthly`, `retail-sales`, `trade`...; Australia `cpi`, `labour-force`, `gdp`, `wage-price-index`, `trade`, `building-approvals`... The full list is in the input form.

### What data do you get for each release?

```json
{
  "type": "release",
  "eventId": "us:cpi:2026-10",
  "country": "US",
  "agency": "BLS",
  "agencyName": "Bureau of Labor Statistics",
  "releaseName": "Consumer Price Index",
  "indicator": "cpi",
  "referencePeriod": "2026-10",
  "scheduledDate": "2026-11-10",
  "scheduledTime": "08:30",
  "timezone": "America/New_York",
  "scheduledAt": "2026-11-10T08:30:00-05:00",
  "scheduledAtUtc": "2026-11-10T13:30:00.000Z",
  "timeSource": "omb-default",
  "status": "confirmed",
  "source": "omb",
  "sourceUrl": "https://www.whitehouse.gov/wp-content/uploads/2025/09/pfei_schedule_release_dates_cy2026.pdf",
  "fetchedAt": "2026-11-06T13:13:26.040Z"
}
```

In `changes` mode each row also has `changeType` (`added`, `removed`, `rescheduled`, `status-changed`), `previousScheduledAt` and `previousStatus`. `eventId` does not contain the date, so a moved release is reported as `rescheduled`, not as removed + added.

#### Sources and times

| Agency                  | Source                                                          | Time                                         |
| ----------------------- | --------------------------------------------------------------- | -------------------------------------------- |
| BLS (CPI, jobs, PPI...) | OMB Principal Federal Economic Indicators schedule (annual PDF) | 8:30 a.m. ET PFEI default (`omb-default`)    |
| Census Bureau           | Census economic indicator calendar; OMB schedule fills gaps     | Published (OMB rows: agency standard time)   |
| BEA                     | BEA release schedule; OMB schedule fills gaps                   | Published (OMB rows: 8:30 a.m. ET)           |
| Federal Reserve         | FOMC meeting calendar; G.17 and G.19 from the OMB schedule      | 2:00 p.m. ET statement; 9:15 a.m.; 3:00 p.m. |
| ONS (UK)                | ONS release calendar API                                        | Published                                    |
| Statistics Canada       | The Daily release schedule (next two weeks)                     | 8:30 a.m. ET (The Daily)                     |
| ABS (Australia)         | ABS future releases                                             | Published                                    |

### Limitations

- **BLS reschedules can be missed.** bls.gov is not read (its robots.txt is not reachable from datacenter IPs and api.bls.gov disallows all crawling), so BLS dates come only from the annual OMB schedule. If BLS moves a release (for example during a government shutdown), this actor shows the original OMB date until OMB, Census or BEA publish the change.
- **No consensus forecasts and no actual values.** This is a schedule of official release times, not a market calendar with "forecast / previous / actual" columns.
- Statistics Canada publishes two weeks ahead; ABS about six months; the OMB schedule covers the current and next year. Eurostat and the ECB are not covered yet.

### How much does it cost to get an economic release calendar?

Pay per event:

- **$0.003 per release row** ($3 per 1,000).
- **$0.01 per change alert** in `changes` mode. A day without changes costs nothing but the start fee.
- $0.00005 per run start. Platform compute is included.

A month of headline releases in all four countries is about 50 rows (~$0.15); with every smaller statistical release, about 140 rows (~$0.42).

### FAQ

**Is this legal?** Yes. US federal schedules are public domain (the Federal Reserve states its website information "is in the public domain"), ONS data is under the Open Government Licence v3, Statistics Canada under the Statistics Canada Open Licence, and ABS under CC BY 4.0. On every run the actor reads each host's `robots.txt` with its own non-browser user agent and skips any source whose rules disallow the page it needs, or whose `robots.txt` cannot be verified. It makes a handful of requests per run, one at a time per host, honouring `Crawl-delay`.

**Why does a BLS row say `omb-default`?** The OMB schedule gives the date only; principal federal economic indicators are released at 8:30 a.m. ET, which is what BLS uses for CPI, the jobs report and PPI.

**What timezone are times in?** `scheduledAt` is in the agency's local time with its UTC offset (e.g. `-05:00`), `scheduledAtUtc` is the same instant in UTC, and `timezone` names the IANA zone. Daylight-saving changes are handled.

**How do change alerts work?** In `changes` mode the actor stores the calendar in a named key-value store under `stateKey` and compares the next run with it. A source that fails or is skipped is never reported as "removed", and releases that only entered the window are not reported as "added".

**Does it include Eurostat or the ECB?** Not yet.

### Related actors

- [SEC Form D Funding](https://apify.com/cprussin/sec-form-d-funding): private fundraising filings from the SEC, daily.
- [Federal Recompete Radar](https://apify.com/cprussin/federal-recompete-radar): expiring US federal contracts from official data.
- [Google Trends](https://apify.com/cprussin/google-trends): search interest over time and by region.

# Actor input Schema

## `mode` (type: `string`):

<b>Calendar</b>: one row per scheduled release in the date window. <b>Changes</b>: compares with the previous run (same state key) and outputs only releases that were added, removed, rescheduled or changed status. The first changes run saves a baseline and outputs nothing.

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

Keep only these countries. Empty: all four.

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

Keep only these agencies. Empty: all. BLS dates come from the OMB schedule (bls.gov is not read).

## `indicators` (type: `array`):

Keep only these normalized indicators, e.g. <code>cpi</code>, <code>employment-situation</code>, <code>gdp</code>, <code>retail-sales</code>, <code>fomc-decision</code>. Empty: every recognized headline indicator.

## `includeOtherReleases` (type: `boolean`):

Also output releases without a normalized indicator (ONS, Statistics Canada and ABS publish dozens of smaller statistical releases a week). Ignored when Indicators is set.

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

First release date (YYYY-MM-DD, local date of the release). Empty: today.

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

Last release date, inclusive. Empty: 30 days after Date from. At most 400 days. Statistics Canada lists two weeks ahead, ABS about six months, the OMB schedule the current and next year.

## `outputFormat` (type: `string`):

<b>Dataset</b>: rows only. <b>Dataset + ICS</b>: also saves the releases as an iCalendar file (<code>calendar.ics</code>) in the run's key-value store, for Google Calendar, Outlook or Apple Calendar.

## `stateKey` (type: `string`):

Changes mode: name of the saved snapshot. Use one key per schedule or filter set; changing the filters under the same key starts a new baseline.

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

Stop after this many rows. Each row is billed once.

## Actor input object example

```json
{
  "mode": "calendar",
  "includeOtherReleases": false,
  "outputFormat": "dataset",
  "stateKey": "default",
  "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 = {
    "mode": "calendar",
    "maxItems": 100
};

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

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

```

## MCP server setup

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