RSS Feed Reader: Only New Items, Atom & JSON Feed avatar

RSS Feed Reader: Only New Items, Atom & JSON Feed

Pricing

from $1.00 / 1,000 feed items

Go to Apify Store
RSS Feed Reader: Only New Items, Atom & JSON Feed

RSS Feed Reader: Only New Items, Atom & JSON Feed

Read RSS, Atom and JSON Feed URLs into clean JSON. Schedule it with onlyNew and get just the items you have not seen yet, across runs, with keyword filters. Pay per item, so a quiet feed costs nothing. Finds the feed from a website URL.

Pricing

from $1.00 / 1,000 feed items

Rating

0.0

(0)

Developer

JP Data Lab

JP Data Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Security

Limited permissions

Share

Turn any RSS, Atom, RDF or JSON Feed into clean JSON. Run it once, or schedule it and get only the items you have not seen yet. No API key, no browser and no proxy.

Most feed readers on the Store either return every item on every run or leave it to you to remove duplicates. Here onlyNew keeps the record for you, across runs, in your own account. You pay per item delivered, so a feed with nothing new costs nothing beyond the small run start.

Use it to feed news into a Slack channel or a spreadsheet, watch competitors' blogs and regulators' press releases, collect podcast episodes, or give an AI agent fresh articles to summarize.

Quick start

Read a few feeds:

{ "feedUrls": ["https://www.federalreserve.gov/feeds/press_all.xml", "https://www.nasa.gov/feed/"] }

Daily alerts on a topic: schedule this and connect the run to Slack, email or a webhook.

{
"feedUrls": ["https://www.who.int/rss-feeds/news-english.xml"],
"onlyNew": true,
"keywords": ["vaccine", "vaccines"],
"excludeKeywords": ["webinar"]
}

You can paste a website address instead of a feed. If the page links to a feed with <link rel="alternate">, that feed is read, and the result is listed under feedsDiscovered in RUN_SUMMARY.

How onlyNew works

  • First run: outputs the latest items, up to maxItemsPerFeed, and marks the rest of the feed as read. You are not charged for old items.
  • Later runs: outputs only items not seen before. If a feed has more new items than maxItemsPerFeed, the rest wait for the next run, so a burst of posts is not lost.
  • Nothing new: the reader asks the server whether the feed changed (ETag, If-Modified-Since). If not, the feed is not downloaded again.
  • Changing keywords or excludeKeywords starts a fresh record for that feed. Items are matched by guid, then by link, then by title, date and text.
  • An item whose text changes keeps its guid, so it does not count as new.

The record is saved in a key-value store named rss-feed-reader-seen in your Apify account. Delete it to start again.

Output

One item per article or episode:

{
"id": "rss:4f1c2a9d0b7e6c3a81d5e2f0",
"feedUrl": "https://www.who.int/rss-feeds/news-english.xml",
"feedTitle": "News (English) - World Health Organization",
"feedType": "rss",
"feedLanguage": "en",
"title": "New technical package on air quality",
"link": "https://www.who.int/news/item/01-11-2026-example",
"guid": "https://www.who.int/news/item/01-11-2026-example",
"publishedAt": "2026-11-01T12:00:00Z",
"updatedAt": null,
"summary": "First 2,000 characters of the text.",
"content": "Full text as plain text, up to 50,000 characters.",
"contentHtml": "<p>The same text as HTML, up to 100,000 characters.</p>",
"categories": ["Air pollution"],
"imageUrl": "https://example.org/photo.jpg",
"enclosures": [{ "url": "https://example.org/episode.mp3", "type": "audio/mpeg", "length": 12345678 }],
"discoveredFrom": null,
"fetchedAt": "2026-11-02T00:00:00Z"
}

Dates are UTC. feedType is rss, atom, rdf or json. Fields the feed does not provide are null.

Author names are not included. Bylines are personal data and most uses do not need them. Text in the title and body is passed on as the feed publishes it.

Input

FieldDefaultMeaning
feedUrls3 public feedsFeed or website URLs, up to 2,000
onlyNewfalseOutput only items not seen in earlier runs
keywordsnoneKeep items containing any of these words
excludeKeywordsnoneLeave out items containing any of these words
publishedWithinDays0Only items from the last N days. Items with no date are kept
publishedAfternoneOnly items after this date or time. Overrides the days
includeContenttrueAdd content and contentHtml
maxItemsPerFeed20Newest items first
maxItems1000Total for the run

Keywords ignore case and accents and look in the title, text and categories. English words match whole words, so ai does not match said, and bank does not match banks: add both forms. Japanese and other text without spaces matches anywhere.

When a feed fails

One bad feed does not stop the run, and it costs nothing. RUN_SUMMARY lists each one under feedsFailed with the reason. The run fails only if no feed could be read.

{
"feedsRequested": 3,
"feedsRead": 2,
"feedsUnchanged": 0,
"feedsFailed": [{ "url": "https://example.org/old.xml", "reason": "HTTP 404" }],
"feedsNotReached": 0,
"firstReadFeeds": 2,
"itemsRead": 40,
"pushed": 20,
"seenBefore": 0,
"filteredOut": 12,
"overLimit": 8
}

feedsNotReached counts feeds left unread because the run hit maxItems or your spending limit. overLimit counts matching items left out by the limits.

What it respects

  • robots.txt. A feed the site disallows is skipped and reported as disallowed by robots.txt. This includes feeds on sites that forbid robots altogether, such as Reddit. There is no switch to override it.
  • Server load. At least one second between requests to the same site, longer if the site's Crawl-delay asks for it, up to 5 seconds. Failed requests are retried twice at most.
  • Honest identification. Requests carry a descriptive User-Agent with a link to this page. There is no proxy and no browser disguise, so a feed that blocks cloud servers will fail with HTTP 403 and be reported.

Limits

  • A feed holds only what the publisher puts in it, usually the latest 10 to 100 items. This Actor cannot reach older history. Run it on a schedule to build your own archive.
  • Feeds behind a login are not supported.
  • Feeds over 20 MB are skipped.
  • Only public addresses can be read, not internal ones.

The content belongs to its publishers. You are responsible for how you use it.

Pricing

Pay per item delivered, plus a small charge per run. Failed feeds, items already seen and unchanged feeds are free. Set maxItems or a spending limit in the run options to control the cost.