How to Monitor Many RSS and Atom News Feeds in One Run and Export New Items to a Spreadsheet
Tracking competitor blogs, industry news and press releases by hand means opening a dozen sites every morning. Almost all of them publish an RSS or Atom feed. The NanoScrape RSS Feed Reader on Apify reads many feeds in one run, returns one row per article with title, link, date, author, summary, image and categories, and lets you download the result as CSV or Excel. We ran it on 14 public AI and data blogs: 234 items in about three seconds for $0.029.
In this tutorial
What you get
The NanoScrape RSS Feed Reader takes a list of feed URLs and returns structured records. It detects RSS 2.0, Atom 1.0 and JSON Feed automatically, so you can mix them in one run. For every article you get the title, link, publication date, author, summary, categories, featured image and, when the feed ships it, the full HTML body. It also adds one summary row per feed with the item count and the newest and oldest dates, and a failed feed does not stop the others.
It reads the feed file only. It does not open the article pages, so what you get is what each publisher puts into its feed.
Prerequisites
- A free Apify account. The free plan includes monthly credit, far more than this tutorial needs.
- The feed URLs of the sites you want to follow. Look for the RSS icon, a link tagged "RSS" or "Atom" in the page source, or try /feed and /rss on the site.
Collect the feed URLs
- List the sources you care about: competitor blogs, industry news sites, vendor release notes, press-release pages.
- Open each feed URL in a browser once. You should see XML or JSON text, not a login page.
- Skip sources whose feed returns an error. In our test, four candidate feeds were not usable from a plain request (two returned 404, one 403, one 429), so we swapped them for other blogs before the run.
Configure the run
Open the actor on Apify, click Try for free and fill the input form. The same input as JSON:
{
"feedUrls": [
"https://blog.apify.com/rss/",
"https://hnrss.org/frontpage"
],
"maxItemsPerFeed": 30,
"includeContent": true,
"filterByDate": "2026-10-14"
}feedUrls: the list of RSS, Atom or JSON Feed URLs.maxItemsPerFeed: how many items to read from the top of each feed (default 100).includeContent: keep the full HTML body of each item (default true). Turn it off for smaller output when you only need titles and links.filterByDate: only return items newer than this ISO date, for example 2026-10-14. Leave it empty to get everything in the feed.fetchTimeoutSeconds: timeout per feed in seconds (default 30).
Run and export
- Click Start. A run with 14 feeds finished in about three seconds on our machine.
- Open the Dataset tab. Each article has
typeset tofeed_item; each feed has onefeed_summaryrow. - Filter to
feed_itemand use Export to download CSV or Excel for Google Sheets or Excel. JSON and XML are also available.
item_guid or item_link as the unique key in your spreadsheet. The same article shows up again on the next run, and this is how you spot rows you already have.Run it on a schedule
In Apify Console open the actor and choose Schedules, then pick daily or hourly. Set filterByDate to the day of your last run so you only receive new items. The actor keeps no memory between runs, so the date filter and the item key above are how you avoid duplicates. Send the dataset on to Google Sheets, a webhook or the Apify API to append new rows automatically.
Connect to AI agents via MCP
The actor is available as an MCP (Model Context Protocol) tool. Paste this server URL into an MCP-compatible client such as Claude Desktop, Claude.ai, Cursor or VS Code:
https://mcp.apify.com?tools=santamaria-automations/rss-feed-readerThen ask in plain English, for example "Read these five competitor blog feeds and list everything published this week."
Copy-paste prompt for Claude
With the MCP server connected, this prompt asks Claude to tell you the cost first and wait for your OK. Replace the feed URLs with your own.
Use the Apify MCP server. Run the actor santamaria-automations/rss-feed-reader with the feed URLs https://blog.apify.com/rss/ and https://openai.com/news/rss.xml, maxItemsPerFeed 20.
Before you start the run, tell me what it will cost and wait for my OK.
When it's done, give me a table with feed, title, link and publication date for items from the last 7 days, newest first.Example: industry news
14 AI and data blogs: 234 items, 156 from the last 7 days
Situation: you follow the AI and data industry and want one table of what the main vendors and news sites published this week, instead of opening 14 sites.
We read 14 public feeds (company engineering blogs and AI sections of tech news sites), at most 30 items per feed, full text on. It was our own local test run on 2026-10-21, from a normal home connection, with no proxy. The week is the 7 days before the run, from 2026-10-14 15:07 UTC. Sources are named by their web host because several feeds call themselves just "AI".
- 248 records came back: 234 articles and 14 feed summary rows. All 14 feeds loaded, and every article has a publication date.
- 156 of 234 articles (67%) were published in the last 7 days. The busiest feeds were aws.amazon.com, towardsdatascience.com and techcrunch.com with 20 each, but those three feeds only list their latest 20 items, so 20 means "everything in the feed". openai.com had 15, blog.cloudflare.com 13 and huggingface.co 12. blog.google had only 1 in the week (its 20 items reach back to 1 September).
- Only 104 articles (44%) contain full text. 8 feeds ship the body in every item (for example blog.apify.com, aws.amazon.com, blog.cloudflare.com, github.blog); 6 never do (openai.com, huggingface.co, databricks.com, blog.google, towardsdatascience.com, techcrunch.com) and give a summary instead. The median full-text body is about 17,400 characters of HTML.
- 110 articles (47%) have a featured image, from 9 of the 14 feeds. 90 have both full text and an image.
- Summary text is present for 194 articles (83%), categories for 191 (82%) and an author for 152 (65%). 20 items carry a media enclosure.
- Two feeds hit the 30-item cap (openai.com, huggingface.co); raise
maxItemsPerFeedif you want to go further back.
Cost: 1 run start at $0.001 plus 14 feeds at $0.002 = $0.029 on the Free plan. The 234 articles cost nothing extra.
Show the per-source counts
- aws.amazon.com: 20 items, 20 in the last 7 days
- towardsdatascience.com: 20 items, 20 in the last 7 days
- techcrunch.com: 20 items, 20 in the last 7 days
- openai.com: 30 items, 15 in the last 7 days
- blog.cloudflare.com: 20 items, 13 in the last 7 days
- huggingface.co: 30 items, 12 in the last 7 days
- www.databricks.com: 10 items, 10 in the last 7 days
- netflixtechblog.com: 10 items, 10 in the last 7 days
- www.theverge.com: 10 items, 10 in the last 7 days
- www.technologyreview.com: 10 items, 7 in the last 7 days
- blog.apify.com: 15 items, 6 in the last 7 days
- engineering.fb.com: 9 items, 6 in the last 7 days
- github.blog: 10 items, 6 in the last 7 days
- blog.google: 20 items, 1 in the last 7 days
The exact input:
{
"feedUrls": [
"https://blog.apify.com/rss/",
"https://openai.com/news/rss.xml",
"https://huggingface.co/blog/feed.xml",
"https://www.databricks.com/feed",
"https://aws.amazon.com/blogs/machine-learning/feed/",
"https://blog.google/technology/ai/rss/",
"https://engineering.fb.com/feed/",
"https://netflixtechblog.com/feed",
"https://blog.cloudflare.com/rss/",
"https://github.blog/feed/",
"https://towardsdatascience.com/feed",
"https://techcrunch.com/category/artificial-intelligence/feed/",
"https://www.technologyreview.com/topic/artificial-intelligence/feed",
"https://www.theverge.com/rss/ai-artificial-intelligence/index.xml"
],
"maxItemsPerFeed": 30,
"includeContent": true,
"fetchTimeoutSeconds": 30
}Claude prompt (set up the MCP server as in Connect to AI agents via MCP):
Use the Apify MCP server. Run the actor santamaria-automations/rss-feed-reader with these 14 feed URLs: https://blog.apify.com/rss/, https://openai.com/news/rss.xml, https://huggingface.co/blog/feed.xml, https://www.databricks.com/feed, https://aws.amazon.com/blogs/machine-learning/feed/, https://blog.google/technology/ai/rss/, https://engineering.fb.com/feed/, https://netflixtechblog.com/feed, https://blog.cloudflare.com/rss/, https://github.blog/feed/, https://towardsdatascience.com/feed, https://techcrunch.com/category/artificial-intelligence/feed/, https://www.technologyreview.com/topic/artificial-intelligence/feed, https://www.theverge.com/rss/ai-artificial-intelligence/index.xml. Set maxItemsPerFeed to 30 and includeContent to true.
Before you start the run, tell me what it will cost and wait for my OK.
When it's done, ignore the feed_summary rows and use only the feed_item rows. Give me a table with one row per feed: the feed host, the number of items, and the number published in the last 7 days. Then tell me how many items have item_content and how many have item_image, as counts and percentages, and name the feeds that never include full text. Finally list the 10 newest items with feed, title, link and publication date.Do the 7-day count in the spreadsheet or in Claude after the run, as above. If you only ever want the last week, set filterByDate in the input instead and the actor skips older items.
Key output fields
type:feed_itemfor an article,feed_summaryfor the per-feed summary row.feed_title,feed_url,feed_type: feed name, feed URL and detected format.item_title,item_link,item_guid: article title, link and unique ID.item_published,item_updated: publication and update time.item_author: author, where the feed has one.item_content: full HTML body, only if the feed includes it andincludeContentis on.item_description: short summary or excerpt.item_image: featured image URL;item_categories: categories or tags;item_enclosures: audio or video attachments such as podcast files.- Summary rows add
items_count,latest_item_dateandoldest_item_date.erroris set when a feed could not be read.
What it costs
The actor uses pay-per-event billing on Apify:
- Actor start: $0.001 once per run.
- Feed parsed: $0.002 per feed that loaded and was parsed. Feeds that fail are not charged.
- No charge per article, so a feed with 100 items costs the same as one with 5.
Examples at these prices: 14 feeds in one run cost $0.029; the same run once a day for 30 days costs $0.87. A run with 100 feeds costs $0.201.
FAQ
Does the actor fetch the full article text from the article page?
No. It reads what the feed itself contains. Some feeds ship the full article in the item body, others only a one-paragraph summary. In our run of 14 feeds, 8 included full text in every item and 6 included none. For the missing ones you would pass the item_link URLs to a page extractor in a second step.
How do I get only new items on each scheduled run?
Set filterByDate to an ISO date, for example 2026-10-14 or 2026-10-14T00:00:00Z, and update it to the date of your last run. Items older than that date are skipped. The actor does not remember earlier runs on its own, so keep item_guid or item_link in your spreadsheet and drop rows you already have.
What does it cost to read 14 feeds?
One run costs $0.001 for the start plus $0.002 per feed that was parsed successfully, so 14 feeds cost $0.029. There is no charge per item. Feeds that fail to load are not charged. These are the Apify Free-plan prices on the Store page.
Which feed formats does it read?
RSS 2.0, Atom 1.0 and JSON Feed 1.0 and 1.1. The format is detected automatically, so you can mix them in one feedUrls list, and the feed_type field tells you which one each feed was.
Is there a limit on items per feed?
maxItemsPerFeed caps how many items are read from each feed, starting from the top of the feed. The cap is applied before the date filter, so with a low cap and filterByDate you only look at the newest items. Most blog feeds list only 10 to 30 items anyway.
Can I schedule it?
Yes. In Apify Console open the actor, choose Schedules and pick an interval such as daily or hourly. Connect the dataset to Google Sheets, a webhook or the Apify API to push new rows to your spreadsheet.
Related resources
- RSS Feed Reader actor page: specs and pricing.
- Google News scraper: search news by keyword when no feed exists.
- RSS Feed Reader on Apify: full documentation and input reference.
- All NanoScrape tutorials