# Forex News Filter & Economic Calendar for Trading Bots (`cryptoretirement/forex-news-filter-economic-calendar`) Actor

This week's economic calendar for the 9 major currencies with impact, forecast and previous, plus a per-currency check: is a high-impact release within N minutes of now? Built for trading bots and alerts. No API keys.

- **URL**: https://apify.com/cryptoretirement/forex-news-filter-economic-calendar.md
- **Developed by:** [Craig Armstrong](https://apify.com/cryptoretirement) (community)
- **Categories:** Developer tools
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 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.

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

## Forex News Filter & Economic Calendar for Trading Bots

One run returns **this week's economic calendar for the nine major currencies** (USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD, CNY) with impact rating, forecast and previous value, and answers the question a trading bot asks before every order: **is a high-impact release within N minutes of now for my currency?** No API keys, no login.

Most strategies stand aside around CPI, payrolls and central bank decisions. This Actor is the plumbing for that rule: a news filter for bots and expert advisors, an alert feed for the week's big releases, and a calendar source for dashboards and AI agents. Times are UTC, field names are stable, and every row carries `minutesUntil` and `inNewsWindow` so one API call is enough.

### What you get

One row per scheduled event, oldest first.

| Field | Example |
|---|---|
| `time` | `2026-11-13T13:30:00.000Z` (UTC) |
| `currency` | `USD`; `ALL` for events that concern every currency |
| `title` | `Core PPI m/m` |
| `impact` | `high`, `medium`, `low` or `holiday` |
| `forecast`, `previous` | `0.3%`, `0.7%`; `null` when the event has none (speeches, holidays) |
| `status` | `upcoming` or `passed` |
| `minutesUntil` | `3132`; negative once the event has passed |
| `inNewsWindow` | `true` when the event is high impact and within `newsWindowMinutes` of now, before or after |
| `id`, `snapshotTime` | A stable id per event and when the run looked |

The key-value store record `SUMMARY` holds the news filter:

| Field | Meaning |
|---|---|
| `newsFilter.<currency>.inNewsWindow` | `true` when a high-impact event for that currency is inside the window |
| `newsFilter.<currency>.nextHighImpact`, `lastHighImpact` | Title, time and `minutesUntil` of the nearest high-impact event ahead and behind |
| `currenciesInNewsWindow` | For example `["USD"]` |
| `nextHighImpact` | The next high-impact event across your currencies |
| `feedFetchedAt` | When the calendar was last fetched from the source |

### Input

| Field | Default | Notes |
|---|---|---|
| `currencies` | all nine | Any subset. Events marked `ALL` are always included |
| `minImpact` | `medium` | `low` returns everything, `high` only the market movers |
| `includeHolidays` | `true` | Bank holidays, returned with impact `holiday` |
| `upcomingOnly` | `false` | Drop events that already passed, except those still inside the news window |
| `newsWindowMinutes` | `30` | Minutes before and after a high-impact event, 1 to 1440 |

### Typical uses

- **Bot news filter:** before trading EURUSD, run with `currencies: ["EUR", "USD"]`, `minImpact: "high"`, `upcomingOnly: true` and skip the trade when any row has `inNewsWindow: true`. Schedule every 5 to 15 minutes, or call it on demand.
- **Weekly briefing:** run on Monday with `minImpact: "medium"` and send the dataset to Slack, Telegram or email with an Apify integration.
- **Agents:** call it from an AI agent or MCP client to ask what is on the calendar today.

### Notes and limits

- The data is ForexFactory's public weekly calendar export, including its impact ratings. This Actor is not affiliated with ForexFactory.
- The calendar covers the current week, Sunday to Saturday. There is no next-week look-ahead, so late on Friday and on Saturday nothing is upcoming until the new week is published.
- It is a schedule: forecast and previous values, no actual results.
- The calendar is fetched at most once every 5 minutes per account and kept in the key-value store `forex-news-filter-cache`. If the source is unreachable, a copy up to 12 hours old is used and `feedFetchedAt` shows its age; without one the run fails rather than return nothing.
- Schedules change. A release can be moved or added during the week, so poll again close to the time that matters.
- Data only, not financial advice.

### Cost

Pay per event, no subscription. You pay only for the events a run returns.

| Event | Price |
|---|---|
| Run start, once per run | $0.002 |
| Calendar event row | $0.001 |

A full week at every impact level is about 100 rows and costs about 10 cents. A bot check with two currencies, `minImpact: "high"` and `upcomingOnly: true` returns a handful of rows and costs about 1 cent.

### Run it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/cryptoretirement~forex-news-filter-economic-calendar/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"currencies":["EUR","USD"],"minImpact":"high","upcomingOnly":true,"newsWindowMinutes":30}'
```

The response is the dataset as a JSON array. The API menu on this page has ready-made snippets for JavaScript, Python and MCP clients.

### More Actors for traders and bots

- [Crypto Signal Scanner](https://apify.com/cryptoretirement/crypto-perp-technical-signal-scanner): Donchian breakouts, golden and death crosses and Supertrend flips on the top Bybit perpetuals.
- [Crypto Session Box Levels & Liquidity Sweep Detector](https://apify.com/cryptoretirement/crypto-session-box-liquidity-sweep-detector): prior-day and session boxes, wick setups and liquidity sweeps.
- [Crypto Perp Funding Rate Scanner](https://apify.com/cryptoretirement/crypto-perp-funding-rate-scanner): funding rates, annualised yield and cross-exchange spreads on 5 exchanges.
- [Crypto Exchange New Listing Announcements](https://apify.com/cryptoretirement/crypto-exchange-new-listings): new coin and perpetual listings from 6 exchanges, with an alert flag.
- [Solana Token Rug Check + Coin Score](https://apify.com/cryptoretirement/solana-token-rug-check-and-score): rug gates, a honeypot sell test and a 0-100 score for any Solana token.
- [DEX Pool Health Score](https://apify.com/cryptoretirement/dex-pool-health-score): health and rug-risk score for any liquidity pool on 100+ networks.
- [YouTube Most Replayed Clip Finder](https://apify.com/cryptoretirement/youtube-most-replayed-clip-finder): the most replayed moments of any video as ready-to-cut clips.

# Actor input Schema

## `currencies` (type: `array`):

Events for these currencies. Events that concern every currency (currency ALL) are always included.

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

Lowest impact level to return.

## `includeHolidays` (type: `boolean`):

Bank holidays are returned as rows with impact "holiday".

## `upcomingOnly` (type: `boolean`):

Drop events that already passed, except those still inside the news window. Use when you poll on a schedule and only need what is ahead.

## `newsWindowMinutes` (type: `integer`):

A currency is "in the news window" when one of its high-impact events is within this many minutes of now, before or after.

## Actor input object example

```json
{
  "currencies": [
    "USD",
    "EUR",
    "GBP",
    "JPY",
    "AUD",
    "CAD",
    "CHF",
    "NZD",
    "CNY"
  ],
  "minImpact": "medium",
  "includeHolidays": true,
  "upcomingOnly": false,
  "newsWindowMinutes": 30
}
```

# Actor output Schema

## `results` (type: `string`):

One item per scheduled event: time (UTC), currency, title, impact, forecast, previous, status, minutesUntil and inNewsWindow.

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

Per currency: inNewsWindow, the next and the last high-impact event. Also the next high-impact event overall and the list of currencies currently in the news window.

# 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 = {
    "currencies": [
        "USD",
        "EUR",
        "GBP",
        "JPY",
        "AUD",
        "CAD",
        "CHF",
        "NZD",
        "CNY"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cryptoretirement/forex-news-filter-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 = { "currencies": [
        "USD",
        "EUR",
        "GBP",
        "JPY",
        "AUD",
        "CAD",
        "CHF",
        "NZD",
        "CNY",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("cryptoretirement/forex-news-filter-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 '{
  "currencies": [
    "USD",
    "EUR",
    "GBP",
    "JPY",
    "AUD",
    "CAD",
    "CHF",
    "NZD",
    "CNY"
  ]
}' |
apify call cryptoretirement/forex-news-filter-economic-calendar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cryptoretirement/forex-news-filter-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/RVSgc98aAmRGd6yY6/builds/Po8tw7WraRXOVrJXF/openapi.json
