RSS Feed Monitor & Reader with Daily Digest avatar

RSS Feed Monitor & Reader with Daily Digest

Pricing

from $0.35 / 1,000 feed items

Go to Apify Store
RSS Feed Monitor & Reader with Daily Digest

RSS Feed Monitor & Reader with Daily Digest

RSS feed monitor and reader: paste RSS, Atom or JSON feeds, or a website URL and it finds the feed. Get one dataset of items with title, link, date, summary, image and podcast enclosures; only new items per scheduled run, keyword filters and a ready-to-send Markdown and HTML digest.

Pricing

from $0.35 / 1,000 feed items

Rating

0.0

(0)

Developer

Brisa Works

Brisa Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

This RSS feed monitor and feed reader turns RSS, Atom and JSON feeds, or plain website URLs, into one clean, deduplicated dataset. Paste a blog's address and it finds the feed for you. Schedule it and each run returns only the items that are new since the last run, with title, link, date, summary, image and podcast enclosures, filtered by your keywords, plus an optional digest (Markdown and a ready-to-send HTML page) and an AI overview written by Claude with your own key.

Contents: What it does · Use cases · How to use · Input · Output · Compared with other feed readers · AI agents (MCP) · API · Scheduling and integrations · Example tasks · Pricing · Limits · FAQ

How RSS Feed Monitor & Reader works: feeds or website URLs in, feed found and fetched with ETag, only new items kept, dataset and digest out

What it does

  • Reads RSS 2.0, RSS 1.0 (RDF), Atom and JSON Feed, mixed in one run.
  • Website URL to feed: paste https://github.blog/ instead of the feed URL. The Actor reads the page's <link rel="alternate"> tags and uses the feed the site advertises (comment feeds last). In new-items mode it remembers the feed it found, so later runs go straight to it.
  • Returns title, link, publication date, summary, categories, the item's image (imageUrl) and its enclosures (podcast audio, video or files, with type and size in bytes), and optionally the full text.
  • New-items mode: remembers what each feed returned and outputs only unseen items. It sends ETag and Last-Modified headers, so a feed that hasn't changed answers "304 Not Modified" and costs nothing.
  • Keyword filter (any match in title, summary or categories) and a "published within N hours" filter.
  • Digest: saves DIGEST (Markdown) and DIGEST_HTML to the run's key-value store, grouped by feed. With an Anthropic key it starts with a short overview and up to five highlights.
  • Fetches politely: one request per second per site, up to five sites at a time.
  • Feeds that fail, pages without a feed and unchanged feeds are free.

Use cases

Each input below is ready to paste into the Actor's JSON input tab.

1. Daily news digest for a team. Five feeds, the five newest items each, only new items, one HTML page to email every morning.

{
"feedUrls": ["https://github.blog/feed/", "https://blog.cloudflare.com/rss/", "https://www.smashingmagazine.com/feed/", "https://news.ycombinator.com/rss", "https://blog.apify.com/rss/"],
"maxItemsPerFeed": 5,
"onlyNewItems": true,
"digest": "markdown"
}

2. Competitor blog alerts. Paste the blogs' home pages; the feeds are found for you. Only posts from the last 7 days that mention your keywords.

{
"feedUrls": ["https://github.blog/", "https://blog.cloudflare.com/", "https://blog.apify.com/"],
"onlyNewItems": true,
"keywords": ["agent", "LLM", "pricing"],
"publishedWithinHours": 168
}

3. Release notes of the tools you depend on. Every GitHub repository has a releases feed at https://github.com/<owner>/<repo>/releases.atom.

{
"feedUrls": ["https://github.com/nodejs/node/releases.atom", "https://github.com/microsoft/TypeScript/releases.atom"],
"maxItemsPerFeed": 5,
"onlyNewItems": true,
"includeContent": true
}

4. New podcast episodes with their MP3 files. Each row carries the enclosure URL, MIME type and size, ready for a download or transcription step.

{
"feedUrls": ["https://changelog.com/podcast/feed"],
"maxItemsPerFeed": 3,
"onlyNewItems": true
}

How to use

  1. Paste feed URLs or website URLs into Feed or website URLs.
  2. For monitoring, turn on Only new items and schedule the Actor (for example every morning at 07:00).
  3. Optionally add keywords or a time window, choose a digest, and add your Anthropic key for the AI overview.
  4. Read the dataset or the DIGEST_HTML record in Apify Console, through the API, or send them on with an integration (see Scheduling and integrations).

Input

FieldDescription
feedUrlsFeed URLs or website URLs (required). Website URLs are resolved to the feed they advertise.
maxItemsPerFeedNewest first (default 50, 1–1,000).
onlyNewItemsMonitor mode: only items not seen in earlier runs.
keywords, publishedWithinHoursFilters.
includeContentFull item text (up to 20,000 characters).
digestnone or markdown (Markdown + HTML).
anthropicApiKey, modelOptional AI overview (default claude-haiku-5-5).
{ "feedUrls": ["https://blog.apify.com/"], "onlyNewItems": true, "keywords": ["agent"], "digest": "markdown" }

Output

RSS Feed Monitor & Reader dataset from a real run: eight blog posts found from three website URLs, with image, enclosure and matched keyword columns

One row per item. These two rows come from real runs on 22 Oct 2026: the first from use case 2 (a website URL, so discoveredFrom is set), the second from use case 4 (summary shortened here).

[
{
"feedUrl": "https://blog.apify.com/rss/",
"discoveredFrom": "https://blog.apify.com/",
"feedTitle": "Apify Blog",
"status": "ok",
"itemId": "6437b8355e1379004d395af2",
"title": "What is data ingestion for large language models?",
"link": "https://blog.apify.com/what-is-data-ingestion-for-large-language-models/",
"publishedAt": "2026-10-19T09:00:00.000Z",
"updatedAt": null,
"summary": "Learn how data is collected and prepared for LLMs, including key steps, common challenges, and useful tools.",
"categories": ["AI", "Data processing and analysis"],
"imageUrl": "https://storage.ghost.io/c/f2/6e/f26ec999-9a90-4aee-a0d4-9b3ca2bb668f/content/images/2026/10/data-ingestion-for-llms.webp",
"enclosures": [],
"keywordMatches": ["LLM"]
},
{
"feedUrl": "https://changelog.com/podcast/feed",
"feedTitle": "The Changelog: Software Development, Open Source",
"status": "ok",
"itemId": "changelog.com/1/2834",
"title": "From zero to NanoClaw (Interview)",
"link": "https://changelog.com/podcast/686",
"publishedAt": "2026-10-09T19:00:00.000Z",
"updatedAt": null,
"summary": "Gavriel Cohen, creator of NanoClaw and co-founder of NanoCo, joins Adam to explain how a 40-hour weekend project became a viral open source hit…",
"categories": [],
"imageUrl": "https://cdn.changelog.com/uploads/covers/changelog-interviews-original.png?v=63848368174",
"enclosures": [
{
"url": "https://op3.dev/e/https://pscrb.fm/rss/p/https://cdn.changelog.com/uploads/podcast/686/the-changelog-686.mp3",
"type": "audio/mpeg",
"length": 234654580
}
],
"keywordMatches": []
}
]
  • imageUrl comes from, in order: Media RSS thumbnail or image, an image enclosure, itunes:image, the JSON Feed image, else the first <img> in the item's HTML (tracking pixels and author avatars are skipped). null when there is none.
  • enclosures lists RSS <enclosure> elements, Atom rel="enclosure" links, non-image Media RSS content and JSON Feed attachments. length is the size in bytes as the feed states it, or null.
  • Feeds that fail return a free row with status error or not_a_feed and an error message.

Compared with other RSS feed readers

How this Actor compares with the three leading RSS feed readers in Apify Store, from their own README and input schema (read 22 Oct 2026). Prices are base prices before any subscription discount.

This Actortechnicaldost/rss-feed-scraperautomation-lab/rss-feed-readersantamaria-automations/rss-feed-reader
FormatsRSS 2.0, RSS 1.0, Atom, JSON FeedRSS, AtomRSS 2.0, Atom, RSS 1.0 ("JSON Feed not currently supported")RSS 2.0, Atom 1.0, JSON Feed
Website URL to feedyesyesnot listedyes
Only new items across runsyes, built inno ("does not maintain a cross-run seen-item history"; separate Actor)no ("deduplicate by guid" downstream)not listed (duplicates inside one feed removed)
Unchanged feed (ETag / 304) costs nothingyesnot listednot listednot listed
Keyword filteryesyesnot listednot listed
Date filteryes (hours)yes (publishedAfter)yes (publishedAfter)yes (filterByDate)
Markdown + HTML digest, AI overviewyesnot listednot listednot listed
Image fieldyesmedia metadata (no separate image field listed)yes (imageUrl)yes (item_image)
Enclosures (podcast audio, video)yesyesnot listedyes, plus podcast duration and episode fields
Author namesnot collectedyesyesyes
Failed feedsfree status rowfree (listed in ERRORS)row with error fieldnot listed
Price$0.0005 per item; $0.01 per digest$8.00 / 1,000 dataset rows (one extra metadata row per feed)$0.001 per item + $0.035 per run$0.002 per feed + $0.001 per run

Choose this Actor when you run the same feeds on a schedule and want each item once, a digest to send, and no charge for quiet feeds. Choose a per-feed price (santamaria) when you read very long feeds once and need podcast episode metadata.

Use with AI agents (MCP)

Give Claude, ChatGPT, Cursor, VS Code or any MCP client this Actor as a tool through the hosted Apify MCP server at https://mcp.apify.com. The agent sees the input fields with their descriptions, runs the Actor and reads the items.

  • MCP server URL for this Actor only: https://mcp.apify.com/?tools=brisaworks/rss-feed-monitor
  • Tool name inside the agent: brisaworks--rss-feed-monitor

Client config (mcp.json or the client's MCP settings; Claude Code: claude mcp add --transport http apify <URL>):

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=brisaworks/rss-feed-monitor",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Example prompt: "Use brisaworks--rss-feed-monitor with {"feedUrls": ["https://github.blog/", "https://blog.cloudflare.com/"], "maxItemsPerFeed": 5, "keywords": ["agent"]} and list the posts as a table with title, date and link."

Run it from your code (API)

Get your token in Apify Console → Settings → API & Integrations. Each call below runs the Actor and returns its items.

cURL (waits up to 240 seconds and returns the dataset):

curl -X POST "https://api.apify.com/v2/acts/brisaworks~rss-feed-monitor/run-sync-get-dataset-items?timeout=240" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"feedUrls": ["https://blog.apify.com/rss/", "https://github.blog/"], "maxItemsPerFeed": 10, "onlyNewItems": true}'

Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('brisaworks/rss-feed-monitor').call({
feedUrls: ['https://blog.apify.com/rss/', 'https://github.blog/'],
maxItemsPerFeed: 10,
onlyNewItems: true,
digest: 'markdown',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const digestHtml = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('DIGEST_HTML');
console.log(items.length, digestHtml?.value?.slice(0, 200));

Python (pip install apify-client):

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("brisaworks/rss-feed-monitor").call(run_input={
"feedUrls": ["https://blog.apify.com/rss/", "https://github.blog/"],
"maxItemsPerFeed": 10,
"onlyNewItems": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["status"] == "ok":
print(item["publishedAt"], item["title"], item["link"])

New-items mode keeps its memory in a named key-value store in your account (rss-feed-monitor), so API runs and scheduled runs share it.

Scheduling and integrations

  • Schedule: in Apify Console, save your input as a task and add a schedule (for example daily at 07:00, or hourly for news). With Only new items on, each run returns only what appeared since the last one.
  • Webhooks: add a webhook on "Run succeeded" to post the run to your own endpoint, then read the dataset or DIGEST_HTML.
  • n8n: import the starter workflow (Workflows → Import from URL). It runs this Actor every morning at 07:00 with Only new items on, keeps rows whose status is ok and ends in a placeholder step for your Slack, email or Google Sheets node. On its HTTP node, add a Header Auth credential (name Authorization, value Bearer <your Apify API token>) and put your feeds in the body. Each run is capped at $1.
  • Make, Zapier, Slack, Google Sheets: connect them through Apify's integrations (Console → the Actor or task → Integrations): run on a schedule, keep rows whose status is ok, then send them to your own step.

Ready-made example tasks

Open one, check the input, and run it or copy it to your account:

Pricing

EventPricePer 1,000Charged when
item$0.0005$0.50A feed item is saved (in new-items mode, only unseen items)
digest$0.01$10.00A digest is saved (at most one per run)

Apify subscription tiers pay less: an item costs $0.00045 on Bronze, $0.0004 on Silver and $0.00035 on Gold ($0.45, $0.40 and $0.35 per 1,000 items); a digest costs $0.009, $0.008 and $0.007.

Unchanged feeds, unreachable feeds, pages without a feed and non-feed URLs cost nothing. Finding a website's feed costs nothing extra. AI overviews use your Anthropic account.

How much does it cost to monitor RSS feeds?

  • 20 feeds checked every morning in new-items mode, about 100 new items a day: $0.05 a day for items, $0.06 with a daily digest.
  • The daily news digest task above (5 feeds, 5 items each): at most $0.0125 for items plus $0.01 for the digest on the first run; later runs charge only new items.
  • A one-off export of 1,000 items: $0.50.
  • Apify adds its standard small run-start fee per run.

Set a maximum cost per run in the run options: the Actor checks it before saving each item and before building the digest, and stops before going over it. In new-items mode, items it did deliver are remembered, so the next run neither repeats nor re-charges them.

Limits

  • Feeds usually carry only their latest 10–50 items; run often enough not to miss items on busy feeds.
  • New-items mode remembers up to 2,000 item IDs per feed.
  • Website URLs work when the page advertises its feed with a <link rel="alternate"> tag (WordPress and Ghost blogs do, for example). The Actor doesn't guess feed paths. A page without such a tag returns a free not_a_feed row.
  • Some sites refuse requests that don't come from a browser (for example HTTP 403). The Actor uses no proxies; such feeds return a free error row.
  • Author names and avatars are not collected.
  • Private or password-protected feeds are not supported.

Data source

FAQ

How do I get only new items every day?

Turn on Only new items and schedule the Actor. It remembers the item IDs each feed returned and sends ETag/Last-Modified headers, so unchanged feeds answer with a free "not modified".

Can I paste a website instead of a feed URL?

Yes. Paste the home page or blog page. The Actor reads the page's <link rel="alternate"> tags, picks the main feed (comment feeds last) and adds discoveredFrom to each row. If you also list that feed directly, it is read once.

Can I get the digest by email or Slack?

The digest is saved as DIGEST (Markdown) and DIGEST_HTML in the run's key-value store. Use an Apify integration (Make, Zapier, n8n or a webhook) to send it on, or read the record through the API after the run.

Can I filter by keywords?

Yes. Items are kept when the title, summary or categories contain at least one keyword (case-insensitive, matched anywhere in a word, so agent also matches "agents"); each row lists the keywords it matched. Short keywords match inside longer words too (ai matches "again"), so prefer longer ones.

How much does a scheduled feed reader cost per month?

At 100 new items a day with a daily digest: about $0.06 a day, or $1.80 a month, plus Apify's run-start fee. Quiet days cost less: unchanged feeds are free.

Is it a feed reader app?

No. It has no reading interface; it gives you data (a dataset and a digest page) to read in Apify Console, your inbox, Slack, a spreadsheet or your own app.

Privacy

Author names and avatars are dropped. When you use the AI overview, item titles and summaries are sent to Anthropic under your own API account.

Support

Open an issue on the Actor's Issues tab; issues are answered within a few days and fixed within 14 days.