# Economic Calendar & Macro Releases - ForexFactory, Nasdaq, BLS (`automia-admin/economic-calendar-macro-releases`) Actor

Economic calendar events and macro releases from four official feeds in one run: the ForexFactory JSON calendar, Nasdaq economic events, BLS time series and ECB press releases. Actual, forecast and previous values, impact level and country, merged and normalised to a single schema.

- **URL**: https://apify.com/automia-admin/economic-calendar-macro-releases.md
- **Developed by:** [Andrés Santiso](https://apify.com/automia-admin) (community)
- **Categories:** News, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $14.00 / 1,000 economic 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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Economic Calendar & Macro Releases

Economic calendar events and the macro data behind them, pulled from **four official
feeds in one run** and normalised to a single schema:

- **ForexFactory** — the official JSON calendar feed for the **current week**, with the
  trader-facing **impact rating** (High / Medium / Low) per event and currency.
- **Nasdaq economic events** — any **date range** (past releases with actual values, and
  dates beyond the current week).
- **US Bureau of Labor Statistics (BLS)** — the **actual value** of the underlying series
  behind an event (CPI, unemployment rate, nonfarm payrolls, average hourly earnings, or
  any series ID you pass).
- **European Central Bank (ECB)** — the latest press releases, speeches and interviews.

No API key. No login. No browser. No personal data — the output is events, countries,
currencies and numbers.

### Why this one

Most economic-calendar scrapers read the **HTML** of ForexFactory or Investing.com, which
is anti-bot protected and fails a noticeable share of runs. This Actor reads the **official
JSON feeds** instead, so runs don't break on a bot challenge. On top of that it does two
things a plain calendar does not:

1. Keeps ForexFactory's **impact rating** (what FX traders actually filter on), which
   government-feed calendars don't carry.
2. Attaches the **actual released value** of the underlying macro series from BLS — not
   just the release schedule.

### Sources & limits (read this)

- **ForexFactory publishes only the current week.** Its `thismonth` / `nextweek` /
  `lastweek` feeds do not exist. For any other date, enable the **Nasdaq calendar** and set
  a date range — that is the source for history and for dates beyond this week.
- BLS and ECB are public, key-free official APIs.
- Weekends are skipped automatically on the Nasdaq date range; the range is capped at 92 days.

### Input

| Field | What it does |
|---|---|
| `includeForexFactory` | ForexFactory current-week calendar with impact rating. Default on. |
| `impactLevels` | Keep only these ForexFactory impacts: High, Medium, Low, Holiday. Empty = all. |
| `countries` | Keep only these countries/currencies. FF uses currency codes (USD, EUR…), Nasdaq uses country names. |
| `includeNasdaqCalendar` | Nasdaq economic calendar for a date range (history + future). Default off. |
| `nasdaqDateFrom` / `nasdaqDateTo` | Date range for Nasdaq, `YYYY-MM-DD`. Defaults to yesterday…+7 days if left empty. |
| `includeMacroObservations` | Attach BLS macro values. Default on. |
| `blsSeries` | BLS series IDs, e.g. `CUUR0000SA0`, `LNS14000000`. Empty = curated default set. |
| `blsObservations` | Recent observations per series (newest first). Default 3. |
| `includeEcbPress` | Latest ECB press releases. Default on. |
| `ecbItems` | Max ECB items. Default 20. |
| `useApifyProxy` | Off by default; the feeds answer fine without a proxy. |

Leave the input empty to run a demo: the current ForexFactory week plus the default BLS
series and ECB press releases.

### Output

One flat row per record. `recordType` tells them apart.

**Calendar event** (`recordType: "calendarEvent"`):

```json
{
  "recordType": "calendarEvent",
  "source": "forexfactory",
  "event": "Core CPI m/m",
  "country": "USD",
  "date": "2026-08-12",
  "timeUtc": "12:30",
  "dateTimeUtc": "2026-08-12T12:30:00+00:00",
  "impact": "High",
  "actual": null,
  "forecast": "0.3%",
  "previous": "0.2%"
}
```

Nasdaq events add a plain-text `description` and carry `actual` once released; `impact` is
`null` for Nasdaq (impact comes from ForexFactory).

**Macro observation** (`recordType: "macroObservation"`) — BLS series value:

```json
{
  "recordType": "macroObservation",
  "source": "bls",
  "seriesId": "LNS14000000",
  "seriesName": "Unemployment Rate (SA)",
  "year": "2026",
  "period": "M07",
  "periodName": "July",
  "value": "4.1",
  "latest": true
}
```

…or an ECB press item (`source: "ecb-press"`) with `title`, `link` and `published`.

### Pricing (pay per event)

- **Run start** — once per run.
- **Calendar event** — one scheduled economic event. Primary charge.
- **Macro observation** — one BLS value or ECB press item. Cheap: one request brings a
  whole series.

**An empty result is free.**

### Not included

- No full article text — the feeds provide structured event data only.
- No personal data. `author` / `dc:creator` fields from the ECB feed are not collected.

# Actor input Schema

## `includeForexFactory` (type: `boolean`):

Pull the official ForexFactory JSON feed for the CURRENT week: event, country/currency, release time, impact rating (High/Medium/Low), forecast and previous. ForexFactory only publishes the current week; use the Nasdaq calendar below for any other date.

## `impactLevels` (type: `array`):

Keep only ForexFactory events with these impact levels. Any of: High, Medium, Low, Holiday. Leave empty to keep all. Nasdaq does not carry an impact rating, so this filter does not apply to Nasdaq events.

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

Keep only events for these countries or currencies. ForexFactory uses currency codes (USD, EUR, JPY, GBP...); Nasdaq uses country names (United States, Germany...). Leave empty to keep all.

## `includeNasdaqCalendar` (type: `boolean`):

Pull the Nasdaq economic events calendar for a date range - this is how you get past releases with actual values and dates beyond the current week. Set the date range below; if left empty it defaults to yesterday through 7 days ahead.

## `nasdaqDateFrom` (type: `string`):

Start date for the Nasdaq calendar, e.g. 2026-08-01. Weekends are skipped automatically. Only used when the Nasdaq calendar is enabled.

## `nasdaqDateTo` (type: `string`):

End date for the Nasdaq calendar, e.g. 2026-08-31. Capped to 92 days from the start date. Only used when the Nasdaq calendar is enabled.

## `includeMacroObservations` (type: `boolean`):

Attach the underlying macro value from the US Bureau of Labor Statistics time-series API - the actual number behind events like CPI and the unemployment rate. Defaults to a curated set of series; override with your own series IDs below.

## `blsSeries` (type: `array`):

US Bureau of Labor Statistics series IDs to pull, e.g. CUUR0000SA0 (CPI) or LNS14000000 (unemployment rate). Leave empty to use a curated default set (CPI, unemployment, nonfarm payrolls, average hourly earnings). Public API, no key required.

## `blsObservations` (type: `integer`):

How many recent observations to return per BLS series, newest first.

## `includeEcbPress` (type: `boolean`):

Include the latest European Central Bank press releases, speeches and interviews from the official ECB RSS feed: title, link and publish date.

## `ecbItems` (type: `integer`):

Maximum number of ECB press items to return, newest first.

## `useApifyProxy` (type: `boolean`):

Off by default: all four feeds answer fine from Apify without a proxy. Turn it on only if you hit rate limits on a very large Nasdaq date range.

## Actor input object example

```json
{
  "includeForexFactory": true,
  "impactLevels": [
    "High",
    "Medium"
  ],
  "includeNasdaqCalendar": false,
  "includeMacroObservations": true,
  "blsObservations": 3,
  "includeEcbPress": true,
  "ecbItems": 20,
  "useApifyProxy": false
}
```

# 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 = {
    "impactLevels": [
        "High",
        "Medium"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("automia-admin/economic-calendar-macro-releases").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 = { "impactLevels": [
        "High",
        "Medium",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("automia-admin/economic-calendar-macro-releases").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 '{
  "impactLevels": [
    "High",
    "Medium"
  ]
}' |
apify call automia-admin/economic-calendar-macro-releases --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automia-admin/economic-calendar-macro-releases"
        }
    }
}

```

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/kgJBhmtHMoiJXTavq/builds/VJuLJjnE15UcQoEgW/openapi.json
