ForexFactory Calendar Scraper - Economic Events API avatar

ForexFactory Calendar Scraper - Economic Events API

Pricing

$2.00 / 1,000 calendar events

Go to Apify Store
ForexFactory Calendar Scraper - Economic Events API

ForexFactory Calendar Scraper - Economic Events API

Get the ForexFactory calendar as clean data: every economic release, speech and holiday with time in UTC, currency, impact, actual, forecast, previous and revision. Current week or history back to 2007, filtered by currency and impact, for traders, bots and fintech apps.

Pricing

$2.00 / 1,000 calendar events

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

ForexFactory Calendar Scraper: Economic Events as Data

This ForexFactory calendar scraper turns the Forex Factory economic calendar into structured data for forex traders, macro researchers, trading bots and fintech apps. It collects economic calendar events for forex traders, macro researchers, trading bots and financial applications. Get one dataset row per release, speech or holiday, with its title, currency, impact, actual result, forecast, previous value and revision. You can collect the current week, a single day, a calendar month or a historical date range. Filters let you keep the events relevant to your markets before results are delivered.

ForexFactory calendar input options

The default period is this_week. Weeks start on Monday and end on Sunday in the selected time zone. Choose today, tomorrow, yesterday, next_week, last_week, this_month, next_month or last_month when you want a relative period. Relative periods are useful for recurring jobs because the dates are calculated at the start of each run.

For specific dates, select period: custom and set date_from in YYYY-MM-DD format. Set date_to for the inclusive end date, or omit it to collect a single day. Historical requests can start from 2007-01-01. Each requested range can contain up to 366 days. Use multiple runs for a longer research period. The date fields are accepted only for custom periods, so a date cannot be silently ignored by a relative-period setting.

Use currencies to select USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD or CNY. The special value ALL selects worldwide events that the calendar does not assign to one currency. An empty currency list includes everything. Select any combination of high, medium, low and holiday in impacts. Values in these filter lists are case insensitive.

The countries filter accepts ISO country codes, including EU for the eurozone. ForexFactory aliases such as UK, JN, EZ, GE, SZ and SP are also accepted. CH means Switzerland in this input; use CN for China. To specify the original source meaning unambiguously, prefix a ForexFactory country code with FF:, such as FF:CH for China. WW selects events without a specific country.

Set released_only to true when you need events that have a published actual value. Past speeches, holidays and other events without an actual value are then excluded. Use keyword for a case insensitive substring match on the event title. These filters work together: a row must pass every supplied filter.

Time zones and release times

The timezone field accepts an IANA time zone such as UTC or America/New_York. UTC is the default. Period boundaries and ordinary event dates follow your selected zone. Every event with an exact time has datetime_utc and time_local, so you can compare UTC timestamps across markets while displaying the local release time in your app. Local timestamps include their offset and reflect daylight saving time.

Some events have only a label such as All Day, Tentative or Day 2. Those events have time_masked: true, and both exact timestamp fields are null. Their original date and time label remain available. The scraper does not turn the source's placeholder time into a claimed release time. For masked events the date remains the source's UTC calendar date, even when you select another time zone.

ForexFactory calendar output and economic values

The default dataset contains one row per delivered calendar event. Stable event_id values let you recognize an event in subsequent runs. series_id identifies the indicator series. source identifies this scraper, and fetched_at records when the calendar page was retrieved. The event URL and series URL are included for reference.

country uses ISO country codes and EU for eurozone releases. ff_country preserves the original ForexFactory code. currency is null for worldwide events; ff_currency retains the original All label. Impact values are high, medium, low and holiday.

Actual, forecast, previous and revision are returned as display text. This preserves units, scale and composite auction values. Previous is the originally published previous value; revision is the revised previous value. They are separate fields. For example, the KOF Economic Barometer release on 2026-09-29 in the captured calendar has actual 109.1, forecast 106.0, previous 106.7 and revision 107.5.

Optional numeric fields expand K, M, B and T and strip a percent sign. A composite value such as an auction yield paired with bid-to-cover remains text and has a null numeric value. actual_vs_forecast and revision_vs_previous expose the better or worse direction supplied by the calendar, without calculating a trading signal.

What you can do with the ForexFactory calendar data

  • Trading bots and alerts: schedule a run before the New York session, filter on high impact and USD, and pause strategies around releases such as payrolls or rate decisions.
  • Backtesting: collect a historical range with actual, forecast and previous values to measure how markets reacted to surprises. The actual_vs_forecast field marks better or worse releases.
  • Macro dashboards: feed a weekly economic calendar into a BI tool or a fintech app, with UTC timestamps that convert cleanly to any display zone.
  • Research and newsletters: export a month of events by country to a spreadsheet and build a "week ahead" briefing.

Why use this instead of other economic calendar actors

Many calendar actors deliver only the current week, charge a start fee on top of every event, or return values without revisions. This actor covers the current week and history back to 2007, keeps previous and revision as separate fields, labels events without an exact time instead of inventing one, and charges only for events actually delivered. You pay no per-run fee, and an empty week costs nothing.

Result limits and price

max_items limits the total number of delivered events after filtering. The default is 1000 and the supported range is 1 to 20000. Large date ranges are collected in successive pages automatically. The limit applies to the full run, across those pages. Free-plan users receive at most ten events in a run.

Example output

One row from a real run (Swiss KOF Economic Barometer, collected with period: custom, date_from: 2026-09-29, countries: ["CH"], keyword: "KOF"):

{
"event_id": "147368",
"title": "KOF Economic Barometer",
"country": "CH",
"currency": "CHF",
"impact": "low",
"date": "2026-09-29",
"datetime_utc": "2026-09-29T07:00:00Z",
"timezone": "UTC",
"actual": "109.1",
"forecast": "106.0",
"previous": "106.7",
"revision": "107.5",
"time_masked": false,
"actual_value": 109.1,
"actual_vs_forecast": "better",
"revision_vs_previous": "better"
}

Pricing

Billing is per delivered event at the price shown on this actor's pricing tab. This scraper adds no per-run event charge. An empty result has zero billable calendar events. Dataset rows are delivered before their event charge is applied. Filters can reduce delivery volume; a calendar week with no matching events is empty.

FAQ

How do I get the ForexFactory calendar for this week?

Leave the input empty. The default period is this_week, so a run returns Monday to Sunday in your time zone.

Is this an official ForexFactory API?

No. The actor reads the public calendar and returns it as a dataset, so you can use it as an economic calendar API from Apify.

Can I collect historical ForexFactory events?

Yes. Use a custom period starting on or after 2007-01-01. Include date_to for a range, with up to 366 inclusive days per run. Availability follows the calendar; each row describes the source data retrieved during that run.

Why does a future period return no events?

The calendar may not have published that period yet. An empty result contains no calendar event charges. Try a closer period or collect the same dates again after the source has added its schedule.

Why is datetime_utc null for some rows?

The source does not provide an exact time for those events. Check time_masked, time_label and date for the available scheduling information.

Does released_only include every past event?

It includes only events with a nonempty actual value. A past speech without a result is excluded. Leave this option false if you want the complete schedule.