How to turn any RSS or Atom feed into JSON or CSV (bulk, with monitoring)
Updated 2026-10-10 · Tool used: RSS Feed Scraper - RSS, Atom & JSON Feed Reader to JSON/CSV on Apify · Price: $0.30 per 1,000 feed items; failed feeds, filtered, duplicate and already-seen items are free
RSS and Atom are still the cheapest way to follow news sites, blogs, podcasts, YouTube channels and changelogs, but every feed is slightly different: RSS 2.0, RDF, Atom, JSON Feed, HTML inside descriptions, emails in author fields, missing dates. Most online RSS-to-JSON converters handle one feed at a time.
This guide shows how to read hundreds of feeds in one run (or just paste website URLs and let the feeds be discovered), get one normalized row per item (title, link, publish date, author, summary, full text, image, categories, enclosure), filter by keywords and date, and receive only new items on a schedule.
Open RSS Feed Scraper on Apify →Steps
- Add
feeds: feed URLs or plain website URLs (the actor finds their feeds). - Optionally set
keywords,excludeKeywordsandpublishedWithinDays. - Schedule it with Only new items on and send new items to Slack, email, a Google Sheet or an LLM summary.
Example input
{
"feeds": [
"https://www.nasa.gov/feed/",
"blog.cloudflare.com",
"https://github.com/apify/crawlee/releases.atom"
],
"keywords": [
"ai",
"openai",
"nvidia"
],
"publishedWithinDays": 2,
"maxItemsPerFeed": 50,
"includeContent": true
}
Example output (one item, shortened)
{
"feedUrl": "https://techcrunch.com/feed/",
"feedTitle": "TechCrunch",
"feedLink": "https://techcrunch.com/",
"feedType": "rss",
"language": "en-US",
"itemId": "https://techcrunch.com/?p=3175496",
"title": "India rejects Elon Musk’s claim of discrimination over Starlink launch",
"link": "https://techcrunch.com/2026/10/07/india-rejects-elon-musks-claim-of-discrimination-over-starlink-launch/",
"publishedAt": "2026-10-08T06:14:11.000Z",
"updatedAt": null,
"author": "Jagmeet Singh",
"categories": [
"Government & Policy",
"Space",
"SpaceX",
"..."
],
"summary": "Starlink is still awaiting security clearance before it can seek spectrum and begin commercial services in India....",
"contentText": null,
"image": null,
"enclosures": [],
"scrapedAt": "2026-10-08T09:35:33.760Z"
}
Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.
Run it from code
Python
from apify_client import ApifyClient # pip install apify-client
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"feeds": [
"https://www.nasa.gov/feed/",
"blog.cloudflare.com",
"https://github.com/apify/crawlee/releases.atom"
],
"keywords": [
"ai",
"openai",
"nvidia"
],
"publishedWithinDays": 2,
"maxItemsPerFeed": 50,
"includeContent": true
}
run = client.actor("tinyrex/rss-feed-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)JavaScript / Node.js
import { ApifyClient } from 'apify-client'; // npm i apify-client
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/rss-feed-scraper').call({
"feeds": [
"https://www.nasa.gov/feed/",
"blog.cloudflare.com",
"https://github.com/apify/crawlee/releases.atom"
],
"keywords": [
"ai",
"openai",
"nvidia"
],
"publishedWithinDays": 2,
"maxItemsPerFeed": 50,
"includeContent": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);curl (no SDK)
# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~rss-feed-scraper/run-sync-get-dataset-items?format=csv" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"feeds": ["https://www.nasa.gov/feed/", "blog.cloudflare.com", "https://github.com/apify/crawlee/releases.atom"], "keywords": ["ai", "openai", "nvidia"], "publishedWithinDays": 2, "maxItemsPerFeed": 50, "includeContent": true}' > results.csv
Get your API token in Apify Console → Settings → API & Integrations. The free Apify plan includes monthly credit that is enough to try this.
Use it from an AI agent (MCP)
The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=tinyrex/rss-feed-scraper",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
}
Then ask in plain language, e.g. "Rss to json for this list and give me a table".
Pricing
Pay per result: $0.30 per 1,000 feed items; failed feeds, filtered, duplicate and already-seen items are free. You can cap the cost of every run in the run options.
FAQ
Can I convert RSS to JSON for free?
Apify's free plan includes monthly platform credit, which covers thousands of feed items at $0.30 per 1,000. Feeds that fail are not charged.
Does it find the feed if I only have the website?
Yes. It reads the site's feed links and tries the common feed paths (/feed, /rss, /atom.xml and others).
Does it work for podcasts and YouTube?
Yes. Podcast enclosures (audio URL, length, type, duration) and YouTube channel feeds are supported.
Try it on Apify →More guides
- Bulk tech stack lookup: a Wappalyzer / BuiltWith alternative for thousands of domains
- How to scrape Greenhouse, Lever and Ashby jobs (plus Personio, Teamtailor, Recruitee)
- How to export all products from any Shopify store to CSV or JSON
- How to scrape jobs from Workday career sites (myworkdayjobs.com)
- How to export products from any WooCommerce store to CSV or JSON
- How to export EU public tenders from TED (Tenders Electronic Daily) to CSV or JSON
- How to scrape remote jobs from Himalayas, Remote OK, We Work Remotely and more in one run
- How to export open EU funding calls (Horizon Europe, Digital Europe, cascade funding) to CSV or JSON
- How to extract all URLs from a website's sitemap (and find broken links)