# Central Bank Policy Monitor - Fed & ECB News (`maydit/central-bank-policy-monitor`) Actor

Monitor official Federal Reserve and ECB news feeds. Export dated headlines, source links and keyword evidence; compare saved observations for new or edited announcements. No API key.

- **URL**: https://apify.com/maydit/central-bank-policy-monitor.md
- **Developed by:** [Brandt May](https://apify.com/maydit) (community)
- **Categories:** News, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 policy announcement observations

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 and ECB announcements, organized — illustrative workflow](https://api.apify.com/v2/key-value-stores/YGxD9JRpduom8Q5Zd/records/central-bank-policy-monitor-360daf7f784b.png?signature=Vt533CezH3KXLd90PTL4)

### Fed and ECB announcements, organized

Build a sourced briefing feed for economic research or policy-news workflows. This Actor returns official Federal Reserve and ECB feed metadata, with dated headlines, links and optional saved comparisons.

[Open this Actor in Console](https://console.apify.com/actors/zkxtdxsybTp69SQe8/input) · [First run](#try-this-actor) · [Results](#result-preview) · [Cost](#usage-and-pricing) · [Full guide](#full-guide)

### Try this Actor

1. **Choose a small scope.** Use the existing **Federal Reserve monetary-policy announcements** example below: one feed, up to ten saved announcements, and twenty source candidates. Keep comparison off for a first snapshot.
2. **Run and review.** Read announcement rows in the dataset and source coverage in the run's key-value-store `SUMMARY`. Keyword and date filters apply within the current feed window.
3. **Use the results.** Export CSV for a headline list or JSON for evidence and comparison fields. Follow the official source link before interpreting an announcement.

**Read this before using the data:** Publication dates are not necessarily meeting or policy-effective dates. A changed feed record is not a policy-change judgment. Older announcements outside the current feed cannot be recovered by widening the date filter.

**Federal Reserve Monetary Policy Announcements** — copy this input into the JSON editor in Console.

```json
{"sources":["fed-monetary"],"maxResults":10,"maxItemsPerSource":20}
```

### Result preview

The dataset view highlights these columns:

- **Announcement ID** · `announcementId`
- **Publisher** · `publisher`
- **Feed** · `sourceId`
- **Headline** · `title`
- **Official announcement** · `url`
- **Published at** · `publishedAt`

Use the original source links and the field definitions below when interpreting the results. CSV works well for flat columns; JSON preserves nested values.

### Usage and pricing

Base result rate on the FREE tier: **$2 per 1,000 policy announcement observations**. The [Pricing tab](https://apify.com/maydit/central-bank-policy-monitor/pricing) shows your plan's result rate and any Actor Start charge. Set a small result limit for the first run; the requested limit is not a guarantee of that many results.

***

### Full guide

Collect recent official Federal Reserve and European Central Bank announcements with publisher dates, canonical links, keyword evidence and optional saved-run comparisons. No login or API key is required.

#### What this covers

- `fed-monetary`: the Federal Reserve monetary-policy RSS feed, including statements and meeting minutes.
- `fed-all`: the Federal Reserve's all-press-releases RSS feed, which can also include regulatory and administrative announcements.
- `ecb-press`: the ECB feed covering press releases, speeches, interviews and press-conference transcripts.

These are the publisher's recent feed windows. A publication date is **not** necessarily the meeting, policy decision or effective date. This Actor collects announcement metadata; it does not calculate interest rates, predict markets, or determine geopolitical risk. It does not fetch full articles.

**Official source information is available free from the linked publishers.** The Actor fee pays for collection, structured output and comparison. ECB data is attributed to the European Central Bank in every record; the original information remains available free on its website. These are independent Mayd-it tools, with no central-bank endorsement.

#### Inputs and default

Omitted or empty `sources` uses `fed-monetary` and `ecb-press`. Default `maxItemsPerSource: 10` inspects up to ten candidates per feed, before keyword/date filtering, and `maxResults: 20` caps confirmed saved rows. The Console prefill uses the same feeds. `maxRunSeconds` defaults to 240, and every HTTP request, redirect and retry shares that budget.

`keywords` are case-insensitive literal substrings matched against the headline and publisher's feed excerpt. At least one term must match. `matchEvidence` states the field and matching excerpt. This is not full-article search or topic inference. `startDate` and `endDate` are inclusive UTC publication dates in `YYYY-MM-DD` format. They cannot recover items that already rolled out of the feed.

##### Federal Reserve monetary-policy announcements

Use the [copyable first-run input](#try-this-actor) above.

##### ECB official press and policy news

```json
{"sources":["ecb-press"],"maxResults":10,"maxItemsPerSource":30}
```

##### Fed and ECB saved comparison

```json
{"sources":["fed-monetary","ecb-press"],"maxResults":10,"maxItemsPerSource":5,"comparePrevious":true,"snapshotName":"fed-ecb-example"}
```

#### Output

Each row represents one official announcement observation, identified by a SHA-256 hash of its canonical source URL. It includes `announcementId`, `publisher`, `sourceId`, `title`, `url`, `feedUrl`, `publishedAt`, `publicationDateRaw`, `excerpt`, `excerptTruncated`, `sourceCategories`, `contentHash`, `matchedTerms`, `matchEvidence`, and `observedAt`.

Excerpts are publisher-supplied feed descriptions, stripped of HTML and limited to 800 characters; they may repeat the title or be empty. Categories are supplied by the publisher and may be empty. The Actor preserves the date supplied by the feed and also normalizes it to UTC. `contentHash` covers the full available feed excerpt, title, date and categories, allowing a change beyond the displayed excerpt to be detected. Matching evidence is drawn from that same feed text.

With comparison enabled, `comparisonStatus` is `new`, `changed` or `unchanged`; otherwise it is `not_requested`. `changedFields` identifies changed snapshot fields (`title`, `publishedAt`, `contentHash`), and `previous` retains the prior headline, timestamp and hash. A changed hash does not identify every changed word or imply a changed policy decision.

#### Saved history

Set `comparePrevious: true`, or `onlyChanges: true` to suppress unchanged observations. **The first run saves matching observations and establishes history only for confirmed saved rows.** An unchanged repeat with `onlyChanges` can legitimately return zero results. Comparisons use the named store `maydit-central-bank-policy-history`, isolated by namespace, sources and filters. Changing the candidate/result cap does not reset that namespace.

The Actor preserves unseen history when feeds roll over or a run is partial; it never reports removals. Invalid history stops comparison rather than overwriting it. History is capped at 20,000 identities per scope. Use a new `snapshotName` to start a separate workflow. Run one writer at a time per scope: a read-back detects some conflicts, but it is not a transactional lock and cannot prevent every simultaneous writer race.

#### Coverage and failures

Inspect the `SUMMARY` key-value record. It records source windows, invalid items, filters, duplicates, confirmed saved counts, unchanged skips, omitted sources, time and spending limits. Filtered or unchanged windows can be legitimately empty. An inaccessible or structurally invalid source produces diagnostics, never a paid error row. If all sources fail with no valid observations, the run fails. Partial success is explicitly marked.

Upstream availability, feed size and freshness are controlled by the publishers. The tool honors robots rules, checks public destination addresses, bounds response/decompression size, and rejects invalid XML/DTD declarations. It does not use proxies to bypass restrictions.

#### Pricing

FREE and BRONZE: **$2 per 1,000 saved announcement observations**, plus **$0.00005 Actor Start** (Apify's start-event memory rules apply). SILVER: $1.60/1,000; GOLD, PLATINUM and DIAMOND: $1.20/1,000. Unchanged observations are charged if saved; use `onlyChanges` to skip them. Failure diagnostics and unchanged skips are not dataset rows and are not charged as results. Spending limits are checked before each dataset write.

#### Official sources

- [Federal Reserve RSS directory](https://www.federalreserve.gov/feeds/feeds.htm)
- [ECB RSS directory](https://www.ecb.europa.eu/home/html/rss.en.html)
- [ECB attribution and copyright conditions](https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html)

Support: bmay@mayd-it.com

### Help with your run

Open the **Issues** tab on this Actor with the run URL, the input field that caused trouble and what you expected to receive. Remove API keys and private information before posting.

[Explore more Mayd-It Actors](https://apify.com/maydit)

### Understand your run

Open **Run report** in the run’s Output tab for saved-record counts, reported source issues and limits, and suggested next steps. Use **CSV export** to take the saved results into a spreadsheet. The existing JSON results and detailed machine-readable summary remain available.

The report reflects this run’s recorded coverage. A successful run or a saved result does not establish that every possible source record was collected.

# Actor input Schema

## `sources` (type: `array`):

Choose fed-monetary, fed-all, or ecb-press. An omitted or empty list uses fed-monetary and ecb-press. Each feed contains a publisher-limited recent window.

## `keywords` (type: `array`):

Optional case-insensitive literal substrings. At least one must occur in the headline or publisher feed excerpt. This does not search full articles.

## `startDate` (type: `string`):

Optional inclusive YYYY-MM-DD publication date. Filtering a recent feed cannot retrieve older items that have rolled out of that feed.

## `endDate` (type: `string`):

Optional inclusive YYYY-MM-DD date in UTC, not the policy effective date.

## `maxResults` (type: `integer`):

Maximum confirmed saved announcement observations across all selected feeds.

## `maxItemsPerSource` (type: `integer`):

Inspect at most this many newest feed items before applying filters. Unchanged skips do not extend this window.

## `comparePrevious` (type: `boolean`):

Compare against this Actor’s named history. First run establishes a baseline from confirmed saved rows.

## `onlyChanges` (type: `boolean`):

Enables comparison. First run saves the selected observations; an unchanged repeat may legitimately return no rows. No deletion or policy-effect inference.

## `snapshotName` (type: `string`):

Use a distinct name for independent workflows. Sources and filters also isolate history. Run only one writer per namespace and filter combination.

## `maxRunSeconds` (type: `integer`):

Own wall-clock budget, capped by the platform timeout. Every source request and retry shares the remaining budget.

## Actor input object example

```json
{
  "sources": [
    "fed-monetary",
    "ecb-press"
  ],
  "keywords": [],
  "maxResults": 20,
  "maxItemsPerSource": 10,
  "comparePrevious": false,
  "onlyChanges": false,
  "snapshotName": "default",
  "maxRunSeconds": 240
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runReport` (type: `string`):

Readable summary of saved records, reported source coverage, limits and next steps. Available when this run saves its SUMMARY.

## `csvExport` (type: `string`):

Download saved dataset records as a CSV file for spreadsheets and other tools.

## `summary` (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 = {
    "sources": [
        "fed-monetary",
        "ecb-press"
    ],
    "keywords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("maydit/central-bank-policy-monitor").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 = {
    "sources": [
        "fed-monetary",
        "ecb-press",
    ],
    "keywords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("maydit/central-bank-policy-monitor").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 '{
  "sources": [
    "fed-monetary",
    "ecb-press"
  ],
  "keywords": []
}' |
apify call maydit/central-bank-policy-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maydit/central-bank-policy-monitor"
        }
    }
}
```

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/zkxtdxsybTp69SQe8/builds/wGMxsBCNDsWFiHOFt/openapi.json
