RSS Feed Reader (with MCP) avatar

RSS Feed Reader (with MCP)

Pricing

from $0.03 / 1,000 feed items

Go to Apify Store
RSS Feed Reader (with MCP)

RSS Feed Reader (with MCP)

Read RSS and Atom feeds, normalize items, and send summaries or records to MCP connectors for monitoring, alerts, AI workflows, dashboards, and integrations.

Pricing

from $0.03 / 1,000 feed items

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Read RSS and Atom feeds on Apify and export clean, normalized dataset rows for monitoring, alerts, AI/RAG pipelines, MCP connectors, newsletters, dashboards, and no-code automations.

What does RSS Feed Reader do?

RSS Feed Reader fetches public RSS, Atom, and RDF feed URLs and converts feed entries into a structured Apify dataset.

It is designed for recurring jobs where you need reliable feed imports without maintaining your own parser, scheduler, exports, or integrations.

Who is it for?

  • 📰 News monitoring teams tracking publishers, blogs, or government feeds.
  • 📈 SEO and content marketers watching competitor content and topic updates.
  • 🤖 AI workflow builders feeding fresh articles into RAG, summarization, or alerting flows.
  • 🧰 Automation builders connecting RSS feeds to Make, Zapier, Slack, Airtable, or databases.
  • 🧑‍💼 Agencies and analysts collecting repeatable content snapshots for clients.

Why use this actor?

  • Fetch many feeds in one run.
  • Normalize RSS and Atom entries into one dataset shape.
  • Keep going when one feed fails.
  • Add stable dedupe keys for scheduled monitoring.
  • Export results through Apify datasets, API, webhooks, MCP connectors, and integrations.

What data can it extract?

FieldDescription
feedUrlFeed URL that produced the item
feedTitleFeed title when available
feedDescriptionFeed description or subtitle
feedLinkWebsite link advertised by the feed
feedLanguageFeed language when present
feedLastBuildDateFeed-level update date when present
feedTypeRSS, Atom, or RDF parser mode
titleFeed item title
descriptionItem summary or description
contentFull content field when the feed provides it
linkItem URL
guidItem GUID or ID
pubDateOriginal publication date text
isoDateNormalized ISO publication date
authorAuthor or creator when available
categoriesItem categories or tags
imageUrlFirst media/enclosure image URL
mediaUrlsMedia and enclosure URLs
dedupeKeyStable key for de-duplication
fetchedAtTimestamp when the actor fetched the feed
errorError message for failed feed URLs when enabled

How much does it cost to read RSS feeds?

This actor uses pay-per-event pricing.

  • A small start event is charged once per run.
  • A result event is charged for each normalized feed item or error row saved.
  • Exact pricing is visible on the Apify Store pricing tab before you run the actor.

RSS parsing is lightweight, so typical runs are inexpensive. Keep maxItemsPerFeed low for test runs, then increase it for production schedules.

Quick start

  1. Open the actor on Apify.
  2. Add one or more RSS or Atom feed URLs.
  3. Choose the maximum number of items per feed.
  4. Run the actor.
  5. Export the dataset as JSON, CSV, Excel, RSS, or through the Apify API.

Example input

{
"feedUrls": [
{ "url": "https://feeds.bbci.co.uk/news/rss.xml" },
{ "url": "https://www.nasa.gov/news-release/feed/" }
],
"maxItemsPerFeed": 20,
"includeContent": true,
"includeFeedMetadata": true,
"dedupeBy": "guid",
"requestTimeoutSecs": 20,
"emitErrorItems": true,
"mcpMode": "off",
"maxMcpRecords": 20
}

Input options

feedUrls

Add one or more public RSS, Atom, or RDF feed URLs.

maxItemsPerFeed

Controls how many entries are saved from each feed. Use a low number for first runs and larger values for production imports.

includeContent

When enabled, the actor includes full content fields such as content:encoded or Atom content if available.

includeFeedMetadata

When enabled, each row includes feed-level title, description, website link, language, and update date when present.

dedupeBy

Choose how duplicate entries are detected across all feeds in the same run:

  • guid — recommended for most feeds.
  • link — useful when feeds have unreliable IDs.
  • titleAndDate — useful for feeds that omit both GUID and stable links.

requestTimeoutSecs

Sets the timeout for each feed URL. Slow or unreachable feeds can be recorded as error rows while other feeds continue.

emitErrorItems

When enabled, failed feed URLs produce dataset rows with the error field populated. This is useful for scheduled alerts.

mcpConnectors

Optional Apify MCP connector resources that can receive a run digest after the dataset is saved. Use this when you want the actor to send feed-monitoring results directly to a connected destination such as Slack, Notion, Supabase, or another MCP-compatible tool.

mcpMode

Controls MCP delivery. Keep off for dataset-only runs, choose sendSummary to send feed counts and run context, or choose sendRecords to include capped sample feed items.

mcpInstruction

A short natural-language instruction for the selected connector, such as Send a concise RSS digest to #news-monitoring. Do not paste API keys or third-party credentials here.

maxMcpRecords

Limits how many saved feed rows are included in MCP delivery when mcpMode is sendRecords. The full dataset remains available even when the MCP digest is capped.

Example output

{
"feedUrl": "https://feeds.bbci.co.uk/news/rss.xml",
"feedType": "rss",
"feedTitle": "BBC News",
"title": "Example headline",
"description": "Short item summary",
"content": "Longer content when provided by the feed",
"link": "https://www.bbc.com/news/example",
"guid": "https://www.bbc.com/news/example",
"pubDate": "Fri, 26 Jun 2026 10:00:00 GMT",
"isoDate": "2026-06-26T10:00:00.000Z",
"author": null,
"categories": ["World"],
"imageUrl": "https://example.com/image.jpg",
"mediaUrls": ["https://example.com/image.jpg"],
"fetchedAt": "2026-06-26T13:00:00.000Z",
"dedupeKey": "guid:https://www.bbc.com/news/example"
}

Tips for best results

  • ✅ Use direct feed URLs, not regular website homepages.
  • ✅ Start with 10–20 items per feed for testing.
  • ✅ Use scheduled runs for monitoring workflows.
  • ✅ Keep emitErrorItems enabled if downstream automations need to know when a feed fails.
  • ✅ Use dedupeKey in your database or automation tool to avoid duplicate alerts.

Scheduling and monitoring

RSS Feed Reader works well with Apify schedules.

For example:

  • Run every 15 minutes for breaking news feeds.
  • Run hourly for blogs and product changelogs.
  • Run daily for research feeds and newsletters.

Use the dataset, webhook, or API output to trigger downstream actions.

Integrations

You can connect results to:

  • Slack alerts for new headlines.
  • MCP connectors for Slack, Notion, Supabase, or custom tools.
  • Airtable or Google Sheets content trackers.
  • Make or Zapier workflows.
  • Vector database ingestion jobs.
  • Newsletter drafting pipelines.
  • Internal monitoring dashboards.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/rss-feed-reader').call({
feedUrls: [{ url: 'https://feeds.bbci.co.uk/news/rss.xml' }],
maxItemsPerFeed: 10
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/rss-feed-reader').call(run_input={
'feedUrls': [{'url': 'https://feeds.bbci.co.uk/news/rss.xml'}],
'maxItemsPerFeed': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~rss-feed-reader/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"feedUrls":[{"url":"https://feeds.bbci.co.uk/news/rss.xml"}],"maxItemsPerFeed":10}'

MCP usage

RSS Feed Reader (with MCP) supports two MCP workflows:

  1. Run the actor from an MCP client such as Claude Desktop or Claude Code through Apify MCP.
  2. Deliver results to MCP connectors after the feed dataset is saved by setting mcpConnectors, mcpMode, mcpInstruction, and maxMcpRecords in the actor input.

MCP delivery is safe-by-default: it is off unless you select connectors, it never asks for third-party credentials in the input, and it only calls send/post/write/create/insert/append/log-style tools discovered on the connector. Delivery status is stored in the MCP_DELIVERY_STATUS key-value store record.

MCP server URL:

https://mcp.apify.com/?tools=fetch_cat/rss-feed-reader

Claude Code setup:

$claude mcp add apify-rss-feed-reader https://mcp.apify.com/?tools=fetch_cat/rss-feed-reader

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify-rss-feed-reader": {
"url": "https://mcp.apify.com/?tools=fetch_cat/rss-feed-reader"
}
}
}

Example prompts:

  • "Read these RSS feeds and summarize the newest five posts."
  • "Monitor this changelog feed and tell me what changed since yesterday."
  • "Fetch these news feeds and prepare a table of titles, URLs, and publish dates."

Example MCP connector input:

{
"feedUrls": [{ "url": "https://feeds.bbci.co.uk/news/rss.xml" }],
"maxItemsPerFeed": 10,
"mcpConnectors": ["your-connector-resource-id"],
"mcpMode": "sendRecords",
"mcpInstruction": "Send a concise RSS digest to #news-monitoring.",
"maxMcpRecords": 10
}

Common workflows

News alerting

Run the actor on a schedule, filter rows by keyword, and send matches to Slack or email.

AI/RAG ingestion

Fetch feed entries, deduplicate by dedupeKey, then send new links and content to your embedding pipeline.

Competitor content tracking

Track competitor blog feeds and export the dataset to a spreadsheet or CRM.

Newsletter research

Collect article titles, summaries, links, and publication dates for editorial review.

FAQ

Can this actor read both RSS and Atom feeds?

Yes. Add public RSS, Atom, or RDF feed URLs in the input and the actor normalizes entries into the same dataset shape.

Does it crawl the full article pages?

No. It reads the feed entries only. Some publishers include full content in the feed; others include summaries and links.

Troubleshooting

Why did a feed return an error row?

The feed URL may be unreachable, blocked, malformed, or not a real RSS/Atom feed. Open the feed URL in a browser and check whether it returns XML.

Why are some fields empty?

RSS and Atom publishers choose which fields to include. Some feeds omit authors, categories, images, or full content.

Why do I see duplicates across scheduled runs?

Scheduled runs create new datasets. Store dedupeKey in your downstream system and skip rows you have already processed.

Legality and responsible use

This actor is intended for public RSS and Atom feed URLs. Make sure your use complies with each publisher's terms, copyright rules, and applicable laws. Do not use the actor to access private, paid, or unauthorized feeds.

You may also find these Apify actors useful:

  • Google News Scraper: https://apify.com/fetch_cat/google-news-scraper
  • Google Trending Searches Scraper: https://apify.com/fetch_cat/google-trending-searches-scraper
  • Substack Posts Scraper: https://apify.com/fetch_cat/substack-posts-scraper

Limits

  • The actor only reads public feed URLs supplied in the input.
  • It does not crawl full websites behind each item link.
  • It does not bypass logins, paywalls, or private feeds.
  • Very large feeds should be capped with maxItemsPerFeed.

Changelog

0.1

Initial version with RSS, Atom, RDF parsing, multi-feed input, feed metadata, media URL extraction, dedupe keys, and optional error rows.