RSS Feed Extractor: RSS/Atom → Clean JSON + Markdown
Pricing
Pay per usage
RSS Feed Extractor: RSS/Atom → Clean JSON + Markdown
Turn any RSS or Atom feed into clean, LLM-ready Markdown + structured JSON — one record per feed item (title, link, author, publishedAt, summary, categories, clean contentMarkdown). Optional full-text fetch. Perfect for content monitoring, news aggregation, and RAG over feeds.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Marvin Eguilos
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
RSS Feed Extractor — RSS/Atom → Clean JSON + Markdown for LLM & RAG
Point it at any RSS or Atom feed. Get back one clean, LLM-ready record per item. Title, link, author, publish date, summary, categories, and the full item content as clean Markdown — no HTML soup, no boilerplate. Built for content monitoring, news aggregation, and RAG pipelines that need the content of a feed, not raw XML.
Turn the firehose of RSS/Atom into structured, embed-ready Markdown — one tidy JSON record per article.
✨ What it does
- Universal feed parsing — RSS 2.0, RSS 1.0, and Atom, including
content:encoded,dc:creator, and media fields. - One record per item — each article in each feed becomes its own structured result.
- HTML → Markdown — high-fidelity conversion (GitHub-Flavored Markdown: tables, code blocks, lists, links) via Turndown, cleaned and collapsed.
- Structured JSON —
feedTitle,feedUrl,title,link,author,publishedAt,summary,categories[],contentMarkdown. - Optional full-text fetch — flip
fullTextFetch: trueto fetch each item's link and extract the full article body with Mozilla Readability (great when feeds only ship a teaser). - Robust by design — one bad feed never kills the run. Feeds that fail to fetch/parse return a clean error record in a separate dataset (and are never charged).
- Polite — sends a real descriptive User-Agent and sensible timeouts.
🎯 Use cases
| You want to… | This Actor gives you… |
|---|---|
| Monitor content / competitors | Structured, deduped item records you can diff and alert on. |
| Aggregate news | Many feeds → one uniform JSON shape, ready for a dashboard or DB. |
| Build RAG over feeds | Clean Markdown per article, ready to chunk and embed. |
| Give an AI agent fresh context | Latest items as JSON your agent can reason over — no XML parsing. |
| Archive a feed | Portable, diff-friendly Markdown + metadata per item. |
📥 Input
| Field | Type | Default | Description |
|---|---|---|---|
feedUrls | string[] | — (required) | One or more RSS/Atom feed URLs. Each successful item is one result. |
maxItems | integer | 100 | Max items extracted per feed (as ordered by the feed). |
fullTextFetch | boolean | false | Also fetch each item's link and extract the full article body to Markdown (higher cost). |
Example input
{"feedUrls": ["https://hnrss.org/frontpage","https://www.theverge.com/rss/index.xml"],"maxItems": 100,"fullTextFetch": false}
📤 Output
One dataset item per feed item. Successful example:
{"feedTitle": "The Verge","feedUrl": "https://www.theverge.com/rss/index.xml","title": "Some article headline","link": "https://www.theverge.com/2026/...","author": "Jane Doe","publishedAt": "2026-07-18T14:03:00.000Z","summary": "A one-paragraph plain-text teaser of the article...","contentMarkdown": "Full item content converted to clean Markdown...\n\n[Read more](https://...)","categories": ["Tech", "AI"],"fullTextFetched": false,"fetchedAt": "2026-07-18T15:20:11.954Z"}
Failed feed (returned in a separate failures dataset, not charged):
{"feedUrl": "https://not-a-real-domain-xyz.com/feed.xml","error": "getaddrinfo ENOTFOUND not-a-real-domain-xyz.com","fetchedAt": "2026-07-18T15:20:10.831Z"}
🔌 Call it from code (Apify API)
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~rss-feed-extractor/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"feedUrls":["https://hnrss.org/frontpage"]}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const { defaultDatasetId } = await client.actor('YOUR_USERNAME/rss-feed-extractor').call({ feedUrls: ['https://hnrss.org/frontpage'] });const { items } = await client.dataset(defaultDatasetId).listItems();console.log(items[0].title, items[0].contentMarkdown);
💸 Pricing (Pay-Per-Event)
| Event | Price |
|---|---|
| Actor start | $0.05 per run |
| Extracted feed item | $0.002 per successfully extracted item |
- You only pay for items that succeed — feeds that fail to fetch/parse are never charged.
- 🎁 Free tier: free-plan users' platform usage is covered by Apify, so you can try it and run small jobs at no cost before scaling up.
- Clean structured JSON + per-item Markdown, at a low per-item price — ideal for high-volume monitoring and RAG ingestion.
⚖️ Acceptable use
This is a general-purpose feed-conversion tool: you supply the feed URLs and are responsible for having the right to fetch and use the content you submit. It identifies itself with a descriptive User-Agent, does not target any single platform's private API, and does not harvest personal data as a feature. Please fetch responsibly and comply with each source's terms of service and applicable law.
🧱 Under the hood
Node.js · rss-parser · @mozilla/readability · Turndown (+ GFM) · jsdom · Apify SDK. Stateless — nothing is stored between runs.