RSS / XML Scraper avatar

RSS / XML Scraper

Pricing

Pay per usage

Go to Apify Store
RSS / XML Scraper

RSS / XML Scraper

Meet the RSS / XML Scraper: the most advanced actor for parsing any RSS feed or XML file. It effortlessly extracts clean, structured data from even the most complex sources. Your ultimate tool for content aggregation, data monitoring, and content analysis.

Pricing

Pay per usage

Rating

5.0

(5)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

6

Bookmarked

115

Total users

8

Monthly active users

2 days ago

Last modified

Share

What does RSS XML Feed Scraper do?

RSS XML Feed Scraper collects feed entries from RSS, Atom, RDF, JSON Feed, OPML, and sitemap URLs and writes them to an Apify dataset. Add one or more feed URLs, set an entry limit, and run the Actor. Each run returns feed metadata plus article records with titles, links, dates, authors, tags, media links, and optional full article text.

The Actor also accepts ordinary website URLs. It scans the page for feed links, checks each candidate, and collects the valid feeds. If a previously working feed path starts serving an HTML page, the Actor looks for the publisher's current feed instead of stopping at the first failed request.

Why use RSS XML Feed Scraper?

  • One dataset for many publishers. Collect BBC, Guardian, TechCrunch, Reddit, WordPress, and personal blogs in a single run.
  • Format detection without setup. RSS, Atom, RDF, JSON Feed, OPML, and sitemaps are recognized from the response, so you do not need to sort URLs by format.
  • Recovery when a publisher blocks a request. The Actor retries temporary failures, switches request profiles when a desktop request is rejected, and falls back to a direct request when a proxy fails.
  • Article text when you need it. Keep short feed summaries for fast monitoring, or fetch the linked page for full text and clean HTML.
  • Scheduled monitoring. Run hourly, daily, or weekly and compare new entries against your stored dataset.

What data can you extract?

FieldDescription
item_typefeed_meta for the feed record, entry for an article record
feed_urlFeed that produced the record
titleFeed title or article headline
linkFeed homepage or article URL
descriptionTeaser or description from the feed
contentEntry content as plain text
content_htmlEntry content as HTML when the feed provides it
author / authorsPrimary author and author list
publishedPublication time in ISO 8601 when parseable
updatedLast update time in ISO 8601 when parseable
tagsCategories and tags from the entry
image_urlBest available image from media fields
enclosure_urlPodcast, video, or attachment URL
full_textFull article text from the linked page
full_htmlCleaned article HTML
meta_descriptionArticle meta description
top_imagePrimary image found on the article page
content_sourcefeed_payload or article_page
errorFailure reason when a URL cannot be read

Feed records also include language, generator, feed_image, managing_editor, webmaster, entries_count, feed_type, and parsed_at.

Supported feed formats

  • RSS 2.0, including content:encoded, dc:creator, media, and enclosure fields.
  • Atom, including alternate links, summaries, content, and author lists.
  • RDF and RSS 1.0 feeds.
  • JSON Feed, including content_html, content_text, authors, and attachments.
  • WordPress REST post collections at /wp-json/wp/v2/posts.
  • OPML subscription lists.
  • XML sitemaps and sitemap indexes.
  • Microformats h-feed pages that expose h-entry items in HTML.

How to use RSS XML Feed Scraper

  1. Open the Actor on Apify.
  2. Add feed URLs or website URLs under Feed or Website URLs.
  3. Set Maximum Entries per Feed. Use a small number for a first run.
  4. Leave Extract Full Article Content off for fast metadata collection.
  5. Run the Actor and download the dataset as JSON, CSV, Excel, or XML.

Input Parameters

ParameterTypeRequiredDefaultDescription
urlsArrayNo["https://feeds.bbci.co.uk/news/rss.xml"]Feed URLs or website URLs. One URL per line.
extractContentBooleanNofalseFetch every linked article and add full text and article metadata.
autoExpandSnippetsBooleanNotrueFetch the full article when an entry contains only a short summary.
discoverFeedsBooleanNofalseTreat website URLs as discovery targets before collecting entries.
maxEntriesIntegerNo20Maximum entries per feed. Set to 0 to keep every entry.
proxyConfigurationObjectNo{"useApifyProxy": false}Optional proxy settings. Apify Proxy stays off by default.

Output Data

FieldTypeDescription
item_typeStringRecord type: feed_meta or entry
feed_urlStringSource feed URL
titleStringFeed or article title
linkStringFeed homepage or article URL
idStringEntry ID or GUID from the feed
descriptionStringShort description from the feed
summaryStringSummary field when the feed provides one
contentStringEntry content as plain text
content_htmlStringEntry content as HTML
description_htmlStringDescription HTML when available
summary_htmlStringSummary HTML when available
authorStringPrimary author
authorsArrayAuthor list
creatorStringCreator field from the feed
publishedStringPublication date in ISO 8601 when parseable
updatedStringUpdate date in ISO 8601 when parseable
raw_pub_dateStringOriginal date string from the feed
raw_iso_dateStringOriginal ISO date string from the feed
tagsArrayCategories and tags
commentsStringComment URL when the feed provides one
source_titleStringSource channel title
source_urlStringSource channel URL
enclosure_urlStringAttachment URL
enclosure_typeStringAttachment MIME type
enclosure_lengthStringAttachment size
media_content_urlStringMedia content URL
media_thumbnail_urlStringMedia thumbnail URL
image_urlStringBest available image URL
full_textStringFull article text
full_htmlStringCleaned article HTML
meta_descriptionStringArticle meta description
keywordsArrayKeywords found by the article extractor
top_imageStringPrimary article image
publish_dateStringArticle publish date from the linked page
content_sourceStringWhere full content came from
content_errorStringFull content failure reason, if any
errorStringFeed or URL failure reason, if any
languageStringFeed language
generatorStringFeed generator
feed_imageStringFeed image or logo
managing_editorStringManaging editor field
webmasterStringWebmaster field
entries_countIntegerTotal entries available in the feed
feed_typeStringrss, atom, rdf, json, sitemap, or hfeed
parsed_atStringFeed parse timestamp
collected_atStringRecord collection timestamp

Usage Examples

Collect one feed

{
"urls": [
"https://feeds.bbci.co.uk/news/rss.xml"
],
"maxEntries": 20
}

Collect several publishers in one run

{
"urls": [
"https://feeds.bbci.co.uk/news/rss.xml",
"https://www.theguardian.com/world/rss",
"https://techcrunch.com/feed/",
"https://hnrss.org/frontpage"
],
"maxEntries": 50
}

Fetch full article text

{
"urls": [
"https://www.theguardian.com/world/rss"
],
"extractContent": true,
"maxEntries": 10
}

Find the feed for a website

{
"urls": [
"https://www.nasa.gov"
],
"discoverFeeds": true,
"maxEntries": 10
}

Keep only new entries for a daily job

Run the same input every day and compare the dataset against your stored records. The Actor removes duplicate entries inside a run, so repeated feed URLs and repeated discovery candidates do not inflate the dataset.

Sample Output

{
"item_type": "entry",
"feed_url": "https://feeds.bbci.co.uk/news/rss.xml",
"title": "Example Article Title",
"link": "https://www.bbc.co.uk/news/articles/example",
"id": "https://www.bbc.co.uk/news/articles/example",
"description": "Short teaser from the feed.",
"summary": "Short teaser from the feed.",
"content": "Short teaser from the feed.",
"author": "Reporter Name",
"authors": [
"Reporter Name"
],
"published": "2026-10-22T12:17:44.000Z",
"raw_pub_date": "Thu, 22 Oct 2026 12:17:44 GMT",
"tags": [],
"image_url": "https://example.com/image.jpg",
"full_text": "Expanded article text from the linked page.",
"full_html": "<p>Expanded article text from the linked page.</p>",
"content_source": "article_page",
"collected_at": "2026-10-22T13:41:48.910Z"
}

Tips for Best Results

  • Start with maxEntries at 10 or 20 to check titles, links, and dates.
  • Large podcast and archive feeds stay fast because the Actor reads only enough entries to satisfy maxEntries. Set maxEntries to 0 when you need the entire feed.
  • Keep extractContent off for monitoring jobs that only need headlines and summaries.
  • Turn autoExpandSnippets off when you want feed-only collection with the fastest runtime.
  • Use direct feed URLs when you know them. Use discoverFeeds when you only have a homepage.
  • Add a proxy only when a publisher rate-limits your runs. Most feeds work without one.
  • A missing field usually means the publisher does not include it in the feed. Check several entries before treating it as a failure.

Integrations

  • Google Sheets - Send entries to a spreadsheet for editorial or research review.
  • Webhooks - Notify internal services when a run finishes.
  • Make or Zapier - Route new entries into publishing, alerting, or archiving workflows.
  • Apify API - Read the dataset from your own application or scheduler.
  • Slack - Post new headlines to a channel through a webhook workflow.

Export formats

  • JSON for applications and data pipelines.
  • CSV for spreadsheets and quick review.
  • Excel for reporting.
  • XML for systems that already consume feed-style data.

Frequently Asked Questions

Does this Actor work with Atom and JSON Feed?

Yes. The format is detected from the response, so RSS, Atom, RDF, JSON Feed, OPML, and sitemaps can be mixed in one input list.

Can I collect a feed without knowing its URL?

Yes. Add the website URL and enable discoverFeeds. The Actor scans the page for feed links, checks each candidate, and collects the valid feeds.

What happens if a feed URL returns an HTML page?

The Actor scans that page for feed links. If it finds a valid feed, it processes it. If not, the dataset receives an error record with the URL and reason.

Why are some entries missing full text?

Full text depends on the article page. If the page blocks the request or provides no readable article body, the Actor keeps the feed summary and records the reason in content_error.

Does the Actor remove duplicate entries?

Yes. Entries are deduplicated by feed and article ID or URL within a run. Duplicate feed URLs and discovery candidates are skipped.

Can I run this on a schedule?

Yes. Schedule the Actor in Apify Console and connect the dataset to your downstream workflow. Daily or hourly runs work well for news and blog monitoring.

How many entries can I collect?

There is no fixed cap. maxEntries limits entries per feed, and 0 keeps every entry in the feed. Large sitemap indexes follow the first 25 child sitemaps to keep a run bounded.

The Actor reads publicly available feeds and pages. You are responsible for complying with publisher terms, robots policies, copyright, and applicable law.

Support

For issues or feature requests, use the Issues tab on the Actor page or contact the developer through Apify.

This Actor is intended for legitimate collection of publicly available feed data. Users are responsible for how the collected content is stored, republished, or redistributed.