RSS Feed Reader: Bulk Feeds from a CSV, Google Sheet or Dataset
Pricing
from $0.70 / 1,000 feed items
RSS Feed Reader: Bulk Feeds from a CSV, Google Sheet or Dataset
Returns the newest items (title, link, date, author, summary, image, podcast media) from RSS, Atom and JSON feeds or websites, read from a list, CSV, Google Sheet or dataset, columns kept. Only-new mode. $0.001 per item; failed and repeat items free. Agent-ready via x402 and MCP.
Pricing
from $0.70 / 1,000 feed items
Rating
0.0
(0)
Developer
Adam Pearce
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Watching dozens of blogs, news sites, podcasts or competitors? Give this Actor your list (typed in, a CSV, a Google Sheet or another Actor's dataset) and get every new post back as a clean row: title, link, date, author, summary, tags, image and podcast audio, next to your own columns.
Paste a normal website address and it finds the site's feed for you. Turn on Only new items and each run returns only what has appeared since the last one, so a daily schedule or an AI agent never sees (or pays for) the same story twice.
What you can do with it
- Competitor and industry monitoring: a Sheet of 50 competitor blogs with a
clientcolumn, run every morning, only new posts, straight into Slack via the webhook. - News alerts on a topic: many news feeds plus
Must mention: ["acquisition", "funding round"], so only matching stories come back. - Podcast tracking: new episodes with the audio file link, size and duration, ready for a transcription step.
- Content pipelines and agents: an n8n flow, Make scenario or AI agent asks "what is new on these sites?" and gets JSON rows back, paying a fraction of a cent per item.
- Lead and account research: a lead list with a
websitecolumn comes back with each company's latest posts, so outreach can mention something they just published.
Example output
One row per item. Your own columns (here client and topic) are copied onto every item from that feed:
{"client": "Acme","topic": "security","rowNumber": 1,"feedUrl": "https://blog.cloudflare.com","resolvedFeedUrl": "https://blog.cloudflare.com/rss/","feedDiscovered": true,"feedStatus": "ok","feedTitle": "Cloudflare Blog","feedType": "rss","position": 1,"itemId": "01M5E1HXVZGTKAKEYZ0KMZQ65Q","title": "Introducing full transaction detection for Cloudflare WAF","link": "https://blog.cloudflare.com/full-transaction-waf/","author": "Daniele Molteni","publishedAt": "2026-10-21T14:10:42.000Z","summary": "Cloudflare's web application firewall can now correlate an HTTP request with its response. ...","categories": ["Managed Rules", "Security", "Security Analytics", "Vulnerabilities", "WAF"],"imageUrl": "https://blog.cloudflare.com/_emdash/api/media/file/01M5E1HKVR7WJX7KGB4B8MSK75.png","enclosureUrl": "https://blog.cloudflare.com/_emdash/api/media/file/01M5E1HKVR7WJX7KGB4B8MSK75.png","durationSeconds": null,"fetchedAt": "2026-10-22T12:58:41.000Z"}
A feed that cannot be read gives one free row instead, so you can see which entries need fixing:
feedStatus | Meaning | Charged? |
|---|---|---|
ok | The feed was read; its items are the other rows | Per item delivered |
no_feed_found | The website declares no feed and none was at the usual addresses | No |
not_a_feed | The link returned something that is not a feed | No |
blocked | The site's bot protection refused every request | No |
http_error, unreachable, timeout, too_large, invalid_url, no_url | The link could not be read | No |
Inputs
| Input | What it does |
|---|---|
| Feeds or websites | A plain list of feed links or website addresses |
| Dataset / File or Google Sheet URL | Read the list from an Apify dataset, CSV, TSV, Excel, JSON or a Google Sheet. The feed column is found automatically (feedUrl, feed, rss, then url or website) |
| Items per feed | Newest items to take from each feed (default 20) |
| Only new items | Remember what was returned and give only new items next time. The first run returns the current items |
| Published after | A date (2026-10-01) or a period (24 hours, 7 days) |
| Must mention / Must not mention | Whole-word keyword filters on title, summary, content and tags |
| Include full content | Adds the full post text the feed carries, as plain text or HTML |
| Remove duplicate stories | The same link in two feeds counts once (on by default) |
| Export files, Webhook, Append to named dataset | CSV or Excel download, a POST with the summary and newest 50 items (sent only when there are new items), a growing archive |
Every format is read: RSS 2.0, RSS 1.0 (RDF), Atom and JSON Feed, including podcast (iTunes), Media RSS and YouTube channel feeds. Dates are converted to ISO 8601 in UTC; a missing date stays empty and is never guessed.
Pricing
Pay per event, no subscription:
| Event | Price |
|---|---|
| Feed item delivered | $0.001 (cheaper on higher Apify plans) |
| CSV or Excel file | $0.01 per file |
| Webhook delivered | $0.005 |
| Residential proxy (only if you turn it on) | $0.003 per feed that returns items through it |
What it costs in practice: watching 50 blogs every day with Only new items on, at about 3 new posts per blog a day, is 150 items a day, about $4.50 a month. Failed feeds, items filtered out by date or keyword, repeats and duplicates are never charged.
How it works
- Each link is downloaded with plain HTTP (no browser), identifying itself as a feed reader, with a browser-style retry if a site refuses. Never more than two requests at a time go to one site.
- If the link is a web page, the feed the page declares in its
<link rel="alternate">tag is used; failing that, the usual addresses (/feed,/rss,/feed.xml,/rss.xml,/atom.xml,/index.xml) are tried. - Items are sorted newest first, filtered, checked against the memory (Only new items) and written, then charged for exactly what was written.
For AI agents and automations
Call it through the Apify API, the Apify MCP server or x402 pay-per-call with no account. Minimal input: {"feedUrls": ["https://example.com"], "onlyNewItems": true, "stateName": "my-monitor"}. The run summary (RUN_SUMMARY in the key-value store) lists feeds read and failed and items skipped by reason.
FAQ
Can I monitor a site that has no RSS feed? Only if the site publishes a feed somewhere. Most blogs, news sites, podcasts, YouTube channels, Substack, Medium and WordPress sites do; the Actor finds it from the homepage. If no_feed_found comes back, the site has none.
How does Only new items know what is new? It keeps the ID of every item it returned under the memory name you choose, in your own Apify account. Use a different memory name for each separate monitor.
Can I get the full article when the feed only has a summary? Send the link column to Bulk Article Extractor, which keeps all these columns and adds the full text.
Is it legal to read feeds? Feeds are published so that readers and apps can fetch them. This Actor reads only the feed itself, at a polite rate, and returns what the publisher chose to put in it. Respect each publisher's terms for how you reuse the content.
If this saved you checking feeds by hand, a review on the Apify Store helps a lot.