RSS Feed Reader: RSS, Atom & JSON Feed to JSON
Pricing
from $0.50 / 1,000 feed items
RSS Feed Reader: RSS, Atom & JSON Feed to JSON
Read RSS, RDF, Atom and JSON Feed URLs and get one clean JSON row per item: title, link, ISO dates, author, summary, categories, image, enclosures. Only-new mode for scheduled runs, feed discovery and archive history for 350+ news feeds. $0.50 per 1,000 items.
Pricing
from $0.50 / 1,000 feed items
Rating
0.0
(0)
Developer
subimpact
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
Read any number of RSS 2.0, RSS 1.0 (RDF), Atom 1.0 and JSON Feed URLs and get one clean JSON row per item. Every row has the same fields whatever the feed format was, so you can point it at 5 feeds or 500 and load the dataset straight into a spreadsheet, a database or an AI pipeline.
Three things it does that a plain feed reader does not:
- Only new items (delta mode).
onlyNew: trueremembers, per feed, which items it already delivered and returns only what arrived since. Built for scheduled runs. - Archive history.
includeArchive: trueadds older items the live feed no longer carries, for the 350+ news publisher feeds in our news index. Archive rows are flagged withfromArchive: true. - Feed discovery. Give it a normal web page and it follows the feed that page advertises
(
<link rel="alternate" type="application/rss+xml">), then reports the discovered URL.
No browser, plain HTTP only, 256 MB of memory. Dates are always ISO 8601 UTC, HTML is stripped from summaries, and broken charsets (ISO-8859-1, windows-1252) are decoded correctly.
What one row looks like
| Field | Meaning |
|---|---|
itemTitle | Item headline |
link | Item URL, resolved to an absolute URL |
guid | The feed's own identifier (RSS guid, Atom id, JSON Feed id) |
publishedAt | Publication time, ISO 8601 UTC, null when the feed has no usable date |
updatedAt | Last update time, ISO 8601 UTC |
author | Byline (dc:creator, Atom author, JSON Feed authors) |
summary | Plain-text summary, HTML stripped, max 1,000 characters |
contentHtml | Full content HTML, max 20,000 characters, only with includeContent: true |
categories | Categories, tags or labels from the feed |
imageUrl | Lead image from an image enclosure, media:thumbnail, media:content or the first <img> |
enclosures | Media attachments as {url, mimeType, length} |
feedTitle, feedUrl, inputUrl | Feed title, the URL actually read, and the URL you supplied |
feedFormat | rss2, rss1, atom or jsonfeed |
fromArchive | true when the row came from the archive index |
itemKey | Stable identity used by only-new mode: guid/id, else link, else sha1(title + published) |
scrapedAt | When this run read the item |
A RUN_SUMMARY record in the run's key-value store lists every feed with its status (ok or error), HTTP
status, items found, items delivered, new items, archive items, warnings and the error text. Feeds that fail
(a 404, a timeout, a page that is not a feed) are listed there and logged; they never become dataset rows and are
never charged.
Example input
{"feedUrls": ["https://feeds.bbci.co.uk/news/rss.xml","https://hnrss.org/frontpage"],"maxItemsPerFeed": 10,"maxTotalItems": 50,"onlyNew": false,"includeArchive": false}
feedUrls accepts RSS, Atom and JSON Feed URLs, and also ordinary web pages that advertise a feed. Empty
feedUrls reads the BBC News feed, so the actor can be tried in one click. {} works too.
Handy extras: publishedAfter and publishedBefore (ISO dates or datetimes, inclusive), keywords (keep items
whose title or summary contains any of them), includeContent (full content HTML), stateStoreName (which
key-value store keeps the only-new state), maxConcurrency (1 to 20 feeds in parallel) and an optional
proxyConfiguration (no proxy by default).
Example output
Real rows from a run over the saved 2026-10-25 BBC News feed (https://feeds.bbci.co.uk/news/rss.xml, RSS 2.0):
{"itemTitle": "Rosebank: Life on the oil field at the centre of a political storm","link": "https://www.bbc.co.uk/news/articles/cqy8ljkle97ro?at_medium=RSS&at_campaign=rss","guid": "https://www.bbc.co.uk/news/articles/cqy8ljkle97ro#2","publishedAt": "2026-10-25T07:15:38.000Z","updatedAt": null,"author": null,"summary": "Scotland editor James Cook finds out what life is like on board a ship in an untapped oil field awaiting its fate.","contentHtml": null,"categories": [],"imageUrl": "https://ichef.bbci.co.uk/ace/standard/240/cpsprodpb/60a5/live/584f1ed0-cfb0-11f1-9012-0172b9f73a72.jpg","enclosures": [],"feedTitle": "BBC News","feedUrl": "https://feeds.bbci.co.uk/news/rss.xml","inputUrl": "https://feeds.bbci.co.uk/news/rss.xml","feedFormat": "rss2","fromArchive": false,"itemKey": "https://www.bbc.co.uk/news/articles/cqy8ljkle97ro#2","scrapedAt": "2026-10-25T07:44:26.965Z"}
An older item that the live feed had already dropped, delivered from the archive (includeArchive: true), from
https://www.abc.net.au/news/feed/51892/rss.xml:
{"itemTitle": "ATO criticised for 'not going in to bat' for millions of Australians underpaid super","link": "https://www.abc.net.au/news/2026-10-22/australian-workers-criticise-ato-unpaid-superannuation-recovery/107288902","guid": "5f1a3b644e0f236a","publishedAt": "2026-10-21T20:30:23.000Z","author": "Grace Atta","summary": "One in four Australian workers have been underpaid their super. Many of them, along with industry experts, are calling on the tax office to be more proactive in addressing the billions that go unrecovered each year.","categories": [],"imageUrl": "https://live-production.wcms.abc-cdn.net.au/ce033f74c9da1461eca359efc2738372?impolicy=wcms_crop_resize&cropH=1077&cropW=1616&xPos=0&yPos=1&width=862&height=575","feedTitle": "Latest business news","feedUrl": "https://www.abc.net.au/news/feed/51892/rss.xml","inputUrl": "https://www.abc.net.au/news/feed/51892/rss.xml","feedFormat": "rss2","fromArchive": true,"itemKey": "5f1a3b644e0f236a","scrapedAt": "2026-10-25T07:45:28.185Z"}
Only new items on a schedule
Set onlyNew: true on a scheduled task and each run returns just the items that appeared since the previous
run. The actor keeps one record per feed in a named key-value store in your account (stateStoreName, default
rss-feed-reader-state): the item keys it delivered (newest first, capped at 2,000 per feed) plus their
canonical links, so an item is still recognised when a feed changes its guids. The record is written only after
that feed's rows have been pushed, so a failed run does not swallow items.
The first run delivers everything the feed currently holds and remembers it. Point a new task at a different
stateStoreName if you want independent tracking.
Archive history
includeArchive: true asks our news index for the items it still holds for each feed and merges them with the
live items. Items are de-duplicated by identity, sorted newest first, and still respect maxItemsPerFeed,
maxTotalItems and the date filters. Archive rows carry fromArchive: true, and when the live feed cannot be
read at all (feedFormat is then null) the archive rows are still delivered with a note in RUN_SUMMARY.
The archive covers 350+ news publisher feeds (general news, business, tech and regional publishers). Feeds outside the index simply return live items plus a short note. If the archive is unreachable or slow, the run carries on with live items only; the archive never fails a run.
Pricing
Pay per delivered item: $0.50 per 1,000 items ($0.0005 per row), charged only after a row has been pushed. There is no run start fee beyond Apify's $0.00005 minimum actor start event, and Apify platform usage (compute, and proxy if you switch it on) is billed by Apify as usual.
A default run over the two prefilled feeds delivers about 56 items and costs about $0.03. The global
maxTotalItems cap (default 100) keeps a runaway feed list bounded. Error feeds, empty feeds and filtered-out
items are free.
How this compares
Apify Store pricing on the Free plan, checked 25 October 2026:
| Actor | Users (30 days) | Price |
|---|---|---|
This actor (rss-feed-reader) | new | $0.50 per 1,000 items, plus Apify's $0.00005 actor start |
| automation-lab/rss-feed-reader | 41 | $0.035 per run start + $1.15 per 1,000 items |
| santamaria-automations/rss-feed-reader | 43 | $0.001 per run start + $2.00 per 1,000 enriched results |
| technicaldost/rss-feed-scraper | 15 | $8.00 per 1,000 items |
Competitor platform usage is extra, see their listings. Compared with the three of them, this actor charges about half to a sixteenth per item, has no meaningful start fee, and adds only-new mode plus archive history.
Limits and good to know
- One row per delivered item, so 1,000 items in one run cost $0.50.
maxItemsPerFeed(default 50, max 1,000) andmaxTotalItems(default 100, max 100,000) are hard caps.- Requests time out after 25 seconds, follow at most 5 redirects, and are rejected above 15 MB. Network errors, 429 and 5xx are retried three times with a fresh proxy session; other 4xx responses (a 404 feed) are not retried.
- Dates that a feed does not provide (or that cannot be parsed) become
nullinstead of a guess. While a date filter is set, undated items are left out because they cannot be proven to be in range. - Some feeds only publish a truncated list (10 or 20 items).
maxItemsPerFeedcannot return more than the feed itself offers, which is exactly what the archive option helps with. - RSS 2.0, RSS 1.0 (RDF), Atom 1.0 and JSON Feed 1.x are supported. HTML-only pages without a feed link are reported as a feed error.
Responsible use
Only read feeds you are allowed to read, and keep the request rate reasonable: the actor reads each feed URL a
few times per run at most, and maxConcurrency lets you slow it down for small publishers. Respect the
publisher's terms and robots policy, keep attribution (the author, feedTitle and link fields are there for
that) and do not republish full articles: summary is plain text and contentHtml is only included when you ask
for it, truncated to 20,000 characters.