RSS Feed Monitor - Only New Items, Atom & JSON Feed, Podcasts
Pricing
from $0.50 / 1,000 item delivereds
RSS Feed Monitor - Only New Items, Atom & JSON Feed, Podcasts
Read hundreds of RSS, Atom and JSON feeds in one run and get clean, deduplicated items. Turn on 'only new items' and schedule it: every run delivers exactly what was published since the last one. Feed autodiscovery from any site URL. Pay per feed check and per item.
Pricing
from $0.50 / 1,000 item delivereds
Rating
0.0
(0)
Developer
Luca Pietrini
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
RSS Feed Monitor — only new items, from hundreds of feeds, in one run
Give it a list of RSS, Atom or JSON feeds — or just the websites, and the feeds are found for you — and get every item as clean, uniform JSON: title, link, date in UTC, author, plain-text summary, categories, images and podcast enclosures. Whatever dialect the publisher uses, the rows look the same.
Then turn on Only new items and schedule it. Each feed remembers what it already delivered, so every run returns exactly the items published since the previous run. No duplicates, no "did I see this already?", no database on your side.
What sets it apart from other feed readers on Apify Store:
- Only new items, per feed, remembered for you — the monitoring case handled natively, not with a "dedupe by URL" afterthought. Seed a feed silently on the first run if you only want future items.
- Every dialect — RSS 2.0, RSS 1.0 (RDF), Atom, JSON Feed, podcast feeds with enclosures and durations,
media:images,content:encodedfull text. - Feed autodiscovery — paste a blog URL;
<link rel="alternate">tags and common paths (/feed,/rss.xml,/atom.xml,/feed.json, Blogger, WordPress) are checked for you. - Hundreds of feeds per run, fetched in parallel, each one isolated: a dead feed is reported in the summary and never stops the others.
What you get
One row per item:
{"title": "Python 3.15.0 beta 1 released","link": "https://blog.python.org/2026/09/python-3150b1.html","published": "2026-09-16T14:02:00+00:00","updated": null,"author": "Python Insider","summary": "The first beta of Python 3.15 is out. Beta means no new features…","categories": ["release"],"enclosures": [],"image": null,"itemId": "tag:blogger.com,1999:blog-123.post-456","feedUrl": "https://blog.python.org/feeds/posts/default?alt=rss","feedTitle": "Python Insider","feedType": "rss","siteUrl": "https://blog.python.org/","fetchedAt": "2026-09-18T13:05:00+00:00","isNew": true}
| Field | Notes |
|---|---|
published, updated | Normalised to ISO 8601 UTC from RFC 822, ISO 8601 or date-only values. null when the feed gives none. |
summary | HTML stripped, whitespace collapsed, up to 600 characters. Turn on Include full item content for contentHtml. |
enclosures | {url, type, length, duration} — podcast episodes, videos, files. |
itemId | The feed's own guid / id, or the link, or a stable hash. What "only new" is keyed on. |
isNew | Only when Only new items is on. |
A per-feed summary (items in feed, new, delivered, first run, errors) is saved as the SUMMARY record of the run's key-value store.
Input
| Option | Default | What it does |
|---|---|---|
| Feed URLs | — | One per line. RSS / Atom / JSON Feed / podcast feeds. |
| Or: websites to discover feeds from | — | Blog or news URLs; their feeds are discovered. |
| Only new items since the last run | on | Per-feed memory in a named key-value store. |
| On the first run of a feed | deliver everything | Or seed only: remember the current items and deliver nothing, so the next run is already "new only". |
| Only items published since | — | ISO date or 24h, 7d, 2w. |
| Only items whose title or summary matches / Skip items matching | — | Case-insensitive regular expressions, e.g. `python |
| Include full item content (HTML) | off | Adds contentHtml when the feed provides the body. |
| Deduplicate the same link across feeds | on | One row when several feeds carry the same article. |
| Maximum items per feed | 0 | |
| Snapshot store name | feed-monitor-snapshots | Change it to track the same feeds independently (e.g. per project). |
How "only new" stays correct
- Memory is per feed, keyed on the feed's own item ids, with a rolling window of the last 5,000 ids — old items that drop off a feed and come back later are not reported as new.
- If a run stops at your maximum charge, items that could not be delivered are not remembered: they come back on the next run instead of being lost.
- Changing filters does not touch the memory: an item filtered out today is still "new" tomorrow if the filter changes.
Pricing
Pay per event, no subscription:
- one event per feed checked (a few cents per thousand checks — it covers the cost of runs that find nothing new);
- one event per item delivered.
A scheduled monitor over 50 feeds that finds 12 new items pays for 50 checks and 12 items. Set a maximum charge on the run to cap the cost; the Actor stops cleanly when it is reached.
Use cases
- Newsroom / competitor watch — every morning, what the sites you follow published, deduplicated, in one dataset.
- Content pipelines and AI agents — feed new articles into summarisation, translation or classification; an agent can call this Actor and pay per event.
- Podcast tracking — new episodes across many shows, with audio URLs and durations.
- Job and release feeds — python.org jobs, GitHub releases, changelogs, status pages: anything with a feed.
- Alerts — pipe new items to Slack, email or a sheet with Apify integrations and schedules.
Run it from code
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("bruco3/feed-monitor").call(run_input={"feeds": ["https://hnrss.org/frontpage", "https://blog.apify.com/rss/"],"onlyNew": True,"firstRun": "seed",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["published"], item["title"], item["link"])
FAQ
A feed returns an HTML page. You passed a web page, not a feed. Put it under websites to discover feeds from instead and the feed will be found, or open an issue if a site's feed goes undiscovered.
Dates look wrong. They are converted to UTC. 2026-09-01T10:00:00+02:00 becomes 2026-09-01T08:00:00+00:00.
Is it legal? Feeds are published by site owners specifically for automated readers. The Actor identifies itself with a clear User-Agent and fetches only feed files.
Related
- Sitemap URL Extractor — every URL of a site, with added/removed pages between runs.
- Broken Link Checker — 404s, redirect chains and slow pages across a whole site.
Feedback
A feed dialect this Actor gets wrong, or a field you need? Open an issue on the Issues tab. If it saved you time, a review helps others find it.
Changelog
- 0.1 — initial release: RSS 2.0 / 1.0, Atom, JSON Feed, podcast enclosures, autodiscovery, only-new memory per feed with seed mode, filters, cross-feed dedupe, pay per check and per item.