Forex Factory Economic Calendar Scraper avatar

Forex Factory Economic Calendar Scraper

Pricing

Pay per event

Go to Apify Store
Forex Factory Economic Calendar Scraper

Forex Factory Economic Calendar Scraper

πŸ“… Export current-week Forex Factory macro events with stable IDs, currency, impact, forecast, previous value, local schedule, and canonical URLs. Filter records for trading-risk dashboards, alerts, and market-data pipelines.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Export the current-week Forex Factory economic calendar as clean JSON, CSV, Excel, XML, or RSS-ready dataset records.

Get event titles, currencies, local dates and times, impact levels, forecasts, previous values, stable IDs, and canonical Forex Factory URLs without a login or API key.

This Actor is designed for repeat schedules: trading-risk dashboards, market alerts, quantitative pipelines, newsletters, and research notebooks can refresh the same structured contract throughout the week.

The source feed does not declare a timezone. This Actor preserves the source-local schedule and never invents a UTC instant.

What does Forex Factory Economic Calendar Scraper do?

The Actor fetches Forex Factory's public current-week structured feed and turns every valid macroeconomic event into a normalized dataset row.

It can:

  • πŸ“… extract this week's economic calendar events;
  • πŸ’± select currencies such as USD, EUR, GBP, JPY, CAD, AUD, NZD, or CHF;
  • 🚨 select High, Medium, Low, or Holiday impact levels;
  • πŸ”Ž restrict results to an inclusive local-date window;
  • 🧩 create a deterministic event ID for deduplication;
  • πŸ”— preserve the canonical Forex Factory event URL;
  • πŸ“€ export results through Apify datasets and integrations.

The minimum product intentionally stays on the proven public current-week feed. It does not claim arbitrary historical coverage.

Who is it for?

Traders and risk managers

Build a weekly risk calendar before entering positions. Filter to High-impact USD or EUR releases and send the records to an alerting tool.

Quantitative and market-data teams

Load normalized event schedules into a warehouse, join them to price series, and use stable IDs to avoid duplicate processing.

Newsletters and research desks

Create a repeatable list of upcoming macro events, forecasts, and previous values for briefing documents.

Automation builders

Run the Actor on a schedule and connect the dataset to Slack, Google Sheets, webhooks, Make, Zapier, or custom code.

Why use this economic calendar extractor?

Forex Factory presents useful macroeconomic information, but automation needs a stable machine-readable contract.

This Actor adds:

  • normalized dates in YYYY-MM-DD format;
  • normalized clock times in 24-hour format when available;
  • safe timezone handling with timezone: null when the feed is silent;
  • null preservation for blank forecasts and previous values;
  • stable IDs derived from event identity fields;
  • bounded retries and validation instead of silent empty output;
  • pay-per-event billing aligned with produced data.

What data can I extract?

FieldTypeDescription
eventIdstringStable 24-character event identifier
titlestringEconomic event title
currencystringThree-letter affected currency code
localDatestringSource-local date in YYYY-MM-DD
localTimestring24-hour time, All Day, Tentative, or Unscheduled
localDateTimestring or nullTimezone-free local datetime when a clock time exists
timezonenullExplicit null because the XML feed declares no timezone
impactstringHigh, Medium, Low, or Holiday
forecaststring or nullForecast value exactly as supplied
previousstring or nullPrevious value exactly as supplied
urlstringCanonical Forex Factory calendar URL
sourcestringForex Factory
scrapedAtstringUTC extraction timestamp

How to scrape the Forex Factory calendar

  1. Open the Actor input page.
  2. Set Maximum events to the number you need.
  3. Optionally add currency codes such as USD and EUR.
  4. Optionally select impact levels such as High.
  5. Optionally enter dateFrom and dateTo using YYYY-MM-DD.
  6. Click Start.
  7. Open the dataset to preview or export the economic events.
  8. Add a schedule if you need recurring refreshes.

The default input is deliberately small enough for a fast first run.

Input parameters

ParameterTypeDefaultDescription
maxItemsinteger100Maximum matching events to save, from 1 to 500
currenciesstring[][]Optional three-letter currency filters
impactsstring[][]Optional High, Medium, Low, or Holiday filters
dateFromstringunsetInclusive source-local start date
dateTostringunsetInclusive source-local end date

Empty filter arrays include all source values. Currency matching is case-insensitive.

Invalid date formats, invalid currency codes, reversed date ranges, and unsupported impact values fail closed.

Example input: high-impact USD events

{
"currencies": ["USD"],
"impacts": ["High"],
"maxItems": 50
}

For a broad weekly export:

{
"maxItems": 100
}

For a major-currency risk monitor:

{
"currencies": ["USD", "EUR", "GBP", "JPY"],
"impacts": ["High", "Medium"],
"maxItems": 200
}

Example output

{
"eventId": "37d74dd9479b359e70134b18",
"title": "BusinessNZ Services Index",
"currency": "NZD",
"localDate": "2026-07-12",
"localTime": "22:30",
"localDateTime": "2026-07-12T22:30:00",
"timezone": null,
"impact": "Low",
"forecast": null,
"previous": "47.5",
"url": "https://www.forexfactory.com/calendar/852-nz-businessnz-services-index",
"source": "Forex Factory",
"scrapedAt": "2026-07-16T02:30:00.000Z"
}

Values such as percentages or abbreviations remain strings because the source may include units and revisions.

Local time and timezone semantics

The public current-week export provides a date and time but does not declare an IANA timezone or UTC offset in the complete CSV/XML record.

Accordingly:

  • localDate preserves the calendar date;
  • localTime normalizes ordinary clock times to 24-hour form;
  • localDateTime combines those values without a timezone suffix;
  • timezone is always null;
  • all-day or tentative events have localDateTime: null.

Consumers should apply a timezone only when they have an independently verified source rule. This avoids shifting releases to the wrong instant.

Stable IDs and scheduled monitoring

The eventId is derived from title, currency, date, time, and canonical URL.

For scheduled workflows:

  1. store the latest dataset in your database;
  2. use eventId as a natural deduplication key;
  3. compare forecasts or previous values when the same ID reappears;
  4. alert only when a record is new or changed.

IDs are stable for unchanged source records, but a corrected source schedule can intentionally produce a new ID.

How much does it cost to scrape Forex Factory events?

The Actor uses pay-per-event pricing. A run costs $0.005 to start, then one item event per saved economic event.

Apify tierPrice per saved event100 events plus start
Free$0.000042972about $0.00930
Bronze$0.000037367about $0.00874
Silver$0.000029146about $0.00791
Gold$0.000022420about $0.00724
Platinum$0.000014947about $0.00649
Diamond$0.000010463about $0.00605

Input filters and maxItems let you cap output and spending. A run that saves 20 events charges one start event and 20 item events. Filtered-out source records are not item-charged.

Tips for reliable calendar workflows

  • πŸ—“οΈ Run on a schedule appropriate for your dashboard, not every minute by default.
  • 🚨 Use impact filters when only market-moving releases matter.
  • πŸ’± Use uppercase ISO-style codes in documentation, although input matching is case-insensitive.
  • πŸ”‘ Deduplicate on eventId, not title alone.
  • πŸ• Treat local schedule fields as timezone-free unless you verify the source convention.
  • πŸ“¦ Export the dataset after each run or consume it through the API.
  • πŸ” Preserve null forecasts; a blank value is different from zero.

Integrations and automation patterns

Google Sheets briefing

Schedule the Actor before a weekly trading meeting and export the dataset to a Sheet sorted by local date and impact.

Slack or email risk alerts

Filter to High-impact currencies, compare IDs against the prior run, and post new events to a risk channel.

Data warehouse ingestion

Use a webhook to copy completed dataset rows into BigQuery, Snowflake, PostgreSQL, or another warehouse.

Market-research notebook

Fetch dataset JSON in Python and join local event schedules to independently timezone-normalized market data.

Make and Zapier

Trigger a run on a schedule, iterate dataset rows, and route events by currency or impact.

API usage with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/forex-factory-economic-calendar-scraper').call({
currencies: ['USD', 'EUR'],
impacts: ['High'],
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python API example

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/forex-factory-economic-calendar-scraper').call(
run_input={
'currencies': ['USD', 'EUR'],
'impacts': ['High'],
'maxItems': 50,
}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL API example

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~forex-factory-economic-calendar-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"currencies":["USD"],"impacts":["High"],"maxItems":50}'

After the run succeeds, read its defaultDatasetId and request /v2/datasets/{DATASET_ID}/items.

Use with Apify MCP

Connect Claude Code with:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/forex-factory-economic-calendar-scraper"

For Claude Desktop, Cursor, or VS Code, add an HTTP MCP server configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/forex-factory-economic-calendar-scraper"
}
}
}

Example prompts:

  • β€œExtract this week's high-impact USD Forex Factory events.”
  • β€œBuild a JSON list of medium- and high-impact EUR and GBP releases.”
  • β€œCompare these event IDs with yesterday's dataset and summarize changes.”

Source coverage and limitations

The Actor covers the current public weekly feed available at run time.

It does not:

  • crawl arbitrary historical date ranges;
  • predict future values;
  • provide trading advice;
  • invent missing forecast or previous values;
  • convert local schedules to UTC without source timezone evidence;
  • scrape private account data.

The upstream feed can revise event dates, times, values, or URLs. Scheduled users should treat each run as a fresh source snapshot.

Data quality and error handling

The extractor validates required titles, dates, currency codes, impact levels, and canonical event URLs.

Individual malformed records are skipped with warning logs. A missing feed root or a feed with no parseable events fails rather than returning a misleading empty success.

Requests use a finite timeout and bounded retries. The actor explicitly decodes the feed's declared Windows-1252 encoding.

This Actor reads an anonymously accessible public structured feed and does not bypass login controls.

You are responsible for your use of the data, including compliance with applicable laws, contracts, Forex Factory terms, intellectual-property rights, and privacy obligations.

Use reasonable schedules, avoid unnecessary load, and do not present the output as investment advice.

FAQ

Does the Actor need a Forex Factory account?

No. The current-week feed used by this Actor is publicly accessible without a login or API key.

Can I scrape last month or any custom historical range?

Not in v1. The reliable product scope is the public current-week feed. Date filters narrow that feed; they do not request historical pages.

Why is timezone null?

The complete CSV/XML record does not declare a timezone. Returning null is safer than inventing an offset that could move an event to the wrong instant.

Why are some forecasts or previous values null?

Forex Factory leaves some values blank, especially before estimates are available. The Actor preserves blanks as null rather than treating them as zero.

Why did my filtered run return no events?

The selected currencies, impacts, or local date range may not occur in the current weekly feed. Remove filters or inspect the unfiltered weekly export.

Why did the run reject my date?

Use YYYY-MM-DD, for example 2026-07-16. Ensure dateFrom is not later than dateTo.

Can I stop after a fixed number of records?

Yes. Set maxItems from 1 to 500. It applies after filtering.

Can I use the output for automated trading?

You can integrate it into your own systems, but verify timing and data independently. The Actor is a data extraction tool, not financial advice.

Combine this Actor with other automation-lab data tools:

Choose this Actor when your workflow specifically needs the Forex Factory current-week event feed.

Support

If a run fails unexpectedly, share the run URL and a minimal input that reproduces the issue through the Actor page.

Useful details include:

  • the currency and impact filters used;
  • the local date range;
  • whether an unfiltered run worked;
  • the expected event title or URL.

These details make source-feed changes and parser regressions faster to diagnose.