rss-feed-converter
Pricing
from $1.00 / 1,000 feed item saveds
rss-feed-converter
Convert RSS, Atom, RDF, JSON Feed, podcast and YouTube channel feeds into clean, deduplicated JSON and Markdown. Paste a website and it finds the feed. "Only new items" mode for schedules. $1 per 1,000 items, failed feeds free.
Pricing
from $1.00 / 1,000 feed item saveds
Rating
0.0
(0)
Developer
Ryu Moon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Features
Share
RSS Feed to JSON & Markdown – Atom, Podcasts, YouTube
Turn any RSS, Atom, podcast or YouTube channel feed (or just a website address) into clean, deduplicated JSON and Markdown, for $1 per 1,000 items. Feeds that fail are free.
Who it's for
Marketers, newsletter writers, researchers, podcast and media monitors, and AI builders who need a steady stream of fresh posts as tidy data, without writing a feed parser.
What people use it for
- 📰 News and competitor monitoring. Schedule it daily with Only new items on and get just the posts you haven't seen, in Google Sheets, Slack or Notion.
- 🧠 AI and RAG pipelines. Every item comes with
contentMarkdownready for ChatGPT, Claude or a vector database. Turn on Fetch full article when a feed only has teasers. - 🎙️ Podcast catalogues. Episode audio URL, file size, duration in seconds, episode and season numbers, explicit flag.
- 📺 YouTube channel tracking. Paste
https://www.youtube.com/@channeland get the channel's latest videos with video ID, URL, thumbnail and view count. No API key. - 🚀 Release tracking. GitHub
releases.atomfeeds become clean Markdown changelogs.
Real sample output
From a real run on the Planet Money podcast feed https://feeds.npr.org/510289/podcast.xml (6 Nov 2026, shortened):
{"feedTitle": "Planet Money","feedFormat": "rss-podcast","title": "Inside the insurance industry’s destruction lab","link": "https://www.npr.org/2026/11/06/nx-s1-6032860/fire-insurance-industry-destruction-lab","guid": "4dca2240-f1f8-47b7-a504-6aaae5753f74","published": "2026-11-06T22:30:00.000Z","summary": "When you think of someone burning down a house for insurance purposes, you don’t imagine it would ever be the insurance company itself lighting the match…","enclosure": { "url": "https://…/default.mp3", "type": "audio/mpeg", "length": 31091653 },"podcast": { "durationSeconds": 1943, "episodeType": "full", "explicit": "no" },"wordCount": 321}
And from https://github.com/nodejs/node/releases.atom (Atom), the release notes arrive as Markdown:
{"feedFormat": "atom","title": "2026-10-29, Version 27.0.0-alpha.0.0.0 (Alpha), @RafaelGSS","link": "https://github.com/nodejs/node/releases/tag/v27.0.0-alpha.0.0.0","published": "2026-10-29T18:36:37.000Z","author": "RafaelGSS","contentMarkdown": "### Notable Changes\n\n#### V8 15.6\n\nThe V8 engine is updated to version 15.6.75.13, up from 14.6 in Node.js 26. Highlights:\n\n- New language features enabled by default: `Math.sumPrecise()`…"}
What it costs (real prices)
Pay per event: $0.001 per item saved. No start fee. Feeds that fail, duplicates, items removed by your filters and items you already had (Only new items) are free. Fetch full article is optional and adds $0.002 per article, only when the article was fetched successfully.
| Job | Calculation | USD | GBP* |
|---|---|---|---|
| 1 feed, latest 50 items | 50 × $0.001 | $0.05 | £0.04 |
| 20 news feeds × 50 items | 1,000 × $0.001 | $1.00 | £0.75 |
| Daily monitor, ~30 new posts a day for a month | 900 × $0.001 | $0.90 | £0.67 |
| 100 items + full articles | 100 × ($0.001 + $0.002) | $0.30 | £0.22 |
*GBP at 1 USD = £0.74711 (ECB rate, 6 Nov 2026). Apify bills in USD. Platform usage for this lightweight HTTP-only Actor runs at 256 MB by default.
Integrations
All recipes below use Apify's own official integrations. You need a free Apify account.
- Zapier. Add Apify as the action in a Zap, pick Run Actor (or Run Task for a saved example), choose
ryumoon-data/rss-feed-converterand paste the input JSON. Then add Fetch dataset items to pass the results to Google Sheets, Slack, Notion and so on. Synchronous runs in Zapier time out after 30 seconds, so for big batches use the Finished Actor run trigger in a second Zap. Apify docs: Zapier - Make. Add the Apify module Run an Actor with "Run synchronously" set to Yes, then Get Dataset Items using the run's default dataset ID, then e.g. Google Sheets "Bulk Add Rows". For long runs, use the Watch Actor Runs trigger instead. Apify docs: Make
- n8n. Install the Apify node (
@apify/n8n-nodes-apifyfrom Community Nodes on self-hosted, or search "Apify" in the nodes panel on n8n Cloud). Add an Apify API key or OAuth2 (Cloud) credential, then use it as an action to run this Actor, or as the On new Apify Event trigger to process results when a run finishes. Apify docs: n8n - MCP (Claude, ChatGPT and other AI agents). Add Apify's hosted MCP server to your client. To load only this Actor, use
https://mcp.apify.com?tools=ryumoon-data/rss-feed-converter. The first time you connect, your browser opens so you can sign in to Apify. Alternatively, send anAuthorization: Bearer <APIFY_TOKEN>header:
Your assistant can then run it from a prompt like "Get this week's posts from these 5 blogs and summarise them". Apify docs: MCP server{ "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=ryumoon-data/rss-feed-converter" } } } - Schedules. In Apify Console, open a saved task and add a Schedule (e.g. every morning at 7:00). With Only new items on, each run returns and charges only posts you haven't had yet.
Convert RSS to JSON, Atom to JSON and RSS to Markdown in bulk. Paste feed URLs or plain website addresses, set a date filter or keywords, and download clean items as JSON, CSV, Excel or via API. Supports RSS 2.0, RSS 1.0 (RDF), Atom, JSON Feed, podcast (iTunes) feeds and YouTube channel feeds.
$1 per 1,000 items. No start fee. Failed feeds are free. No API keys, no login, no browser.
Why this RSS feed converter?
- 🔎 Paste a website, get its feed. It reads the page's
<link rel="alternate">tags, then tries common paths (/feed,/rss.xml,/atom.xml,/index.xml,/feed.json…). YouTube channel pages (/@name) are turned into the channel's video feed automatically. - 🔁 Only new items, for schedules. It remembers what it already delivered, so a daily run returns (and charges) only genuinely new posts.
- 🧹 Real deduplication. The same story in two feeds is saved once. Matching uses the GUID, the link with
utm_tracking removed, and the media URL. Podcasts whose episodes all link to the same show page are not wrongly merged. - 📝 Markdown, not messy HTML. Feed content becomes clean Markdown with absolute links and tracking pixels removed. Optional raw HTML too.
- 🎙️ Podcast fields built in: audio URL, type and size,
durationSeconds(from1:02:03or seconds), episode, season, episode type, explicit. - 🕒 Dates you can sort on. Every date is ISO 8601 UTC, including RFC 822 dates with
EST/PDT/BSTzones, wrong weekdays,Sept, Unix timestamps and2024-03-05 10:00:00. - ✅ Bad feeds don't break your run. A dead link, an HTML page or a broken feed becomes one free error row with a clear
errorCode(NO_FEED_FOUND,HTTP_404,NETWORK_ERROR,NOT_A_FEED…). The rest of the batch carries on. - 🛡️ Safe XML. Entity-expansion tricks in hostile feeds are not expanded, and big feeds aren't rejected by entity limits.
How to use it
- Paste feed URLs or website URLs (one per line). Mixed lists are fine.
- Optionally set Max items per feed, Only items since (
7 days,24 hours,2026-11-01) and Keywords. - For monitoring, turn on Only new items and give each monitor its own Memory name.
- Click Start, then export the dataset or call it from the API, Make, Zapier, n8n or an AI agent.
Input example
{"urls": ["https://techcrunch.com", "https://feeds.npr.org/510289/podcast.xml", "https://www.youtube.com/@mkbhd"],"maxItemsPerFeed": 20,"sinceDate": "7 days","keywords": ["AI", "startup"],"onlyNewItems": true,"stateKey": "tech-monitor"}
Output fields
| Field | What it is |
|---|---|
feedTitle, feedUrl, siteUrl, feedFormat | Which feed the item came from. Format is rss, rss-podcast, rdf, atom, atom-youtube or json-feed. |
title, link, guid | The item. Relative links are made absolute. |
published, updated | ISO 8601 UTC dates. |
author, authors, categories | People and tags (email-only author fields are dropped). |
summary | Plain-text summary, cut at a word boundary (length is configurable). |
contentMarkdown (+ optional contentHtml) | The item's content as clean Markdown. |
articleMarkdown, articleWordCount | Only with Fetch full article. |
image, enclosure, enclosures | Thumbnail and media files (url, type, length). |
podcast | durationSeconds, episode, season, episodeType, explicit, subtitle. |
youtube | videoId, videoUrl, channelId, thumbnail, views. |
isError, errorCode, error, inputUrl | Present on free error rows only. |
A run summary (feeds read, items saved, duplicates, filtered, errors, charges) is saved as SUMMARY in the key-value store.
Tips and limits
- Feeds usually hold only the latest 10–100 items; that is a limit of the site's feed, not this Actor. Schedule it to build history over time.
- Fetch full article opens each item's web page. Use it only on sites you are allowed to process. For crawling whole sites, use Website to Markdown for AI, LLM & RAG.
- Feeds are public, so a proxy is rarely needed. If a site blocks you, add one under Proxy.
FAQ
Is it legal? It reads public feeds that sites publish so they can be read by software. Publishing someone else's full content may need their permission; check the site's terms.
Can I get older items than the feed shows? No. A feed only lists recent items. Use Only new items on a schedule to keep a complete history from now on.
What if a feed is broken? You get one free error row explaining why, and the other feeds still run.
Related: YouTube Transcript Scraper to get the full spoken text of the videos this Actor finds in a channel feed, and Website to Markdown for AI, LLM & RAG to turn whole websites into Markdown for the same AI pipelines.