RSS & News Feed Monitor avatar

RSS & News Feed Monitor

Under maintenance

Pricing

$2.00 / 1,000 item delivereds

Go to Apify Store
RSS & News Feed Monitor

RSS & News Feed Monitor

Under maintenance

Monitor RSS, Atom and JSON feeds — or any site that has one — and get back only the items published since your last run. Optional full article text, keyword and date filters. You pay per delivered item: nothing new means nothing charged.

Pricing

$2.00 / 1,000 item delivereds

Rating

0.0

(0)

Developer

munin

munin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Watch any list of RSS, Atom or JSON feeds — or plain site URLs — and get back only the items published since your last run. Optionally with the full article text, not just the 150-character summary the feed carries.

Built for scheduled runs: point it at 50 blogs, run it every hour, and each run delivers the handful of posts that are actually new. You are charged per delivered item, so an hour with nothing new costs you nothing.

What it does

  • Reads every common feed format — RSS 2.0, RSS 1.0 (RDF), Atom and JSON Feed. Measured on 53 live sources: 51 worked (96%).
  • Finds the feed for you. Give it https://blog.cloudflare.com or https://stripe.com/blog and it looks for the feed the page declares, then for the usual paths (/feed, /rss.xml, /atom.xml, /index.xml, /feed.json, …).
  • Remembers what it already sent. Item IDs are kept in a named key-value store, so a scheduled run returns new items only — no duplicates, no double charges. A run with nothing new delivers 0 items and costs 0.
  • A per-feed limit throttles, it does not discard. Items over maxItemsPerFeed are delivered by the following run instead of being dropped.
  • Skips unchanged feeds for free. It sends If-None-Match / If-Modified-Since; a 304 Not Modified costs you nothing at all. About 60% of publishers support this (32 of 51 feeds in our measurement).
  • Fetches the real article when you ask for it. Feeds usually carry 100–200 characters; the extracted body is around 10× longer (median 686 → 6,700 characters in our measurement).
  • Filters before charging. Keyword, exclude-keyword, author and date filters are applied first. Items you filter out are not billed.

Input

FieldTypeWhat it does
sourcesarrayFeed URLs or site URLs. Required.
keywordsarrayKeep items matching any keyword (case-insensitive).
excludeKeywordsarrayDrop items matching any of these.
matchInarrayFields the keyword filters look at. Default: title + summary.
authorsarrayKeep only these authors.
publishedWithinHoursintegerDrop items older than this. 0 = no limit.
onlyNewItemsbooleanDefault on. Deliver only what appeared since the last run.
stateStoreNamestringNamed store for the memory, so separate watch lists don't mix.
includeFullTextbooleanOpen each article and extract the body. Default off.
fullTextMinCharsintegerShorter text counts as "not found". Default 500.
includeContentHtmlbooleanAlso return HTML, not only plain text.
maxItemsPerFeed, maxItemsintegerLimits. Counted on delivered items.
maxFeedsPerSiteintegerTake more than one feed when a site declares several.
maxConcurrencyintegerFeeds read in parallel. Default 5.
useApifyProxybooleanFor the few publishers that block datacenter traffic.

Example input

{
"sources": ["https://techcrunch.com/feed/", "https://blog.cloudflare.com", "https://www.theverge.com/rss/index.xml"],
"keywords": ["ai", "acquisition"],
"publishedWithinHours": 24,
"onlyNewItems": true,
"includeFullText": true
}

Output

One dataset item per feed entry:

{
"title": "Cloudflare acquires Human Native",
"url": "https://blog.cloudflare.com/cloudflare-acquires-human-native/",
"id": "https://blog.cloudflare.com/cloudflare-acquires-human-native/",
"author": "Matthew Prince",
"publishedAt": "2026-09-17T13:00:00.000Z",
"updatedAt": null,
"summary": "The web has always run on a bargain…",
"contentText": "The web has always run on a bargain between…",
"categories": ["AI", "Acquisitions"],
"imageUrl": "https://cf-assets.www.cloudflare.com/…/image.png",
"enclosures": [],
"commentsUrl": null,
"feedTitle": "The Cloudflare Blog",
"feedUrl": "https://blog.cloudflare.com/rss/",
"feedType": "rss",
"fullText": "The web has always run on a bargain… (6,700 characters)",
"wordCount": 1104,
"success": true,
"scrapedAt": "2026-09-19T04:12:07.881Z"
}

A source whose feed could not be found or read produces one row instead of failing the run, and that row is not charged:

{
"input": "https://www.anthropic.com/news",
"success": false,
"itemsDelivered": 0,
"error": "No RSS, Atom or JSON feed found for this URL. If the site has one, pass its feed URL directly."
}

What it cannot do

  • It cannot invent a feed that doesn't exist. Sites that publish no RSS/Atom/JSON feed (for example anthropic.com/news) return a failure row. It does not scrape article lists out of HTML.
  • Full article text is not guaranteed. Measured at 84–88% of articles. It fails on pages rendered entirely by JavaScript, on paywalled articles (NYTimes, The Economist), and on pages that aren't articles at all (a landing page, a forum post). Those rows carry fullText: null and a reason; the item is still delivered and charged, because the feed entry itself is the product.
  • Short posts fall below the length floor. Link-blog entries of 200–400 characters are treated as "no body" at the default fullTextMinChars: 500. Lower it if you watch link blogs.
  • Some publishers block datacenter IPs outright. AP News returns 403 to any datacenter request. Turn on Apify Proxy for those.
  • No login, no anti-bot bypass. Feeds behind a subscriber login are out of scope.
  • Feeds only carry what the publisher puts in them. Missing authors, missing dates and truncated summaries are the publisher's choice, not a bug here. Dates are normalised to ISO 8601 when present.
  • It is not a full-site archive. A feed typically holds the latest 10–50 items; the actor cannot reach back further than the feed goes.

Pricing

Pay per event: $2.00 per 1,000 delivered items. Platform usage (compute, proxy, storage) is included — you pay for delivered items and nothing else.

Not charged: filtered-out items, items already delivered in an earlier run, unchanged feeds (304), and sources that failed.

Tips

  • Schedule it hourly with onlyNewItems: true and publishedWithinHours: 48. The date filter guards against a feed that republishes old items with new IDs.
  • Use stateStoreName to separate watch lists — "competitors" and "industry-news" won't hide each other's items.
  • Leave includeFullText off for alerting and turn it on for summarising. Off, a 50-feed run finishes in a few seconds.
  • Chain it into an LLM step with the text output link: it returns title, URL, date and body only.