RSS Feed Reader & Feed Finder – RSS/Atom to JSON, Full Text
Pricing
from $0.50 / 1,000 feed items
RSS Feed Reader & Feed Finder – RSS/Atom to JSON, Full Text
RSS feed reader for any RSS, Atom or JSON Feed: clean items with title, link, date, author, categories, summary, image and podcast enclosures. Paste a website, YouTube channel, Substack, Medium or GitHub URL and the feed finder discovers its feeds. Optional full article text. No start fee.
Pricing
from $0.50 / 1,000 feed items
Rating
0.0
(0)
Developer
Enes Bulanık
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
RSS feed reader for any RSS, Atom or JSON Feed: clean items with title, link, date, author, categories, summary, image and podcast enclosures. Paste a website, YouTube channel, Substack, Medium or GitHub URL and the feed finder discovers its feeds. Optional full article text. No start fee.
Price: $0.50 per 1,000 items, $2 per 1,000 with full text. No start fee. Discovered feeds are listed for free.
What you get
- Feed formats – RSS 2.0, RSS 0.9x, RSS 1.0 (RDF), Atom 1.0/0.3 and JSON Feed 1.x, in any encoding (UTF-8, ISO-8859-1, Windows-1251…), even slightly broken feeds
- Finds feeds on websites –
<link rel="alternate">tags, "RSS" links on the page, RSS directory pages, platform patterns and common paths (/feed,/rss,/atom.xml,/index.xml,/feed.xml,/feed.json…) - Platform patterns – WordPress, Substack, Medium (users, publications, tags), YouTube (
@handle, channel, playlist), Blogger, GitHub (releases, commits, tags, user activity), Reddit, Tumblr, Ghost, Hugo, Jekyll, Mastodon - Clean items – ISO dates, plain-text summary, author names (e-mail addresses removed), categories, best image (media:thumbnail, media:content, itunes:image, enclosure or first image)
- Podcasts – enclosure
{url, type, length}anddurationSeconds - Full text (optional) – uses the full content when the feed already has it, otherwise downloads the article and extracts the main text with Mozilla Readability
- Deduplication across feeds and an "only newer than" filter for scheduled runs
Use cases
- News & content monitoring – follow dozens of blogs, news sites and newsletters in one dataset.
- AI agents, RAG and LLM pipelines – fresh articles with full text for summarization, classification and embeddings.
- Competitor and industry tracking – company blogs, changelogs and GitHub releases on a schedule.
- Podcast data – episode lists with audio URLs, durations and artwork.
- Lead research for media and PR – find which sites have feeds and how active they are (
itemCount,lastItemAt). - Feed aggregators and newsletters – build daily digests to Slack, email, Google Sheets or Notion via integrations.
How to use it
- Click Try for free / Start.
- Paste feed URLs into Feed URLs and/or websites into Website URLs (find feeds).
- Choose What to do with discovered feeds (
main,allorlistOnly), Max items per feed, an optional Only items newer than date and whether you want full text. - Click Start and download JSON, CSV or Excel, or use the API, Make, Zapier, n8n, Google Sheets or webhooks.
Input
| Field | Type | Description |
|---|---|---|
feedUrls | array | RSS/Atom/JSON feed URLs. A normal web page here is auto-discovered. |
websiteUrls | array | Websites, YouTube channels, Substack/Medium/Blogger, GitHub repos, subreddits – their feeds are discovered. |
discoveryMode | enum | main (default: read each site's main feed), all (read all found feeds), listOnly (only list feeds, free) |
maxItemsPerFeed | integer | Newest items per feed. Default 20, 0 = all |
onlyNewerThan | string | 2026-10-01 or 1 day, 7 days, 2 weeks… |
fullText | boolean | Return full article text. Default false |
includeContentHtml | boolean | Also return the item HTML from the feed. Default false |
dedupe | boolean | Skip duplicate items across feeds. Default true |
proxyConfiguration | object | Optional proxy for sites that block you |
With {} (empty input) the Actor reads two demo feeds (BBC World and Hacker News).
Example input:
{"feedUrls": ["https://feeds.bbci.co.uk/news/world/rss.xml", "https://lexfridman.com/feed/podcast/"],"websiteUrls": ["https://techcrunch.com", "https://www.youtube.com/@LinusTechTips", "https://github.com/nodejs/node"],"discoveryMode": "main","maxItemsPerFeed": 20,"onlyNewerThan": "7 days","fullText": true}
Output
Each row has a type: item (feed entry), feed (a discovered feed, free) or error (free). Real sample output (texts shortened):
Item (podcast episode)
{"type": "item","feedUrl": "https://feeds.npr.org/510289/podcast.xml","feedTitle": "Planet Money","feedType": "rss","siteUrl": "https://www.npr.org/podcasts/510289/planet-money","guid": "422e04c9-24e3-4eca-bae9-fdd71d614953","title": "Charles Ponzi's scheme (plus a new scam)","link": "https://www.npr.org/2026/10/07/nx-s1-5992800/charles-ponzis-scheme-plus-a-new-scam","publishedAt": "2026-10-07T07:00:00.000Z","updatedAt": null,"author": "NPR","categories": [],"summary": "Charles Ponzi was down on his luck. In 1919, the Italian immigrant had spent a decade and a half in the U.S. ...","imageUrl": "https://media.npr.org/assets/img/2023/01/20/charles-ponzi-scheme-madoff-scam_wide-ccb0110316748d0fd134c9400fb3766cc19ca3f1.jpg?s=1280&c=66&f=jpg","enclosure": {"url": "https://tracking.swap.fm/track/.../default.mp3?...&size=24495839","type": "audio/mpeg","length": 24495839},"durationSeconds": 1530,"commentsUrl": null,"fullText": "Charles Ponzi was down on his luck. In 1919, the Italian immigrant had spent a decade and a half in the U.S. ...","wordCount": 292,"fullTextSource": "feed","fullTextStatus": "ok","fullTextError": null,"scrapedAt": "2026-10-07T21:18:25.542Z"}
Discovered feed (free)
{"type": "feed","websiteUrl": "https://jvns.ca/","feedUrl": "https://jvns.ca/atom.xml","feedTitle": "Julia Evans","feedType": "atom","siteUrl": "https://jvns.ca/","itemCount": 20,"lastItemAt": "2026-09-27T00:00:00.000Z","discoveredVia": "link-tag","platform": null,"isMainFeed": true}
Error (free)
{"type": "error","websiteUrl": "https://example.com/","errorCode": "NO_FEED_FOUND","error": "No RSS, Atom or JSON feed found on https://example.com/ (checked <link rel=\"alternate\">, page links, platform patterns and common paths like /feed and /rss.xml)."}
errorCode values: INVALID_INPUT, NOT_FOUND, HTTP_ERROR, NOT_A_FEED, NO_FEED_FOUND, NO_ITEMS, DISCOVERY_FAILED, FEED_FAILED.
fullTextStatus values: ok, paywalled, blocked, no-content, not-html (e.g. YouTube videos), timeout, failed, not-requested.
The dataset has ready-made views in Apify Console: Overview, Full text, Podcasts & media and Discovered feeds & errors.
Pricing
Pay-per-event, no start fee. Platform usage is included.
| Event | Price | When it is charged |
|---|---|---|
item | $0.0005 ($0.50 / 1,000) | Each feed item saved |
full-text | $0.002 ($2 / 1,000) | Instead of item, when full text was returned |
| Discovered feeds, errors | Free |
Each item is charged once: full-text only when fullText is on and text was actually returned, otherwise item.
| Job | Cost |
|---|---|
| 20 items from 2 feeds (default input) | $0.02 |
Find the feeds of 100 websites (listOnly) | $0 |
| 50 feeds × 20 items, daily | $0.50 / day |
| 1,000 articles with full text | $2.00 |
Tip: set Max cost per run in the run options. The Actor stops cleanly at your budget.
Use with AI agents (MCP)
Add the Actor to the Apify MCP server (https://mcp.apify.com?tools=openharvest/rss-feed-reader) or let agents find it with search-actors ("rss feed"). An agent can pass a plain website URL; it does not need to know the feed address.
Example call-actor input for "What did Simon Willison and the Cloudflare blog publish this week? Give me the full posts.":
{"websiteUrls": ["https://simonwillison.net", "https://blog.cloudflare.com"],"onlyNewerThan": "7 days","maxItemsPerFeed": 10,"fullText": true}
Example for "Does this site have an RSS feed?":
{ "websiteUrls": ["https://example-blog.com"], "discoveryMode": "listOnly" }
FAQ
How does feed discovery work?
For each website the Actor checks, in order: platform patterns (YouTube, Medium, Substack, Blogger, GitHub, Reddit…), the page's <link rel="alternate"> tags, links on the page that look like feeds (and RSS directory pages), and finally common paths such as /feed, /rss, /atom.xml, /index.xml and /feed.xml. Every candidate is downloaded and validated, so you only get real, working feeds.
Which feed is the "main" feed?
The first valid feed the site advertises that is not a comments feed. Use discoveryMode: "all" to read every feed (e.g. per-category feeds or a podcast feed).
Where does the full text come from?
If the feed already contains the full article (150+ words in content:encoded, Atom content or JSON Feed content_html), that text is used (fullTextSource: "feed"). Otherwise the article page is downloaded and the main text extracted (fullTextSource: "page"). Paywalled or blocked pages are not bypassed and are charged as a normal item.
Can I get only new items every day?
Yes. Schedule the Actor with onlyNewerThan: "1 day" (or "2 hours" for hourly runs).
Why did a website return NO_FEED_FOUND?
Some sites (for example many big news homepages) do not advertise a feed or block automated requests. If you know the feed URL, put it into feedUrls directly. Reddit and some news sites may rate-limit requests; enabling a proxy helps.
Is the order newest first?
Yes, when the feed has dates. maxItemsPerFeed always keeps the newest items.
Is it legal to read RSS feeds?
RSS and Atom feeds are published so that others can read them automatically. This Actor reads only public feeds and pages, does not log in and does not bypass paywalls. Feed content is still copyrighted by its publishers, so check the publisher's terms before republishing full texts, and comply with laws such as GDPR when you process author names. If you are unsure, consult a lawyer.
Related actors
- Google News Scraper – Headlines, Search & Topics with Real Article URLs and Full Text (coming soon)
- Hacker News Scraper – Stories, Comments, Search & Who Is Hiring (coming soon)
- Telegram Channel Scraper – Public Posts, Views & Media (coming soon)
- Podcast Scraper (coming soon)
Support & feedback
Found a feed that doesn't parse or a site whose feed isn't discovered? Open an issue in the Issues tab with the URL.