Returns the scheduled releases of economic data for every country, such as inflation, employment, GDP and central bank decisions. Each release comes with its previous value, the consensus estimate and, once published, the actual value and the change. The estimate versus the actual value is what moves markets: a release far from the consensus tends to cause the largest reaction.

The calendar covers well over a hundred countries, so it is best narrowed down: select a date range and filter by country, currency, impact and/or event. Filtering on events=”PMI” gives the latest purchasing managers’ indices with their consensus, figures that are otherwise only available as licensed data. The “Impact” column rates how much a release usually moves the market (Low, Medium or High). The “Unit” column gives the unit of each release. Releases quoted in percent (for example an inflation or unemployment rate) are converted to decimals, as is the “Change %” column, so an unemployment rate of 4.1% is returned as 0.041. Releases in other units, such as thousands of jobs or index points, keep their values, as do survey levels such as PMIs and confidence indices, which the calendar sometimes labels “%” as well.

Without a start_date and end_date the dates this Economics instance was created with are used, and without those the last 90 days. The endpoint returns at most 90 days per request, so a longer range is retrieved in 90-day windows. This requires a FinancialModelingPrep API key, passed via api_key when initializing.

Also known as: economic calendar, macro calendar, economic releases.

Economic Calendar in Python

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_economic_calendar as shown below.

from financetoolkit import Economics

economics = Economics(api_key="FINANCIAL_MODELING_PREP_KEY", end_date="2025-12-31")

economic_calendar = economics.get_economic_calendar(
    start_date="2026-09-01",
    end_date="2026-09-30",
    countries=["United States", "Euro Area"],
    impact="High",
)

economic_calendar[["Country", "Event", "Previous", "Estimate", "Actual"]].head()

Which returns:

Date Country Event Previous Estimate Actual
2026-09-01 14:00:00 United States ISM Manufacturing PMI (Aug) 55.6 55.2 54.6
2026-09-01 14:00:00 United States JOLTs Job Openings (Jul) 7.182 7.3 7.271
2026-09-03 14:00:00 United States ISM Services PMI (Aug) 54.1 54.3 55.4
2026-09-04 12:30:00 United States Non Farm Payrolls (Aug) 21 56 162
2026-09-04 12:30:00 United States Unemployment Rate (Aug) 0.041 0.041 0.041

Parameters

The function accepts the following parameters:

  • start_date (str, optional): The start date of the releases. Defaults to None, which uses this instance’s start_date when it was given.
  • end_date (str, optional): The end date of the releases. Defaults to None, which uses this instance’s end_date when it was given, otherwise today.
  • countries (str | list[str], optional): The countries to keep, as names (e.g. “United States”, “Germany”, “Euro Area”) or codes (e.g. “US”, “DE”, “EU”). Defaults to None, which keeps every country.
  • currencies (str | list[str], optional): The currencies to keep, e.g. “USD” or [“USD”, “EUR”]. Defaults to None, which keeps every currency.
  • impact (str | list[str], optional): The market impact to keep: “Low”, “Medium” and/or “High”, or “All” for every release. Defaults to None, which keeps every release.
  • events (str | list[str], optional): Parts of event names to keep, matched without regard to case, e.g. “PMI” for every purchasing managers’ index or [“CPI”, “Unemployment”]. Defaults to None, which keeps every event.
Share