rss-feed-converter avatar

rss-feed-converter

Pricing

from $1.00 / 1,000 feed item saveds

Go to Apify Store
rss-feed-converter

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

Ryu Moon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Features

Limited permissions

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 contentMarkdown ready 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/@channel and get the channel's latest videos with video ID, URL, thumbnail and view count. No API key.
  • 🚀 Release tracking. GitHub releases.atom feeds 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.

JobCalculationUSDGBP*
1 feed, latest 50 items50 × $0.001$0.05£0.04
20 news feeds × 50 items1,000 × $0.001$1.00£0.75
Daily monitor, ~30 new posts a day for a month900 × $0.001$0.90£0.67
100 items + full articles100 × ($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-converter and 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-apify from 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 an Authorization: Bearer <APIFY_TOKEN> header:
    { "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=ryumoon-data/rss-feed-converter" } } }
    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
  • 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 (from 1:02:03 or seconds), episode, season, episode type, explicit.
  • 🕒 Dates you can sort on. Every date is ISO 8601 UTC, including RFC 822 dates with EST/PDT/BST zones, wrong weekdays, Sept, Unix timestamps and 2024-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

  1. Paste feed URLs or website URLs (one per line). Mixed lists are fine.
  2. Optionally set Max items per feed, Only items since (7 days, 24 hours, 2026-11-01) and Keywords.
  3. For monitoring, turn on Only new items and give each monitor its own Memory name.
  4. 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

FieldWhat it is
feedTitle, feedUrl, siteUrl, feedFormatWhich feed the item came from. Format is rss, rss-podcast, rdf, atom, atom-youtube or json-feed.
title, link, guidThe item. Relative links are made absolute.
published, updatedISO 8601 UTC dates.
author, authors, categoriesPeople and tags (email-only author fields are dropped).
summaryPlain-text summary, cut at a word boundary (length is configurable).
contentMarkdown (+ optional contentHtml)The item's content as clean Markdown.
articleMarkdown, articleWordCountOnly with Fetch full article.
image, enclosure, enclosuresThumbnail and media files (url, type, length).
podcastdurationSeconds, episode, season, episodeType, explicit, subtitle.
youtubevideoId, videoUrl, channelId, thumbnail, views.
isError, errorCode, error, inputUrlPresent 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.