RSS Feed Reader API: RSS & Atom to JSON & CSV avatar

RSS Feed Reader API: RSS & Atom to JSON & CSV

Pricing

$0.85 / 1,000 feed items

Go to Apify Store
RSS Feed Reader API: RSS & Atom to JSON & CSV

RSS Feed Reader API: RSS & Atom to JSON & CSV

Reads RSS, Atom, RDF and JSON Feed URLs (or finds the feed of any website), merges, deduplicates and filters items by keyword and date into one clean schema: title, URL, date, author, categories, excerpt, image. $0.85 per 1,000 items.

Pricing

$0.85 / 1,000 feed items

Rating

0.0

(0)

Developer

Gabriel Jossic

Gabriel Jossic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

RSS Feed Reader API that turns any list of RSS, Atom, RDF or JSON Feed URLs into one clean, deduplicated dataset: item title, URL, publication date (normalized to ISO 8601), author byline, categories, a short plain-text excerpt and an image, newest first across all feeds. It is an RSS to JSON / CSV / Google Sheets API in one step.

Give it feed URLs or plain website URLs: for a website, the Actor finds the feed itself from the page's <link rel="alternate"> tag. Filter by keywords, excluded keywords and publication date. Export to JSON, CSV, Excel or Google Sheets, call it from the Apify API, schedule it every hour or every morning, push new items to Slack or a webhook, or let an AI agent use it through MCP.

No login, no API key, no browser. Feeds are what publishers put out for machines, so this is the cleanest and lightest way to follow a site. The prefilled input (Ars Technica, GOV.UK news and the GitHub Blog found from its homepage) returns 10 items in about one second.

What data does the RSS Feed Reader API return?

FieldExample
feedTitle, feedUrl, siteUrlArs Technica - All content, the feed actually read, https://arstechnica.com/
itemTitleTitle of the item (for title-less microblog items: the start of its text)
urlLink to the article, tracking parameters (utm_*, fbclid, mc_eid…) removed
guidThe item's id as published (<guid>, Atom <id>, JSON Feed id)
publishedAt, updatedAtISO 8601 in UTC, whatever format the feed used
authorByline as published in the feed (several authors joined with commas)
categoriesCategories / tags / subjects of the item
excerptThe first ≤ 300 characters of the summary, plain text, HTML removed
imageUrlFrom media:content, media:thumbnail, an image enclosure, itunes:image or the first real image in the item's HTML; optionally the article's og:image
languageItem or feed language (en-US, fr, de…)
scrapedAtWhen the row was collected

Every feed format comes out in the same schema. Fields a feed does not provide are null or []. Nothing is guessed. Full article bodies are never output: you get metadata, a 300-character excerpt and the link.

How to use the RSS Feed Reader API

  1. Click Try for free.
  2. Paste your feeds: feed URLs (https://feeds.arstechnica.com/arstechnica/index) or website URLs (github.blog, https://www.theverge.com). Optionally add keywords, exclude keywords or a published after date.
  3. Click Start. Download the items from the Output tab as JSON, CSV or Excel, or fetch them through the API.

Input example:

{
"feeds": [
"https://www.theverge.com",
"https://blog.cloudflare.com/rss/",
"https://www.europarl.europa.eu/rss/doc/press-releases/en.xml",
"https://hnrss.org/frontpage"
],
"keywords": ["AI", "data protection"],
"excludeKeywords": ["sponsored"],
"publishedAfter": "1 day",
"maxItemsPerFeed": 50,
"maxItems": 200
}

Input fields

FieldDefaultWhat it does
feeds3 feeds (prefilled)RSS 2.0, Atom, RDF (RSS 1.0) or JSON Feed URLs, or website URLs. For a website, the feed is found from the <link rel="alternate"> tag of that page, then of the homepage, then at the usual addresses (/feed, /rss, /feed.xml, /rss.xml, /atom.xml, /index.xml, /feed.json). feed:// links and bare domains work. Up to 1,000 per run.
keywordsnoneKeep an item if its title or summary contains one of these keywords (whole words, case- and accent-insensitive, plural accepted; every word of a multi-word keyword must appear). AI matches "AI agents", not "said" or "air".
excludeKeywordsnoneDrop an item if its title or summary contains one of these keywords.
publishedAfternoneA date (2026-01-31) or a relative period (12 hours, 7 days, 2 weeks).
maxAgeDaysnoneShortcut: only items from the last N days. If both date filters are set, the stricter one wins.
maxItemsPerFeed100 (4 prefilled)Cap per feed, newest first, so one busy feed does not crowd out the others.
maxItems100 (10 prefilled)Total cap after deduplication, newest first across all feeds. You pay only for these rows.
fetchOgImagefalseFor items whose feed has no image, open the article page once and read its og:image meta tag (robots.txt permitting). One extra request per such item.

Output example

{
"feedTitle": "Ars Technica - All content",
"feedUrl": "https://feeds.arstechnica.com/arstechnica/index",
"siteUrl": "https://arstechnica.com/",
"itemTitle": "39-year-old unvaccinated woman becomes 6th measles death in Pennsylvania",
"url": "https://arstechnica.com/health/2026/10/39-year-old-unvaccinated-woman-becomes-6th-measles-death-in-pennsylvania/",
"guid": "https://arstechnica.com/health/2026/10/39-year-old-unvaccinated-woman-becomes-6th-measles-death-in-pennsylvania/",
"publishedAt": "2026-10-12T21:54:35.000Z",
"updatedAt": null,
"author": "Beth Mole",
"categories": ["Health", "measles", "outbreak", "Pennsylvania"],
"excerpt": "As of Friday, state health officials reported 1,136 cases across 41 counties.",
"imageUrl": "https://cdn.arstechnica.net/wp-content/uploads/2024/03/GettyImages-930111236-1152x648.jpeg",
"language": "en-US",
"scrapedAt": "2026-10-13T03:46:18.515Z"
}

A real record from the prefilled run on 2026-10-13. A RUN_SUMMARY record in the key-value store gives one status row per feed: the feed URL actually read, how it was found (direct, link-tag, homepage-link-tag, common-path), its format, the number of items in the feed and kept, and why the others were dropped (keywords, date, duplicates, per-feed cap). A broken feed gets a status there (not-found, robots-disallowed, blocked, no-feed-found, not-a-feed, parse-error…) instead of crashing the run.

How much does it cost to read RSS feeds?

$0.85 per 1,000 items. You pay only for items saved to the dataset, after filters and deduplication. No start fee; compute is included.

You getYou pay
10 items (prefilled input)$0.0085
New items from 20 feeds every hour for a month (~5,000 items)$4.25
1,000 items$0.85
100,000 items$85

Set maxItems to cap a run. Apify's free plan credit covers thousands of items a month.

How to get new RSS items every day (or every hour)

Create a schedule in Apify with publishedAfter matching the interval: "1 day" for a daily run, "1 hour" (or "2 hours" to leave a margin) for an hourly one. Each run returns only what was published since. Then connect an integration: Slack (post each new item to a channel), Google Sheets (append rows), email, Zapier, Make, n8n, or a webhook to your own endpoint on "run succeeded". That is a news or competitor alert in five minutes of setup.

Feeds report the publication date, and a few publishers backdate or re-date items. If you need strict "never seen before" alerts, keep the guid or url of what you already sent and skip them on your side.

Use the RSS Feed Reader API with AI agents (MCP)

Claude, Cursor and other MCP clients can call this Actor through the official Apify MCP server. Add NORESPI/rss-feed-reader to your Apify MCP configuration, then ask things like "what did the GitHub Blog, Cloudflare and Ars Technica publish about AI agents this week?". The agent gets titles, dates, links and excerpts, and opens only the articles worth reading.

Use cases

  • News monitoring: follow 50 news, government and regulator feeds, keep only items that mention your company, product or topic, and get them in Slack.
  • Competitor and industry watch: competitor blogs, changelogs and press rooms in one sheet, newest first.
  • Job feeds: many job boards and ATS pages publish RSS; filter by keyword and get new openings daily.
  • Content curation and newsletters: collect candidates for a weekly digest with a link and a 300-character teaser.
  • RSS to JSON / CSV / Google Sheets: convert any feed (RSS 0.9x, 2.0, RSS 1.0/RDF, Atom 0.3 and 1.0, JSON Feed 1 and 1.1) to one stable schema for your own app, without writing a parser.
  • Feed health checks: the RUN_SUMMARY tells you which feeds are dead, moved, blocked or empty.

Limits (stated up front)

  • A feed only holds its latest items, usually 10 to 50. The Actor reads what the feed contains at run time; it does not go back further. For full history, schedule it and keep the results.
  • No full text. Articles are their authors' work: the excerpt is the first 300 characters of the feed's summary (or of the body when there is no summary), as plain text.
  • imageUrl comes from the feed and is null when the feed carries none (GOV.UK and the GitHub Blog, for example). Turn on fetchOgImage to read the article's og:image instead; that is one extra request per item and often a generic site card for government pages.
  • Dates are the publisher's. Atom feeds without a <published> date (GOV.UK's, for one) get publishedAt from <updated>. Items without any date are kept, sorted last, and dropped when a date filter is set (counted in RUN_SUMMARY).
  • Website discovery picks one feed per site: the first non-comments feed the page declares. If a site has several (per category, per author), give the specific feed URL.
  • robots.txt is checked at runtime for every URL, including each redirect, the homepage and the usual feed addresses. A disallowed feed is skipped with robots-disallowed, never fetched. Reddit and NHK, for example, disallow their RSS paths to robots like this one. A host whose robots.txt is unreachable (5xx) is not read at all.
  • Polite by design: at most 2 parallel requests per host, a pause between requests, Crawl-delay respected. A host that answers 401/403, or 429 after retries with back-off, is left alone for the rest of the run. No proxies, no browser, nothing circumvented: a feed behind a login, a CAPTCHA or an anti-bot wall gets a blocked status.
  • Malformed feeds are read leniently (bad entities, unclosed tags, junk before the XML, wrong charset declarations, gzip files); an item too broken to parse is skipped and the feed is flagged in RUN_SUMMARY. Feeds over 15 MB are skipped.
  • Some publishers restrict what you may do with their feed content (see the feed's copyright notice or the site's terms). Reading it here does not change that: you are responsible for how you reuse it.

Privacy

Item metadata only. The author byline is kept as published, because it is the public signature of a published work. E-mail addresses, phone numbers and personal profile links (LinkedIn, X/Twitter, Instagram, Calendly, Telegram, WhatsApp…) are removed from every text field: title, excerpt, author, categories, feed title. RSS bylines like jane@site.com (Jane Doe) become Jane Doe; a guid that is an e-mail-style id is dropped. Mailchimp and other tracking parameters are stripped from URLs.

FAQ

Do I need an API key or an account?

No. Feeds are public. Paste the URLs and run.

Which feed formats are supported?

RSS 0.9x and 2.0, RSS 1.0 (RDF), Atom 0.3 and 1.0, JSON Feed 1 and 1.1, including Media RSS, iTunes podcast tags, Dublin Core and FeedBurner extensions. Any character encoding (UTF-8, ISO-8859-x, windows-125x, Shift_JIS, UTF-16…) and gzip.

What if I only have the website address?

Paste it. The Actor reads the page's <link rel="alternate"> feed declaration, then the homepage's, then tries the usual feed addresses. RUN_SUMMARY shows which feed was found and how.

How are duplicates removed?

Two items are the same if they share a guid (scoped to the feed when it is not a URL) or point to the same article URL (ignoring www., trailing slashes and tracking parameters). The newest copy is kept. Items that all link to the site's homepage are not merged.

Can I export RSS to CSV, Excel or Google Sheets?

Yes, from the Output tab, the API, or the Google Sheets integration. In CSV, categories are spread over numbered columns (categories/0, categories/1…).

Why is a feed missing from my results?

Open the RUN_SUMMARY record: each feed has a status and a detail line, e.g. robots-disallowed, not-found, no-feed-found (the website declares no feed), blocked (the server refused robots) or ok with the number of items dropped by your filters.

Is this Actor affiliated with any of the feeds' publishers?

No. It is an independent tool, not affiliated with, endorsed or sponsored by Ars Technica, GOV.UK, GitHub or any publisher whose feed you read. It reads the public feeds they publish for feed readers.

Questions, bugs or a feature you need: open an issue in the Issues tab.