ForexFactory Calendar Scraper avatar

ForexFactory Calendar Scraper

Pricing

from $5.95 / 1,000 results

Go to Apify Store
ForexFactory Calendar Scraper

ForexFactory Calendar Scraper

Scrape scheduled economic releases from Trading Economics, Nasdaq and ForexFactory. Results include event dates and times in UTC, country or currency, importance, and available release values. The ForexFactory weekly feed can also add impact ratings to matching Trading Economics and Nasdaq events.

Pricing

from $5.95 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Returns: one row per economic event with datetimeUtc, country, currency, event, importance, actual, consensus and forecast. Input: {"dateRange": "thisWeek", "countries": ["United States"], "minImportance": "medium", "maxItems": 100} Best for: macro trading dashboards, news and alert bots that react to data releases, and research datasets of historical releases.

{
"id": "te-399075",
"datetimeUtc": "2026-10-14T12:30:00Z",
"country": "United States",
"currency": "USD",
"event": "Inflation Rate YoY",
"importance": "high",
"actual": "3.7%",
"forecast": "3.6%"
}

What does Economic Calendar Scraper do?

Economic Calendar Scraper is an economic calendar API for data releases and central bank events. Give it a date range, optionally a list of countries and a minimum importance, and it returns one structured row for every scheduled release: the time in UTC, the country and currency, the event name, and the actual, previous, consensus and forecast values as the source displays them. You can use it as a Trading Economics scraper, a Nasdaq economic events scraper, or a ForexFactory calendar scraper, or combine the three in one run.

The default source is the public Trading Economics calendar. It covers more than 250 countries and has an importance rating (low, medium, high), a category, a reference period such as SEP or Q3, a ticker and a link to the indicator page. The Nasdaq source adds one request per day, works for any past or future date, and includes a plain-language description when the source supplies one. The ForexFactory source is the public weekly feed with impact ratings for the current week; it is also used to add a forexFactoryImpact value to Trading Economics and Nasdaq rows that fall in the same week and match on currency, time and title.

All times are converted to UTC so you can sort and join rows across sources. Values are kept as strings exactly as shown (-39.3K, 3.3%, 3.99M), so units are never lost. No login is needed and no cookies or accounts are required from you.

Use the records for trading dashboards, release alerts and historical comparisons.

What data can you get from Trading Economics, Nasdaq and ForexFactory?

Every row has the same fields. Fields a source does not provide are null, for example description is only filled for Nasdaq rows and ticker only for Trading Economics rows.

FieldDescriptionExample
idStable ID with a source prefix (te-, nq-, ff-), unique within a runte-399064
sourcetradingeconomics, nasdaq or forexfactorytradingeconomics
dateEvent date in UTC, YYYY-MM-DD2026-10-13
timeEvent time in UTC, HH:MM, null when the source gives no time14:00
datetimeUtcISO 8601 timestamp in UTC2026-10-13T14:00:00Z
countryCountry name (null on ForexFactory rows, which only give a currency)United States
countryCodeTrading Economics country codeUS
currencyISO 4217 currency of the country, or the feed currency on ForexFactory rowsUSD
eventName of the release or eventExisting Home Sales
referencePeriod the release refers toSEP
categoryIndicator category in lowercaseexisting home sales
importancelow, medium, high or holiday (null for Nasdaq rows)high
actualReleased value as displayed, null before the release3.99M
previousPrevious value as displayed3.93M
revisedRevised previous value, when the source revised it3.98M
consensusMarket consensus as displayed3.95M
forecastForecast as displayed3.97M
forexFactoryImpactForexFactory impact rating (Low, Medium, High, Holiday) for events in the current weekHigh
tickerTrading Economics indicator symbolUNITEDSTAEXIHOMSAL
eventUrlTrading Economics indicator pagehttps://tradingeconomics.com/united-states/existing-home-sales
descriptionExplanation of the indicator (Nasdaq rows)German Retail Sales measures the change in...
scrapedAtTimestamp of the run2026-10-15T19:14:27.693Z
sourceUrlPage or API endpoint the row came fromhttps://tradingeconomics.com/united-states/existing-home-sales

Rows from different sources are not merged. If you select Trading Economics and Nasdaq, the same release can appear twice, once per source, and the source field tells them apart. Filter on source if you want a single feed.

How to use Economic Calendar Scraper

  1. Open the Actor on Apify and go to the Input tab.
  2. Choose a dateRange, for example thisWeek, or pick custom and enter startDate and endDate.
  3. Add countries as names (United States, Euro Area, Germany) or as Trading Economics ISO3 codes (usa, emu, gbr, jpn). Leave the list empty to get every country.
  4. Set minImportance to medium or high to drop minor releases, and choose the sources you want.
  5. Set maxItems, press Start, and export the dataset as JSON, CSV, Excel, XML or RSS when the run finishes.

A few tips. Weeks run from Monday to Sunday and all times are UTC. Rows are sorted by time and country, so maxItems keeps the earliest events in the range. A custom range can span at most 31 days. For Trading Economics, the custom range must fall inside one of its guest windows (roughly the last 30 days up to the end of next month); for any other dates, add nasdaq to sources, which accepts any date. If a custom range does not fit a Trading Economics window, the Actor falls back to Nasdaq for those days and logs a warning.

Input

FieldTypeRequiredDescription
dateRangestringNotoday, tomorrow, yesterday, thisWeek (default), nextWeek, lastWeek, thisMonth, nextMonth, last30Days or custom
startDatestringWith customFirst day, YYYY-MM-DD
endDatestringNoLast day, YYYY-MM-DD, at most 31 days after startDate
countriesarray of stringsNoCountry names or ISO3 codes. Empty means all countries. Unknown values are skipped with a warning
minImportancestringNolow (default), medium or high. Nasdaq rows have no rating and are left out unless this is low
sourcesarray of stringsNoAny of tradingeconomics (default), nasdaq, forexfactory
addForexFactoryImpactbooleanNoAdd forexFactoryImpact to rows in the current week. Default true
currenciesarray of stringsNoCurrency codes such as USD or EUR, case-insensitive. Empty (default) keeps all
eventKeywordsarray of stringsNoLiteral phrases matched against event titles, case-insensitive. Any phrase may match; empty keeps all
categoriesarray of stringsNoExact Trading Economics category values, case-insensitive. Empty keeps all; other sources have no category
maxItemsintegerNoMaximum rows across all sources, 1-10000, default 100
proxyConfigurationobjectNoProxy settings. Default: no proxy. Enable Apify Proxy if the sites block your runs
{
"dateRange": "thisWeek",
"countries": ["United States", "Euro Area"],
"minImportance": "medium",
"sources": ["tradingeconomics"],
"addForexFactoryImpact": true,
"maxItems": 100,
"proxyConfiguration": { "useApifyProxy": false }
}

To monitor inflation without collecting unrelated releases, add "eventKeywords": ["inflation"]. To follow a currency across several countries, use "currencies": ["EUR"] and leave countries empty. To select an exact Trading Economics indicator category, use "categories": ["inflation rate"]; this excludes Nasdaq and ForexFactory rows because their category is null. Category values are the source's labels, such as inflation rate mom, rather than broad themes inferred from titles.

These three filters are optional and default to empty lists. Multiple values within one filter are alternatives; different filters apply together with countries, date range and importance. For example, a USD currency filter combined with Germany will normally return no rows. Keywords are literal substrings, not regular expressions or translations. A non-English phrase only matches if that text occurs in the source's event title. An unknown currency, category or unmatched keyword returns a successful empty dataset with a message suggesting fewer filters. Filters apply before saving and charging: maxItems is the shared maximum of matching records, so skipped rows consume no results. They do not reduce upstream requests because source pages are collected before filtering and chronological sorting.

For a fixed historical window from Nasdaq only:

{
"dateRange": "custom",
"startDate": "2026-09-01",
"endDate": "2026-09-03",
"countries": ["Germany"],
"sources": ["nasdaq"],
"maxItems": 50
}

The Nasdaq source labels its time column as GMT, but the values are US Eastern time. The Actor converts them from America/New_York to UTC, including daylight saving changes, so time and datetimeUtc are comparable across sources.

When a ForexFactory currency filter is needed, countries are mapped to their currency, so selecting Germany for the ForexFactory source returns EUR rows. ForexFactory rows have no country name, only the currency.

Output

Each run writes one dataset item per event. Two real rows from Trading Economics and one from Nasdaq:

[
{
"id": "te-399064",
"source": "tradingeconomics",
"date": "2026-10-13",
"time": "14:00",
"datetimeUtc": "2026-10-13T14:00:00Z",
"country": "United States",
"countryCode": "US",
"currency": "USD",
"event": "Existing Home Sales",
"reference": "SEP",
"category": "existing home sales",
"importance": "high",
"actual": "3.99M",
"previous": "3.93M",
"revised": "3.98M",
"consensus": "3.95M",
"forecast": "3.97M",
"forexFactoryImpact": null,
"ticker": "UNITEDSTAEXIHOMSAL",
"eventUrl": "https://tradingeconomics.com/united-states/existing-home-sales",
"description": null,
"scrapedAt": "2026-10-15T19:14:27.693Z",
"sourceUrl": "https://tradingeconomics.com/united-states/existing-home-sales"
},
{
"id": "te-398650",
"source": "tradingeconomics",
"date": "2026-10-14",
"time": "12:30",
"datetimeUtc": "2026-10-14T12:30:00Z",
"country": "United States",
"countryCode": "US",
"currency": "USD",
"event": "Core Inflation Rate MoM",
"reference": "SEP",
"category": "core inflation rate mom",
"importance": "high",
"actual": "0.3%",
"previous": "0.3%",
"revised": null,
"consensus": "0.2%",
"forecast": "0.2%",
"forexFactoryImpact": null,
"ticker": "USACIRM",
"eventUrl": "https://tradingeconomics.com/united-states/core-inflation-rate-mom",
"description": null,
"scrapedAt": "2026-10-15T19:14:27.693Z",
"sourceUrl": "https://tradingeconomics.com/united-states/core-inflation-rate-mom"
},
{
"id": "nq-2026-09-02-germany-german-retail-sales-02-00-0",
"source": "nasdaq",
"date": "2026-09-02",
"time": "06:00",
"datetimeUtc": "2026-09-02T06:00:00Z",
"country": "Germany",
"countryCode": null,
"currency": "EUR",
"event": "German Retail Sales",
"actual": "-3.4%",
"previous": "0.0%",
"consensus": "0.4%",
"description": "German Retail Sales measures the change in the total value of inflation-adjusted...",
"sourceUrl": "https://api.nasdaq.com/api/calendar/economicevents?date=2026-09-02"
}
]

The third record is shortened here for readability; real rows always contain every field, with null where a source has no value. Results can be exported as JSON, CSV, Excel, XML or RSS from the dataset page, or read through the API.

How much does it cost to scrape the economic calendar?

Economic Calendar Scraper is charged per result. You pay only for the rows returned, and maxItems caps how many that can be. See the Pricing tab for the current price. A typical week for one or two countries is a few dozen rows; an all-country run over a week is larger, so set maxItems if you only need the first entries.

Use with AI agents (MCP)

Connect Economic Calendar Scraper to Claude, Cursor or any MCP client through the Apify MCP server:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=axiomworks/economic-calendar-scraper"
}
}
}

Example prompts:

  1. "List the high-importance US economic releases this week with their consensus and actual values."
  2. "What euro area data releases are scheduled tomorrow, in UTC?"
  3. "Get the German events from the Nasdaq calendar between 2026-09-01 and 2026-09-03."

The input fields are described for agents: dateRange has a closed list of values, countries takes names or ISO3 codes, and a request that matches nothing returns zero rows with a status message instead of an error.

Integrations and API

Run Economic Calendar Scraper from your own code with the Apify API. Set APIFY_TOKEN to your Apify API token (send it in the Authorization header, never in the URL).

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("axiomworks/economic-calendar-scraper").call(
run_input={"dateRange": "thisWeek", "countries": ["United States"], "minImportance": "medium", "maxItems": 100}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["datetimeUtc"], item["country"], item["event"], item["actual"], item["consensus"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('axiomworks/economic-calendar-scraper').call({
dateRange: 'thisWeek',
countries: ['United States'],
minImportance: 'medium',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

cURL

curl -X POST "https://api.apify.com/v2/acts/axiomworks~economic-calendar-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"dateRange": "thisWeek", "countries": ["United States"], "minImportance": "medium", "maxItems": 100}'

Use the Integrations tab to send results to Make, Zapier, n8n, Google Sheets or a webhook, or schedule the Actor to run every morning before the market opens.

FAQ

How fresh is the data? Trading Economics and Nasdaq are fetched live. The ForexFactory feed may be reused for up to 15 minutes to avoid rate limits. Released values depend on source updates.

Why did my run return 0 rows? The status message says why. The usual causes are a country name the Actor does not recognise (use a name like Euro Area or an ISO3 code like emu), a minImportance that is too high for a small country, or choosing only the Nasdaq source together with medium or high, because Nasdaq rows are not rated.

Why are some forexFactoryImpact values empty? The ForexFactory feed covers the current week only and has no entry for every release. A Trading Economics or Nasdaq row gets a value only when a ForexFactory row has the same currency and UTC time and shares a word with the event title. If the feed is rate limited, the run continues without it.

Are the values numbers? No, they are strings as displayed, with units such as K, M, B and %, so nothing is lost in conversion. Parse them in your own pipeline if you need numbers.

Can I get every country at once? Yes, leave countries empty. Trading Economics shows guests at most 1000 rows per request, so the Actor splits the country list into several requests when needed and removes duplicates.

What time zone are the times in? UTC for all sources. Trading Economics times are requested in UTC, ForexFactory times are converted from their offset, and Nasdaq times are converted from US Eastern.

Do I need a proxy? Usually not. If requests are blocked, enable Apify Proxy in the proxyConfiguration input; blocked or rate-limited requests are retried on a new session.

Can I get dates far in the past? Use the Nasdaq source with a custom range of up to 31 days; it accepts any past or future date. Trading Economics only serves a rolling guest window.

Economic Calendar Scraper collects publicly visible calendar data that loads without logging in. It does not bypass logins or CAPTCHAs. You are responsible for how you use the data, including any terms of the source sites and local laws. This is not legal advice.

Economic Calendar Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Trading Economics, Nasdaq or ForexFactory.

Feedback

Found a bug or need a field that isn't here? Open an issue on the Issues tab and we'll look at it.