Economic Calendar Scraper & API (Official Sources) avatar

Economic Calendar Scraper & API (Official Sources)

Pricing

from $2.10 / 1,000 calendar events

Go to Apify Store
Economic Calendar Scraper & API (Official Sources)

Economic Calendar Scraper & API (Official Sources)

Macro release calendar for the US, euro area, UK, Canada and Australia from BLS, BEA, Fed, ECB and ONS with actual values. AI agents ready via MCP.

Pricing

from $2.10 / 1,000 calendar events

Rating

0.0

(0)

Developer

Ocius Data

Ocius Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Unlike calendars scraped from Investing.com or ForexFactory, every run also gives you a ready-to-import calendar file (CALENDAR.ics) for Google Calendar, Outlook or Apple Calendar, plus an INSIGHTS record with the next high-importance release and the largest moves against the previous period. The run's status message shows those numbers and the calendar link as soon as it finishes.

Economic Calendar API returns the macroeconomic release calendar of the United States, the euro area, the United Kingdom, Canada and Australia, built only from the official calendars of statistics agencies and central banks: BLS, BEA, U.S. Census Bureau, Federal Reserve, Eurostat, ECB, ONS, Statistics Canada, Bank of Canada, ABS and RBA. Each row is one release or rate decision with the time in UTC and in the agency's local time zone, country, currency, event name, reference period, importance, category, actual and previous values for the most traded indicators, the source URL and the licence under which the data can be reused. You pay per event saved.

Why this economic calendar

  • One-click calendar file and insights (new in 0.1.7). CALENDAR.ics holds every event of the run, with country, importance, reference period, previous value, source and licence in each entry. INSIGHTS gives the next high-importance release with the hours left, the five largest moves against the previous period, the busiest day and counts by country, importance, category and data quality. Both are free and come from the data already read in the run.
  • Change and quality on every row (new in 0.1.7). change, changePercent and direction against the previous period; importanceReason explains in one sentence why the release has its importance; valuesStatus, dataQuality and warnings say when a value is still pending or not covered, so an empty cell is never ambiguous.
  • Official sources, cleared for reuse. Every event comes from the publishing agency itself, under public domain, the Open Government Licence, CC BY 4.0 or an equivalent reuse licence. Each row carries its license and the attribution text the agency asks for. Calendars copied from trading websites usually forbid redistribution; this one does not depend on them.
  • Actual and previous values from the source. For CPI, the U.S. jobs report, PPI, JOLTS, euro area HICP, unemployment, GDP, retail trade and industrial production, UK CPI, labour market, monthly GDP and retail sales, and Canada's CPI, Labour Force Survey and monthly GDP, the values come from the agencies' own statistics APIs (BLS, Eurostat, ONS, Statistics Canada). They are included at no extra charge.
  • Correct times all year. Times are converted from each agency's local time with daylight saving time handled per time zone (for example, euro indicators at 11:00 Luxembourg time are 10:00 UTC in winter and 09:00 UTC in summer).
  • Filters that work. Date range (absolute or relative such as today to +7d), countries, importance and categories. Every filter is applied before a row is saved, so you never pay for rows you did not ask for.
  • Fair billing. One calendar-event charge per row saved. Status messages and errors are never written to the dataset and never charged. Your maximum cost per run is respected.
  • Clear status. Every country and source ends with a status in the RUN_SUMMARY record. If more than 20% of the selected countries or official sources cannot be read, the run is marked as failed so you notice; the events that were read are still delivered.

How to use it

  1. Choose the date range. Leave it empty for today and the next 7 days, or write dates such as 2026-11-01, or relative values: today, tomorrow, -7d, +2w.
  2. Choose the countries: US, EA (euro area), GB, CA, AU. Empty means all five.
  3. Choose the importance: high, medium, low (default: high and medium).
  4. Optionally limit the categories: inflation, labour, growth, consumer, business, housing, trade, central-bank, government, sentiment, other.
  5. Run the Actor and open the Calendar, Values and changes or Data quality and licence view, download JSON, CSV or Excel, or import the CALENDAR.ics file linked in the status message.

Example input: high-importance U.S. and euro area events for the next two weeks, with dates read in New York time.

{
"dateFrom": "today",
"dateTo": "+14d",
"countries": ["US", "EA"],
"importance": ["high"],
"timezone": "America/New_York"
}
InputDefaultDescription
dateFromtodayFirst day, YYYY-MM-DD or relative (today, yesterday, -7d).
dateTostart + 7 daysLast day (included). Maximum range: 366 days.
countriesallUS, EA, GB, CA, AU. UK and EU are accepted as aliases.
importancehigh, mediumOur rating of the release type (see the FAQ).
categoriesallOne or more categories.
releaseStatusallall, released (time already passed) or scheduled.
includeValuestrueAdds actual and previous values where an official API provides them.
timezoneUTCIANA time zone used to read the date range; adds datetimeInRequestedTimezone to each row.
maxEvents1000Stops after this many rows.

Output example and field dictionary

{
"eventId": "6cbcbbf49b72d188",
"datetimeUtc": "2026-10-14T12:30:00.000Z",
"date": "2026-10-14",
"time": "08:30",
"datetimeLocal": "2026-10-14T08:30:00-04:00",
"timezone": "America/New_York",
"timeType": "official",
"dateStatus": "confirmed",
"country": "US",
"countryName": "United States",
"currency": "USD",
"event": "Consumer Price Index",
"referencePeriod": "September 2026",
"category": "inflation",
"importance": "high",
"status": "released",
"actual": 3.7,
"forecast": null,
"previous": 3.4,
"unit": "%",
"metric": "CPI-U all items, year over year",
"additionalValues": [
{ "metric": "CPI-U all items, month over month (seasonally adjusted)", "unit": "%", "actual": 0.6, "previous": 0.4 },
{ "metric": "Core CPI (less food and energy), year over year", "unit": "%", "actual": 2.6, "previous": 2.4 },
{ "metric": "Core CPI (less food and energy), month over month (seasonally adjusted)", "unit": "%", "actual": 0.3, "previous": 0.3 }
],
"valuesSource": "BLS Public Data API",
"source": "U.S. Bureau of Labor Statistics",
"sourceUrl": "https://www.bls.gov/schedule/2026/home.htm",
"license": "Public domain (U.S. government work)",
"attribution": "Source: U.S. Bureau of Labor Statistics. BLS.gov cannot vouch for the data or analyses derived from these data after the data have been retrieved from BLS.gov.",
"input": { "dateFrom": "2026-10-01", "dateTo": "2026-10-31", "timezone": "UTC" },
"scrapedAt": "2026-11-02T12:37:30.160Z",
"change": 0.3,
"changeUnit": "percentage points",
"changePercent": null,
"direction": "up",
"hoursUntilRelease": -456.1,
"dayOfWeek": "Wednesday",
"valueIsComputed": true,
"valuesPeriod": "2026-09",
"valuesSeriesUpdatedAt": "2026-10-14T12:30:00.000Z",
"importanceReason": "Rated high (inflation): the official title matches our inflation rule for high-importance releases.",
"valuesStatus": "actual_published",
"dataQuality": "complete",
"warnings": []
}
FieldTypeMeaningWhen it is null
eventIdstringStable key (agency + release + reference period). The same release keeps its ID across runs, even if it is rescheduled. Use it to deduplicate.Never
datetimeUtcISO 8601Release time in UTC.Never
date, time, datetimeLocalstringRelease date, time and timestamp with offset in the agency's time zone.Never
timezonestringIANA time zone of the publishing agency.Never
timeTypestringofficial: the time is published by the agency. standard: the agency publishes the date and the time is its standing practice (FOMC 14:00 ET, ECB 14:15 CET, Bank of Canada 9:45 ET).Never
dateStatusstringconfirmed, or provisional when the agency marks the date as provisional (ONS, Eurostat).Never
country, countryName, currencystringUS/USD, EA/EUR, GB/GBP, CA/CAD, AU/AUD.Never
eventstringOfficial release name.Never
referencePeriodstringPeriod the data refers to, as published (for example September 2026, Q3/2026).Rate decisions and releases without a period
category, importancestringOur classification (see the FAQ).Never
statusstringreleased if the release time has passed when the Actor ran, otherwise scheduled.Never
actualnumberHeadline value for the reference period, from the official statistics API.Scheduled events, releases outside the covered indicators, or when the agency's API has not been updated yet
forecastnullAlways null. No official source publishes a market consensus, and commercial consensus data cannot be redistributed. Kept for compatibility with other calendars.Always
previousnumberSame metric for the period before.Releases outside the covered indicators
unit, metricstringUnit and exact definition of actual and previous.When there are no values
additionalValuesarrayOther metrics of the same release (for example core CPI, unemployment rate, average hourly earnings).Empty when there are none
valuesSourcestringAPI the values come from.When there are no values
source, sourceUrlstringPublishing agency and the page or file the event was read from.Never
license, attributionstringReuse licence and the credit line the agency asks for.Never
datetimeInRequestedTimezonestringRelease time in the timezone you chose.Absent when the time zone is UTC or the agency's own
input, scrapedAtobject, stringDate range of the run and the time the row was produced.Never
changenumberactual minus previous. For rates (unit %) it is in percentage points. Also given inside each additionalValues item, with changeUnit, changePercent and direction.When actual or previous is missing
changeUnitstringpercentage points for rates, otherwise the unit of the value.When change is null
changePercentnumberPercent change against previous, only for levels (for example job openings in thousands).Rates, values that are already changes (payrolls), or when change is null
directionstringup, down or unchanged.When change is null
hoursUntilReleasenumberHours from the start of the run to the release; negative when already released.Never
dayOfWeekstringWeekday of the release in the agency's time zone.Never
valueIsComputedbooleantrue when actual and previous are computed from the official index or level (month over month, year over year), false when published as is.When there are no values
valuesPeriodstringObservation the values belong to (2026-09, 2026-Q3).When there are no values
valuesSeriesUpdatedAtISO 8601Last update of the official series, as reported by the statistics API.When the API does not report it or there are no values
importanceReasonstringOne sentence explaining the importance and category of the release.Never
valuesStatusstringactual_published, awaiting_release (scheduled; previous only), released_value_pending (released, API not updated yet), not_matched, provider_unavailable, not_covered (no official values API for this release in this version) or not_requested (includeValues off).Never
dataQualitystringcomplete (actual and previous), partial (one of them) or calendar_only (date, time and source only).Never
warningsarrayPlain-language notes on this row: standard instead of published time, provisional date, value still pending, API unavailable.Empty when there is nothing to flag

forecast is not shown in the Calendar view because it is always null; it stays in the data and in "All fields" for compatibility.

Key-value store records

RecordContent
RUN_SUMMARYStatus per country and source, events read and time taken per source, events removed by each filter, values coverage per statistics API, reconciliation between rows saved and events charged, HTTP statistics, warnings, and the links to INSIGHTS and CALENDAR.ics.
INSIGHTSnextHighImportance (event, time, hours until release, previous value), nextEvents (next five), largestMoves (five largest changes against the previous period), busiestDay, eventsByDay, eventsByCountry, eventsByImportance, eventsByCategory, dataQualityCounts, counts of released and scheduled events and calendarFileUrl.
CALENDAR.icsiCalendar file (RFC 5545) with one 15-minute entry per saved row, in UTC. Import it in Google Calendar (Settings > Import), Outlook or Apple Calendar. The link in the status message and in INSIGHTS is a signed link that opens without a token. Not written when the run saves no rows.
INPUT, STATEYour input, and the progress used to resume after a platform migration without duplicates or double charges.

The Output tab links each view, the Calendar view as CSV, INSIGHTS, CALENDAR.ics and RUN_SUMMARY.

About actual values. actual is the latest official value for the reference period at the time of the run, so it includes any revision published since the first release. Percent changes marked "month over month" or "year over year" for BLS, ONS (monthly GDP, retail sales) and Statistics Canada are computed from the official index or level with one decimal, and can differ by 0.1 from the rounded figure in the press release.

Sources and coverage

CountrySourceWhat is readDates coveredLicence
USU.S. Bureau of Labor StatisticsRelease schedule (CPI, jobs report, PPI, JOLTS and more); values from the BLS Public Data APIPast and future yearsPublic domain
USU.S. Bureau of Economic AnalysisRelease calendar (GDP, personal income and outlays, trade)Past and futurePublic domain
USU.S. Census BureauEconomic indicators calendar (retail sales, durable goods, housing starts, construction)Current and next yearPublic domain
USFederal Reserve BoardFOMC rate decisions and minutes2021 onwardsPublic domain
EAEurostatEuro indicators release calendar; values from the Eurostat APIPast and futureCC BY 4.0
EAEuropean Central BankMonetary policy decisionsUpcoming meetingsECB reuse policy
GBOffice for National StatisticsRelease calendar (economic releases only); values from ONS time seriesPast and futureOpen Government Licence v3.0
CAStatistics CanadaMajor economic releases; values from the Web Data Service2012 onwards and futureStatistics Canada Open Licence
CABank of CanadaInterest rate announcementsCurrent and next yearBank of Canada terms (reuse with attribution)
AUAustralian Bureau of StatisticsRelease calendar (economic releases only)Upcoming (current month and the next 6)CC BY 4.0
AUReserve Bank of AustraliaCash rate decisionsCurrent yearCC BY 4.0

Bank of England dates are not included: the Bank's website terms allow only personal and internal use.

Pricing and cost calculator

Typical job cost (prices read from the live pricing on 4 November 2026, Free and Bronze plans): a week of U.S. high-importance releases (2 rows in the week of 4 November 2026) costs about USD 0.006; the default input (next 7 days, all five economies, high and medium importance: 11 rows) costs about USD 0.033. Add USD 0.00005 for the run start. Platform compute is included in the price; you pay nothing else.

Apify Store discounts: calendar-event costs 15% less on Silver and 30% less on Gold and above.

Pay per event: USD 0.003 per calendar-event, one charge per row saved to the dataset. The only other charge is Apify's standard start event (apify-actor-start), USD 0.00005 per run at the default memory.

EventWhen it is charged
calendar-eventOne calendar row (release or rate decision) that passed validation and was saved.

Free plan: the USD 5 of monthly usage included in the Apify Free plan covers about 1,650 calendar rows (USD 0.003 each): about 100 runs of the default input (next 7 days, 16 rows).

Never charged: actual and previous values, sources that could not be read, invalid inputs, events removed by your filters, and the RUN_SUMMARY record. Your maximum cost per run is respected: the Actor stops before saving a row it cannot charge.

Rows measured in test runs (November 2026):

Typical useRowsCost
Next 7 days, all countries, high and medium importance (default input)16USD 0.048
Next 7 days, all countries, all importance levels22USD 0.066
One month (October 2026), all countries, high and medium importance49USD 0.147
One month (October 2026), all countries, all importance levels86USD 0.258
35 days, United States only, high importance7USD 0.021

Formula: rows × 0.003. Prices shown are for the Free and Bronze plans; Silver and Gold pay less. Defects: if a run delivers a wrong time or value because of a defect in the Actor, open an issue with the run ID. Defects are fixed with priority, usually within 72 hours.

Integrations: schedules, API, webhooks, Sheets and AI agents

Schedules. Save an input such as {"dateFrom": "today", "dateTo": "today", "importance": ["high"]} as a task and schedule it every morning, or every 15 minutes during release hours with "releaseStatus": "released" to collect actual values as soon as the agencies publish them. Deduplicate with eventId.

API. Run the Actor and get the results in one call:

curl -X POST "https://api.apify.com/v2/acts/ocius-data~economic-calendar/run-sync-get-dataset-items?token=YOUR_API_TOKEN&format=json" \
-H "Content-Type: application/json" \
-d '{"dateFrom": "today", "dateTo": "+7d", "countries": ["US"], "importance": ["high"]}'

Python, with the official apify-client package:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ocius-data/economic-calendar").call(run_input={"dateFrom": "-30d", "dateTo": "today", "importance": ["high"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["datetimeUtc"], row["country"], row["event"], row["actual"], row["previous"], row["unit"])

Webhooks. In the task, open Integrations, add a webhook for ACTOR.RUN.SUCCEEDED and download the dataset from resource.defaultDatasetId.

Google Sheets, Zapier, Make and n8n. Use the Apify integration or app and map the fields of the Calendar view.

MCP and AI agents. Add ocius-data/economic-calendar to the Apify MCP server (https://mcp.apify.com); an agent can ask for {"dateFrom": "today", "dateTo": "+7d", "importance": ["high"]} and receive clean, sourced rows.

Statuses and errors

Statuses are in the RUN_SUMMARY record, never in the dataset.

StatusWhereMeaningWhat to do
OKCountry, sourceThe calendar was read; the events in range are saved.Nothing
NO_RESULTS_CONFIRMEDCountryThe calendars were read and no release matches your filters in the range.Widen the range or add low importance.
PARTIALCountryAt least one source of the country could not be read; its events are missing. The warning names the source.Run again later.
TRUNCATEDCountryMore events matched than maxEvents allowed.Raise maxEvents.
STOPPED_COST_LIMITCountryYour maximum cost per run was reached before all events were saved.Raise the limit.
BLOCKEDSourceThe agency's website refused the request after all retries and proxy changes.Run again later.
ERROR_SOURCESourceThe agency's website failed or changed.Open an issue with the run ID.
Input errorRunThe run fails within seconds with a message that says which field to fix.Correct the input.

A calendar page that is read but yields no events is reported as ERROR_SOURCE (its layout probably changed), never as an empty result.

RUN_SUMMARY also lists, per source, the number of events read and the time taken; the events removed by each filter; the values coverage per statistics API; the reconciliation between rows saved and events charged; and warnings. When values from one statistics API are unavailable, the events are still saved with actual and previous empty, and a warning says so.

Known limits

  • No consensus forecast. Official agencies do not publish a market consensus, so forecast is always null and is not shown in the Calendar view (see the field dictionary). This is the main difference from Investing.com or ForexFactory calendars.
  • Values cover the main indicators only (listed in "Why this economic calendar"). Other releases have the date, time, period, importance and source, without values. U.S. GDP and PCE values are not included yet because the BEA API requires a personal key.
  • Some calendars list only upcoming dates: ECB (upcoming meetings), ABS (current month and the next 6), RBA (current year) and Bank of Canada (current and next year). Past ranges for those sources return fewer events, and a note in RUN_SUMMARY says so.
  • Rescheduled releases appear at their new date once the agency updates its calendar; the eventId stays the same.
  • Release times are those published by the agencies. Central bank decision times marked timeType: standard follow the bank's standing practice.
  • Countries: five economies in this version. Requests for more are welcome in the Issues tab.

FAQ

How is importance decided? By release type, with fixed rules applied to the official release name. High: CPI and inflation flash estimates, the U.S. jobs report and other labour force surveys, GDP, retail sales, personal income and outlays, central bank rate decisions. Medium: producer prices, JOLTS and job vacancies, industrial production and manufacturing, trade and balance of payments, housing and construction, sentiment surveys, central bank minutes. Low: all other economic releases, and regional or state breakdowns.

Why are some releases missing for the UK and Australia? ONS and ABS also publish health, population and crime statistics. Only economic releases are kept.

Can I use the data in my product? Each row carries the licence and the credit line of its source. Public domain, Open Government Licence, CC BY 4.0 and the Statistics Canada Open Licence allow commercial reuse with attribution. The RBA asks that customers be told when data it publishes for free is part of a paid service: its data is available free at rba.gov.au. This is not legal advice.

How fresh are the values? They are read live from the statistics APIs during the run. Right at release time an agency's API can lag its press release by a few minutes; run again and the actual field is filled.

Built to the same standard (status per input in RUN_SUMMARY, actionable errors, pay only for valid data):

  • Google Trends API: search interest over time and by region, useful next to macro releases.

Changelog

  • 0.1.7 (November 2026) Additive: CALENDAR.ics file and INSIGHTS record; change, changeUnit, changePercent, direction, hoursUntilRelease, dayOfWeek, valueIsComputed, valuesPeriod, valuesSeriesUpdatedAt, importanceReason, valuesStatus, dataQuality and warnings on every row; labelled columns in every view and a new Data quality and licence view; forecast removed from the Calendar view only; output links per view and as CSV; rows saved and charged in batches (faster). No field was removed or renamed and the price did not change.
  • 0.1 (November 2026) First version: official calendars of BLS, BEA, Census, Federal Reserve, Eurostat, ECB, ONS, Statistics Canada, Bank of Canada, ABS and RBA; importance and category per release; actual and previous values from the BLS, Eurostat, ONS and Statistics Canada APIs; UTC and local times; licence and attribution per row.

Tutorials and examples

Ready-to-import templates: Google Sheets, Make, Zapier and a webhook receiver.

Rate this Actor

If this Actor saved you time, please consider leaving a rating or a short review on its Apify Store page. It helps other users find it and shows us what to improve. If something does not work as expected, please open an issue first so we can fix it.

Support

Open an issue on the Actor page. Issues are answered within one business day.