# Economic News Aggregator (`amdcode/economic-news-scraper`) Actor

Aggregates international economic and financial news from multiple trusted RSS feeds (BBC, The Guardian, CNBC, MarketWatch, Investing.com) into a single structured dataset.

- **URL**: https://apify.com/amdcode/economic-news-scraper.md
- **Developed by:** [Amos Dorceus](https://apify.com/amdcode) (community)
- **Categories:** News, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.20 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

**Economic News Aggregator** collects the latest **economic and financial news** from multiple trusted international sources — including BBC Business, The Guardian Economics, CNBC Economy, MarketWatch, and Investing.com — and returns them as a single, clean, structured dataset. Instead of visiting five different news sites and copy-pasting headlines, you get one API call that returns normalized, deduplicated articles ready to plug into a dashboard, a newsletter, a trading signal pipeline, or a research workflow. Try it directly from the [Input tab](https://apify.com) with the default sources, or point it at your own list of RSS feeds.

Running on the [Apify platform](https://apify.com) gives you programmatic API access, scheduling (e.g. run every hour to catch breaking news), integrations with Zapier/Make/Slack, automatic proxy handling if you add more sources later, and full run monitoring — without maintaining any scraping infrastructure yourself.

### Why use Economic News Aggregator?

- **Market monitoring** — feed fresh economic headlines into a trading dashboard or algorithm without building and maintaining your own RSS parsers.
- **Newsletters & content curation** — automatically pull the day's top economic stories for a daily digest.
- **Research & sentiment analysis** — collect a normalized stream of financial news text for NLP or sentiment models.
- **Competitive/media monitoring** — track how multiple outlets are covering a specific economic topic (inflation, interest rates, a named company) using the keyword filter.
- **No maintenance overhead** — RSS feeds are structured and stable by design, so this Actor is far less likely to break than a scraper depending on a website's HTML layout.

### How to use Economic News Aggregator

1. Click **Try for free** (or **Start**) on the Actor page.
2. Keep the default list of 5 RSS feeds, or replace it with your own feeds in the **RSS feed URLs** field.
3. Optionally set **Keywords filter** to only keep articles matching specific topics (e.g. `inflation`, `interest rate`, `Federal Reserve`).
4. Optionally set **Max article age (hours)** if you plan to run the Actor on a schedule and only want fresh news each time.
5. Click **Start** and wait for the run to finish.
6. Open the **Dataset** tab to view, filter, and export the results.

### Input

The Actor accepts a JSON input with the following fields (see the **Input** tab for the full form):

| Field | Type | Description |
|---|---|---|
| `feedUrls` | array of strings | RSS feeds to aggregate. Defaults to 5 major economic/financial news feeds. |
| `maxItemsPerFeed` | integer | Maximum number of articles to keep per feed (default: 50). |
| `keywords` | array of strings | Only keep articles whose title or summary contains one of these words. Leave empty to keep everything. |
| `maxAgeHours` | integer | Only keep articles published in the last N hours. `0` disables the filter (default). |

Example input:

```json
{
  "feedUrls": [
    "http://feeds.bbci.co.uk/news/business/rss.xml",
    "https://www.cnbc.com/id/20910258/device/rss/rss.html"
  ],
  "maxItemsPerFeed": 50,
  "keywords": ["inflation", "interest rate"],
  "maxAgeHours": 24
}
````

### Output

Each dataset item is one news article:

```json
{
  "title": "U.S. job creation cools in June with payrolls growth of just 57,000",
  "link": "https://www.cnbc.com/2026/07/02/job-seekers...",
  "source": "Economy",
  "publishedAt": "2026-07-02T18:31:00+00:00",
  "summary": "Job creation slowed sharply in June as the unemployment rate ticked up...",
  "author": null,
  "guid": "https://www.cnbc.com/2026/07/02/job-seekers..."
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

#### Data fields

| Field | Description |
|---|---|
| title | Article headline |
| link | URL to the full article |
| source | Name of the publishing outlet/feed |
| publishedAt | Publication date/time in ISO 8601 (UTC) |
| summary | Short description/excerpt, HTML tags stripped |
| author | Author name, if provided by the feed |
| guid | Unique identifier used for deduplication |

### Pricing / Cost estimation

This Actor performs lightweight HTTP requests to RSS feeds (no browser, no heavy compute), so runs are fast and cheap — typically a few seconds per run for the default 5 feeds. Actual cost depends on the pricing model configured on the Actor page (e.g. pay-per-result or pay-per-usage); check the **Pricing** tab for exact rates. A free tier is available for new Apify accounts to try the Actor before committing.

### Tips or advanced options

- Add or remove feeds in `feedUrls` to focus on the outlets that matter to you — any standard RSS 2.0 feed should work.
- Combine `keywords` with a scheduled run (e.g. hourly) and `maxAgeHours` to build a near real-time alert pipeline on a specific topic.
- If a feed occasionally returns an error (rate limiting, temporary outage, or an anti-bot block), the Actor logs a warning and continues with the remaining feeds — a single broken source never fails the whole run.

### FAQ, disclaimers, and support

This Actor only reads publicly available RSS feeds, which are explicitly published by news outlets for automated syndication. It does not scrape paywalled or login-protected content. Content and formatting are controlled by the source publishers and may change without notice; some publishers may occasionally block automated requests (see run logs for skipped feeds). Always respect the terms of use of any additional feed you add. If you have suggestions, run into an issue, or need a custom version of this Actor (e.g. additional sources, sentiment scoring, or webhook alerts), open an issue in the Actor's **Issues** tab.

# Actor input Schema

## `feedUrls` (type: `array`):

RSS feeds to aggregate economic/financial news from

## `maxItemsPerFeed` (type: `integer`):

Maximum number of articles to keep from each RSS feed

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

Only keep articles whose title or summary contains at least one of these keywords (case-insensitive). Leave empty to keep everything.

## `maxAgeHours` (type: `integer`):

Only keep articles published within the last N hours. 0 means no age filter.

## Actor input object example

```json
{
  "feedUrls": [
    "http://feeds.bbci.co.uk/news/business/rss.xml",
    "https://www.theguardian.com/business/economics/rss",
    "https://www.cnbc.com/id/20910258/device/rss/rss.html",
    "https://feeds.content.dowjones.io/public/rss/mw_topstories",
    "https://www.investing.com/rss/news_25.rss"
  ],
  "maxItemsPerFeed": 50,
  "keywords": [],
  "maxAgeHours": 0
}
```

# 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 = {
    "feedUrls": [
        "http://feeds.bbci.co.uk/news/business/rss.xml",
        "https://www.theguardian.com/business/economics/rss",
        "https://www.cnbc.com/id/20910258/device/rss/rss.html",
        "https://feeds.content.dowjones.io/public/rss/mw_topstories",
        "https://www.investing.com/rss/news_25.rss"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("amdcode/economic-news-scraper").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 = { "feedUrls": [
        "http://feeds.bbci.co.uk/news/business/rss.xml",
        "https://www.theguardian.com/business/economics/rss",
        "https://www.cnbc.com/id/20910258/device/rss/rss.html",
        "https://feeds.content.dowjones.io/public/rss/mw_topstories",
        "https://www.investing.com/rss/news_25.rss",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("amdcode/economic-news-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "feedUrls": [
    "http://feeds.bbci.co.uk/news/business/rss.xml",
    "https://www.theguardian.com/business/economics/rss",
    "https://www.cnbc.com/id/20910258/device/rss/rss.html",
    "https://feeds.content.dowjones.io/public/rss/mw_topstories",
    "https://www.investing.com/rss/news_25.rss"
  ]
}' |
apify call amdcode/economic-news-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=amdcode/economic-news-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Economic News Aggregator",
        "description": "Aggregates international economic and financial news from multiple trusted RSS feeds (BBC, The Guardian, CNBC, MarketWatch, Investing.com) into a single structured dataset.",
        "version": "0.0",
        "x-build-id": "URZ5uXujjO0R7nfDz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/amdcode~economic-news-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-amdcode-economic-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/amdcode~economic-news-scraper/runs": {
            "post": {
                "operationId": "runs-sync-amdcode-economic-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/amdcode~economic-news-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-amdcode-economic-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "feedUrls"
                ],
                "properties": {
                    "feedUrls": {
                        "title": "RSS feed URLs",
                        "type": "array",
                        "description": "RSS feeds to aggregate economic/financial news from",
                        "default": [
                            "http://feeds.bbci.co.uk/news/business/rss.xml",
                            "https://www.theguardian.com/business/economics/rss",
                            "https://www.cnbc.com/id/20910258/device/rss/rss.html",
                            "https://feeds.content.dowjones.io/public/rss/mw_topstories",
                            "https://www.investing.com/rss/news_25.rss"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItemsPerFeed": {
                        "title": "Max items per feed",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of articles to keep from each RSS feed",
                        "default": 50
                    },
                    "keywords": {
                        "title": "Keywords filter",
                        "type": "array",
                        "description": "Only keep articles whose title or summary contains at least one of these keywords (case-insensitive). Leave empty to keep everything.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxAgeHours": {
                        "title": "Max article age (hours)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep articles published within the last N hours. 0 means no age filter.",
                        "default": 0
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
