# Fed Calendar: FOMC Meetings, Minutes & Statistical Releases (`yadroo/fed-fomc-calendar`) Actor

Scheduled Federal Reserve events from the Fed's own calendar: FOMC meeting days, statement, press conference and minutes, Beige Book, governor speeches and statistical releases (G.17, H.8, G.19, Z.1, H.15). One row per event with Eastern and UTC time and links to statement and minutes.

- **URL**: https://apify.com/yadroo/fed-fomc-calendar.md
- **Developed by:** [Samat Makatov](https://apify.com/yadroo) (community)
- **Categories:** Business, Developer tools, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 calendar entry returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Fed Calendar: FOMC Meetings, Minutes & Statistical Releases

Scheduled Federal Reserve events from the Fed's own calendar: FOMC meeting days, statement, press conference and minutes, Beige Book, governor speeches and statistical releases (G.17, H.8, G.19, Z.1, H.15). One row per event with Eastern and UTC time and links to statement and minutes.

The actor reads the Federal Reserve Board's own two calendars on `www.federalreserve.gov`: the monthly event calendar and the FOMC meeting calendar. You get one dataset row per scheduled date — event type, printed Eastern time, the exact UTC moment, the release code (`H.15`, `G.17`, `Z.1` …), the speaker of a Board appearance, and for every FOMC meeting the links to statement, implementation note, projection materials, press conference and minutes plus the date the minutes appeared. It is a **schedule**: dates, times and documents, not actual, forecast or previous values of any indicator. No API key, no proxy and no browser — three static pages at most per run.

### Use cases

- **Trading bots and agents: "when is the next Fed meeting?"** — `fomcMeetings` with `onlyUpcoming` returns the remaining meeting days of this year and the whole next year, with the projection flag.
- **Rates desks: the full FOMC communication block** — meeting day, press conference and the minutes three weeks later in one table, each with its UTC moment, so a job can be scheduled minutes before the release.
- **Bank and macro analysts: a month of Fed data releases** — every G.17, H.8, H.4.1, G.19 and Z.1 date of a chosen month, with the code and the time printed by the Board.
- **Dashboards: "next release of X"** — `nextEvent` gives exactly one row per selected release or event type with the hours left until it publishes.
- **News desks and event-risk monitoring** — scheduled speeches, discussions and congressional testimony of Board members with speaker, topic, host event and live-stream link.
- **Retrieval and research pipelines** — a whole year of meetings with the URLs of statement, implementation note, projections and minutes, ready to ingest.
- **Change monitoring** — a scheduled task with `onlyNew` emits only calendar entries that were not there on the previous run: a newly announced speech, a rescheduled release, a minutes date that just appeared.

### Input

Nothing is required. Every field below has a working prefill or default, so a run without input returns the next 60 days of FOMC events and statistical releases.

| Field | Type | Default | Allowed values / notes |
|---|---|---|---|
| `mode` | string | `calendar` | `calendar` (one row per scheduled event), `nextEvent` (only the next occurrence of each selected type/release), `fomcMeetings` (one row per FOMC meeting with its documents) |
| `eventTypes` | string\[] | empty = every entry | `statisticalRelease`, `fomcMeeting`, `fomcMinutes`, `fomcPressConference`, `beigeBook`, `speech`, `holiday`, `other` — see [Event types](#event-types). Ignored in `fomcMeetings` |
| `releaseCodes` | string\[] | empty = every release | 16 codes, see [Statistical releases](#statistical-releases). A row without a code (an FOMC day, a speech) is dropped when this filter is set |
| `titleContains` | string | empty | Free text, case-insensitive, e.g. `industrial production`, `minutes`, `bowman`. For a speech or testimony the topic line and the speaker name count as part of the title |
| `dateFrom` | string | today (Eastern) | `YYYY-MM-DD`, inclusive. Month pages exist from January 2025 onwards |
| `dateTo` | string | `dateFrom` + `withinDays` | `YYYY-MM-DD`, inclusive. A window reaching past the last published month is trimmed and the run says which month is missing |
| `withinDays` | integer | 60 | 1–730. Used only when `dateFrom` **and** `dateTo` are empty: today up to N days ahead. Every 30 days of window costs about one extra page fetch |
| `fomcYears` | string\[] | empty = every listed year | `2021` … `2027` (what the page lists today). `fomcMeetings` only |
| `onlyProjectionMeetings` | boolean | `false` | `fomcMeetings` only: keep the quarterly meetings that publish the Summary of Economic Projections |
| `onlyUpcoming` | boolean | `false` | Drop events whose moment has passed. `nextEvent` always applies it |
| `onlyNew` | boolean | `false` | Output only entries that were not seen in the previous run of the same filter set |
| `sortOrder` | string | `soonest` | `soonest` (earliest first) or `latest` |
| `maxItems` | integer | 50 | 1–2000. A calendar month is roughly 60 rows, because H.15 and CP publish on every business day |
| `fields` | string\[] | all fields | Keep only these output fields, in this order, e.g. `["title", "eventDate", "eventDateTimeUtc"]` |

Filters combine with AND and only ever narrow a run. An unknown event type or release code ends the run with the list of valid values instead of quietly returning everything; an obvious typo (`speeches`, `h15`, `calender`) is corrected and the correction is logged and written to `SUMMARY`.

### Reference

#### Event types

| Value | What it looks like on the calendar |
|---|---|
| `statisticalRelease` | `H.15 - Selected Interest Rates`, `G.17 - Industrial Production and Capacity Utilization`, the two loan-officer surveys — the **Statistical Releases** section |
| `fomcMeeting` | `FOMC Meeting`, with the note "Two-day meeting, October 27 - 28" |
| `fomcMinutes` | `FOMC Minutes`, with the note naming the meeting the minutes belong to |
| `fomcPressConference` | `FOMC Press Conference`, usually with the Board's live-broadcast link |
| `beigeBook` | `Beige Book`, eight times a year, two weeks before a meeting |
| `speech` | `Speech - Governor …`, `Discussion - Vice Chair for Supervision …` and the **Testimony** section (a congressional hearing is the same kind of event risk) |
| `holiday` | `Holiday - Columbus Day` with the note about which day the daily and weekly releases move to |
| `other` | Board meetings, conferences, announcements — anything else the calendar prints |

The printed section heading is always kept in `section`, so you can tell a speech from a testimony.

#### Statistical releases

| Code | Release | Cadence |
|---|---|---|
| `CP` | Commercial Paper | every business day |
| `H.15` | Selected Interest Rates | every business day |
| `H.4.1` | Factors Affecting Reserve Balances | weekly, Thursday |
| `H.8` | Assets and Liabilities of Commercial Banks in the U.S. | weekly, Friday |
| `H.10` | Foreign Exchange Rates (weekly) | weekly, Monday |
| `G.5` | Foreign Exchange Rates (monthly) | monthly |
| `G.17` | Industrial Production and Capacity Utilization | monthly |
| `G.19` | Consumer Credit | monthly |
| `G.20` | Finance Companies | monthly, publication date approximate |
| `H.6` | Money Stock Measures | monthly |
| `Z.1` | Financial Accounts of the United States | quarterly |
| `SLOOS` | Senior Loan Officer Opinion Survey on Bank Lending Practices | quarterly |
| `SCOOS` | Senior Credit Officer Opinion Survey on Dealer Financing Terms | quarterly |
| `E.2` | Survey of Terms of Business Lending | quarterly, **no entry on this calendar** |
| `CHGDEL` | Charge-Off and Delinquency Rates | quarterly, **no entry on this calendar** |
| `DSR` | Household Debt Service and Financial Obligations Ratios | quarterly, **no entry on this calendar** |

The three marked codes are real Board releases that the event calendar does not schedule; asking for them returns no rows and the run log says so. A release the Board prints with a code we do not list still comes back in an unfiltered run, with the printed code in `releaseCode`.

#### FOMC years and meeting flags

The meeting calendar currently lists **2021 to 2027** (57 meetings). The Board adds the next year in summer and moves years older than about five to its historical pages, which this actor does not read. `isProjectionMeeting` is the Board's asterisk — the meeting publishes the Summary of Economic Projections ("dot plot"). `isUnscheduled` marks an entry such as `August 22 (notation vote)`, a decision taken between scheduled meetings. Document fields stay `null` until the Board publishes them: the statement on the last meeting day, the minutes three weeks later.

### Examples

**Next FOMC meeting dates for 2026 and 2027**

```json
{ "mode": "fomcMeetings", "fomcYears": ["2026", "2027"], "onlyUpcoming": true, "maxItems": 20 }
```

**The whole FOMC block for the next four months (meeting, press conference, minutes)**

```json
{ "mode": "calendar", "eventTypes": ["fomcMeeting", "fomcMinutes", "fomcPressConference"], "withinDays": 120, "maxItems": 20 }
```

**One month of banking and activity data**

```json
{ "mode": "calendar", "eventTypes": ["statisticalRelease"], "releaseCodes": ["G.17", "H.8", "G.19", "Z.1", "H.4.1"], "dateFrom": "2026-10-01", "dateTo": "2026-10-31", "maxItems": 40 }
```

**Next publication of each indicator, one row each**

```json
{ "mode": "nextEvent", "eventTypes": ["statisticalRelease"], "releaseCodes": ["G.17", "G.19", "H.8", "H.6", "Z.1", "H.15"], "maxItems": 10 }
```

**Scheduled Board appearances as event risk**

```json
{ "mode": "calendar", "eventTypes": ["speech"], "dateFrom": "2026-09-01", "dateTo": "2026-11-30", "maxItems": 30 }
```

A fixed window is the safer input here: the Board announces appearances only days ahead, so a forward window such as `withinDays: 45` can legitimately come back thin or empty.

**Document links of a full year of meetings, trimmed to what a pipeline needs**

```json
{ "mode": "fomcMeetings", "fomcYears": ["2026"], "fields": ["meetingStartDate", "statementUrl", "minutesUrl", "minutesReleasedOn"], "maxItems": 12 }
```

### Output

A real row from the cloud verification of this build (run `frepli0jz8iblXdyL`, `mode: "calendar"`, one month of statistical releases):

```json
{
  "eventType": "statisticalRelease",
  "section": "Statistical Releases",
  "title": "H.4.1 - Factors Affecting Reserve Balances",
  "topic": null,
  "eventDate": "2026-10-01",
  "eventTimeEt": "16:30",
  "eventDateTimeUtc": "2026-10-01T20:30:00.000Z",
  "dayOfWeek": "Thursday",
  "isUpcoming": true,
  "hoursUntilEvent": 93.5,
  "releaseCode": "H.4.1",
  "releaseName": "Factors Affecting Reserve Balances",
  "speaker": null,
  "speakerRole": null,
  "location": null,
  "note": null,
  "detailUrl": null,
  "liveUrl": null,
  "agency": "Federal Reserve Board",
  "url": "https://www.federalreserve.gov/newsevents/2026-october.htm",
  "fetchedAt": "2026-09-27T23:01:14.959Z"
}
```

| Field | Type | Meaning / when it is empty |
|---|---|---|
| `eventType` | string | One of the eight types above |
| `section` | string | Section heading as printed (`Statistical Releases`, `Speeches`, `Testimony`, `Other` …) |
| `title` | string | The entry's first printed line |
| `topic` | string | Subject of a speech or testimony; empty for releases and FOMC days |
| `eventDate` | string | Scheduled date, `YYYY-MM-DD`, the Board's own (Eastern) calendar day |
| `eventTimeEt` | string | Printed Eastern clock time as 24-hour `HH:MM`; empty for a holiday or an approximate publication date |
| `eventDateTimeUtc` | string | The same moment in UTC, ISO 8601; empty when no time is printed |
| `dayOfWeek` | string | Weekday of `eventDate` |
| `isUpcoming` | boolean | The moment is still ahead at fetch time (an entry without a time counts as ahead until the end of its day) |
| `hoursUntilEvent` | number | Hours from the fetch moment; empty once the event has passed |
| `releaseCode` | string | `H.15`, `G.17`, `SLOOS` …; empty for everything that is not a statistical release |
| `releaseName` | string | Release name without the code |
| `speaker` | string | Board member's name, speeches and testimony only |
| `speakerRole` | string | `Chair`, `Vice Chair for Supervision`, `Governor`, a division director's title |
| `location` | string | Host event as printed ("At the Sibos 2026 Conference, Miami Beach, Fla.") |
| `note` | string | The Board's own note: which meeting the minutes belong to, where a holiday moves the daily releases, that a publication date is approximate |
| `detailUrl` | string | First link the entry prints — a Board page or the event host's stream page. Stored as text; the actor fetches nothing outside `www.federalreserve.gov` |
| `liveUrl` | string | The "Watch Live" link, when the Board publishes one |
| `agency` | string | Always `Federal Reserve Board` |
| `url` | string | The calendar page the row was read from |
| `fetchedAt` | string | Fetch time, ISO 8601 UTC |

A speech row, from the verification run with no filters at all (run `myb6HkZhYzeFE3Bvq`), fills the fields a release row leaves empty:

```json
{
  "eventType": "speech",
  "section": "Speeches",
  "title": "Discussion - Vice Chair for Supervision Michelle W. Bowman",
  "topic": "Recent Developments in Bank Supervision and Regulation",
  "eventDate": "2026-09-28",
  "eventTimeEt": "08:15",
  "eventDateTimeUtc": "2026-09-28T12:15:00.000Z",
  "dayOfWeek": "Monday",
  "isUpcoming": true,
  "hoursUntilEvent": 13.3,
  "releaseCode": null,
  "releaseName": null,
  "speaker": "Michelle W. Bowman",
  "speakerRole": "Vice Chair for Supervision",
  "location": "At the Military Banking Summit 2026 (Virtual)",
  "note": null,
  "detailUrl": "https://teams.microsoft.com/meet/212992571985590?p=yY3nvqkkrbQw6RMUL6",
  "liveUrl": "https://teams.microsoft.com/meet/212992571985590?p=yY3nvqkkrbQw6RMUL6",
  "agency": "Federal Reserve Board",
  "url": "https://www.federalreserve.gov/newsevents/2026-september.htm",
  "fetchedAt": "2026-09-27T22:58:33.510Z"
}
```

In `fomcMeetings` mode a row is one meeting (real row from run `s3DiCZIAyubGhQASC`):

```json
{
  "eventType": "fomcMeeting",
  "title": "FOMC Meeting, October 27-28, 2026",
  "meetingStartDate": "2026-10-27",
  "meetingEndDate": "2026-10-28",
  "meetingYear": 2026,
  "eventDate": "2026-10-27",
  "isUpcoming": true,
  "isProjectionMeeting": false,
  "hasPressConference": false,
  "isUnscheduled": false,
  "statementUrl": null,
  "statementPdfUrl": null,
  "implementationNoteUrl": null,
  "pressConferenceUrl": null,
  "projectionsUrl": null,
  "projectionsPdfUrl": null,
  "minutesUrl": null,
  "minutesPdfUrl": null,
  "minutesReleasedOn": null,
  "agency": "Federal Reserve Board",
  "url": "https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm",
  "fetchedAt": "2026-09-27T23:01:14.017Z"
}
```

| Field | Type | Meaning / when it is empty |
|---|---|---|
| `meetingStartDate`, `meetingEndDate` | string | First and last meeting day; equal for a one-day or notation-vote meeting, and they can span two months (April 30 – May 1) |
| `meetingYear` | number | Year block the meeting is listed under |
| `eventDate` | string | Same as `meetingStartDate`, so rows of all three modes share a date field |
| `isUpcoming` | boolean | The meeting has not finished yet |
| `isProjectionMeeting` | boolean | The Board's asterisk: Summary of Economic Projections is published |
| `hasPressConference` | boolean | True once the Board has published the press-conference page for the meeting |
| `isUnscheduled` | boolean | A notation vote or other unscheduled decision |
| `statementUrl`, `statementPdfUrl` | string | Policy statement, HTML and PDF; published on the last meeting day |
| `implementationNoteUrl` | string | Implementation note that accompanies the statement |
| `pressConferenceUrl` | string | Press-conference page (the Board uses two spellings of the URL; both are handled) |
| `projectionsUrl`, `projectionsPdfUrl` | string | Projection materials, projection meetings only |
| `minutesUrl`, `minutesPdfUrl` | string | Minutes, about three weeks after the meeting |
| `minutesReleasedOn` | string | Date the minutes were released, `YYYY-MM-DD` |
| `agency`, `url`, `fetchedAt` | string | Source page and fetch time |

Every run also writes a `SUMMARY` record to its key-value store: the filters, which month pages were read, which months the Board has not published, how many entries were parsed and how many rows were written, plus any input correction.

Dataset views: **Fed calendar** (date, time, type, event, release, speaker, links), **Upcoming events** (UTC moment, hours left, weekday), **FOMC meetings** (meeting days, projection and press-conference flags, document links).

### Use it from code / agents

```bash
curl -X POST "https://api.apify.com/v2/acts/yadroo~fed-fomc-calendar/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"fomcMeetings","fomcYears":["2026","2027"],"onlyUpcoming":true,"maxItems":20}'
```

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yadroo/fed-fomc-calendar').call({
    mode: 'nextEvent',
    eventTypes: ['statisticalRelease'],
    releaseCodes: ['G.17', 'H.8'],
    fields: ['releaseCode', 'eventDate', 'eventDateTimeUtc', 'hoursUntilEvent'],
    maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

```python
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yadroo/fed-fomc-calendar").call(run_input={
    "mode": "calendar", "withinDays": 7, "onlyUpcoming": True, "maxItems": 25,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

MCP: add `https://mcp.apify.com` to Claude / Cursor / any MCP client and call the `yadroo/fed-fomc-calendar` tool with the same JSON input.

For monitoring, schedule a task with `onlyNew: true` and the filters you care about; the first run returns everything it finds, later runs return only entries that are new or have moved. A run that finds no change writes **no rows and still succeeds** — that is the expected result for a change feed, and it is why `onlyNew` belongs in a scheduled task rather than in a one-off query. The state is kept per filter set, so two tasks with different filters never consume each other's changes. Use `fields` to keep rows small — the examples above trim a row to four keys.

### Pricing

Pay per event: **$0.001 when a run starts, plus $0.002 per dataset row**. Every run is charged the start event, also a run that returns no rows. Row prices are lower on paid Apify plans (Bronze $0.0018, Silver $0.0016, Gold and above $0.0014); the start event stays $0.001.

Worked examples at the free-plan price:

- Ten upcoming FOMC meetings (`fomcMeetings`, `onlyUpcoming`): $0.001 + 10 × $0.002 = **$0.021**.
- A week of all Fed events, 25 rows: $0.001 + 25 × $0.002 = **$0.051**.
- The default run, 50 rows of the next 60 days: $0.001 + 50 × $0.002 = **$0.101**.

Runs are short and cheap in compute: at 256 MB and two to four static page fetches, the twenty-eight verification runs behind this README finished in 3–13 seconds each.

### Limits & FAQ

- **Coverage of the event calendar.** The Board publishes month pages from January 2025 to the end of the current year (December 2026 today). A window that reaches further gets the months that exist, and the run log and `SUMMARY` name the missing month; a window entirely outside the published range ends with a message naming the covered range. Older months stay reachable through the Board's calendar archive, which this actor does not read.
- **Coverage of the meeting calendar.** 2021–2027 today. Meetings beyond the last listed year do not exist yet: the Board announces the next year in summer, and dates stay tentative until confirmed at the preceding meeting.
- **Times.** Exactly as printed, in US Eastern time, converted to UTC with the offset in force on that date, so the daylight-saving switch in March and November is handled. Entries the Board prints without a time (holidays, the approximate G.20 date) keep `eventTimeEt` and `eventDateTimeUtc` empty rather than guessing a time.
- **Repeating entries.** The calendar prints one row per release with a list of day numbers ("1, 2, 5, 6, …"). Each of those days becomes its own dataset row, which is why one month of H.15 is 21 rows.
- **Holidays.** Returned as their own rows with the Board's note about which day the daily and weekly releases move to; the release rows themselves already show the moved dates.
- **Approximate dates.** G.20 is published on an approximate date; the note says so and is kept in `note`.
- **No indicator values.** This is a schedule. It does not carry actual, forecast or previous numbers, and it does not carry FOMC rate probabilities.
- **What is not fetched.** Only `www.federalreserve.gov` is requested. Live-stream links that point elsewhere (a Federal Reserve Bank, a university, a video platform) are stored as strings in `detailUrl`/`liveUrl` and never opened.
- **Speeches are announced late.** The Board usually posts an appearance a few days to two weeks ahead, so a speech-only window can be thin, and a future month may have no speeches listed at all yet.
- **Rescheduling.** The Board does move dates. `onlyNew` treats a changed moment as a new entry, which makes a scheduled task a change feed.
- **Empty results.** A filter that matches nothing returns zero rows with a log line saying how many entries were read and what to widen — an invalid filter value fails instead, with the list of valid values.
- **Politeness.** Two to four page requests per run, retries with backoff on throttling, a normal User-Agent. Board content is in the public domain.

***

Made by **Yadroo**. Sibling actors: [bls-release-calendar](https://apify.com/yadroo/bls-release-calendar), [ons-release-calendar](https://apify.com/yadroo/ons-release-calendar), [statcan-release-calendar](https://apify.com/yadroo/statcan-release-calendar), [us-treasury-yields](https://apify.com/yadroo/us-treasury-yields), [sec-edgar-filings](https://apify.com/yadroo/sec-edgar-filings).

# Actor input Schema

## `mode` (type: `string`):

`calendar` reads the Board's monthly event calendar and returns one row per scheduled event (statistical release, FOMC day, Beige Book, speech, holiday). `nextEvent` returns only the next occurrence of each selected event type or release code — the answer to "when is the next FOMC meeting / next G.17". `fomcMeetings` reads the FOMC meeting calendar instead and returns one row per meeting with the document links; it ignores the date window and uses the year filter.

## `eventTypes` (type: `array`):

Keep only these kinds of events. Empty = every entry on the calendar. Used by `calendar` and `nextEvent`; ignored by `fomcMeetings`.

## `releaseCodes` (type: `array`):

Keep only these statistical releases, by the code the Board prints on the calendar. Empty = every release. Entries whose code is not in this list still come back in an unfiltered run with the printed code in `releaseCode`; use `titleContains` to pick those. See README → Reference dictionaries.

## `titleContains` (type: `string`):

Keep only events whose printed title contains this text, case-insensitive, e.g. "industrial production", "minutes", "Beige Book", or a Board member's surname. Combined with the other filters it narrows, never widens: a row must match all of them.

## `dateFrom` (type: `string`):

Earliest event date, YYYY-MM-DD. Set `dateFrom` and `dateTo` to read a fixed window (also in the past); leave both empty to use `withinDays` from today. The Board's month pages currently start at January 2025.

## `dateTo` (type: `string`):

Latest event date, YYYY-MM-DD. The Board publishes month pages to the end of the current calendar year and adds the next year during it; a window that reaches beyond the last published month is trimmed to what exists and the run says so. A window entirely outside the published range ends with a clear message naming the covered range.

## `withinDays` (type: `integer`):

Used only when `dateFrom` and `dateTo` are both empty: events scheduled from today up to N days ahead. 7 for a weekly briefing, 90 for a quarter. Each 30 days of window costs one extra page fetch.

## `fomcYears` (type: `array`):

Years to read in `fomcMeetings` mode. Empty = every year the FOMC calendar page lists (2021–2027 today; the Board adds the next year in summer and moves older years to its historical pages, which this actor does not read). A year that is not on the page ends the run with a message naming the years that are.

## `onlyProjectionMeetings` (type: `boolean`):

`fomcMeetings` mode: keep only meetings marked as associated with a Summary of Economic Projections — the quarterly meetings that publish the projection materials and the rate-path chart.

## `onlyUpcoming` (type: `boolean`):

Drop events whose scheduled moment has already passed, also inside an explicit date range. `nextEvent` always applies this.

## `onlyNew` (type: `boolean`):

Remember event type, title and scheduled UTC moment in this actor's key-value store and output only entries that were not there on the previous run. A rescheduled or newly announced event counts as new, so a scheduled task emits exactly the calendar changes. The first run outputs everything it finds; a run that finds no change returns no rows, which is the expected result for a monitoring task.

## `sortOrder` (type: `string`):

Order rows by the scheduled moment.

## `maxItems` (type: `integer`):

Stop after this many rows. A calendar month is roughly 60 rows, because the daily releases (H.15, CP) appear on every business day.

## `fields` (type: `array`):

Keep only these output fields, in this order, e.g. \["title", "eventDate", "eventDateTimeUtc"]. Empty = all fields of the mode.

## Actor input object example

```json
{
  "mode": "calendar",
  "eventTypes": [
    "fomcMeeting",
    "fomcMinutes",
    "fomcPressConference",
    "statisticalRelease"
  ],
  "withinDays": 60,
  "fomcYears": [
    "2026"
  ],
  "onlyProjectionMeetings": false,
  "onlyUpcoming": false,
  "onlyNew": false,
  "sortOrder": "soonest",
  "maxItems": 50
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "eventTypes": [
        "fomcMeeting",
        "fomcMinutes",
        "fomcPressConference",
        "statisticalRelease"
    ],
    "fomcYears": [
        "2026"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("yadroo/fed-fomc-calendar").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "eventTypes": [
        "fomcMeeting",
        "fomcMinutes",
        "fomcPressConference",
        "statisticalRelease",
    ],
    "fomcYears": ["2026"],
}

# Run the Actor and wait for it to finish
run = client.actor("yadroo/fed-fomc-calendar").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "eventTypes": [
    "fomcMeeting",
    "fomcMinutes",
    "fomcPressConference",
    "statisticalRelease"
  ],
  "fomcYears": [
    "2026"
  ]
}' |
apify call yadroo/fed-fomc-calendar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yadroo/fed-fomc-calendar"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NJtbUqYbHwHp6zupB/builds/9F6oO1ChZl17kT1dX/openapi.json
