ForexFactory Calendar Scraper - Economic Events API
Pricing
$2.00 / 1,000 calendar events
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
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
highimpact andUSD, 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_forecastfield 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.