News Article Extractor: RSS, URLs & Clean Text avatar

News Article Extractor: RSS, URLs & Clean Text

Pricing

from $1.80 / 1,000 article extracteds

Go to Apify Store
News Article Extractor: RSS, URLs & Clean Text

News Article Extractor: RSS, URLs & Clean Text

Extract clean article text, author, publish date, tags and image from news links, or get the newest articles from up to 50 news sites through their RSS feeds and sitemaps. Text or Markdown, only-new mode for schedules.

Pricing

from $1.80 / 1,000 article extracteds

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

News Article Extractor turns news article links, news sites, RSS/Atom feeds and news sitemaps into clean article text with title, author, publish date, language, tags and main image.

Use it for media monitoring, research datasets and AI pipelines. The smallest run is one article link: you get one row with the article text in a few seconds.

News Article Extractor: news sites, feeds and article links go in, newest articles are found, clean article text with author, publish date and word count comes out

Table of contents

What it does

The Actor works in two ways, and you can use both in one run:

  • Article links (articleUrls): it opens each link and returns the article body without menus, ads, bylines, photo captions and newsletter boxes.
  • News sites (siteUrls): give a homepage like https://www.theverge.com. The Actor finds the site's RSS/Atom feed or news sitemap, takes the newest articles and extracts each one. You can also give the feed or sitemap URL directly.

Every article becomes one Dataset row. The body comes as plain text, Markdown or both.

Good fit

  • Daily or hourly news monitoring: schedule the Actor with Only new articles and get only articles you have not received before.
  • Building a text dataset from a list of article links for analysis, summaries or RAG.
  • Getting publish dates, authors and tags for a list of article URLs.

Not a fit / limits

  • Paywalls and logins are not bypassed. For subscriber-only pages you get only the public part (see isAccessibleForFree).
  • Sites that block automated requests (for example some large publishers with bot protection) return a BLOCKED error. The Actor does not use a browser or proxies.
  • Sites without an RSS/Atom feed or a sitemap cannot be used in siteUrls. Use their article links in articleUrls instead.
  • Comments, videos and image galleries are not extracted.

Quick start

  1. Open the Input tab.
  2. Keep the prefilled news site https://www.theverge.com in News sites, RSS feeds or sitemaps, or add your own article links to Article URLs.
  3. Keep Max articles from sites at the prefilled 10.
  4. Click Start.
  5. Open the Output tab. The Articles view shows title, author, date and site; Full text shows the article body.

Expected result: 12 rows in a few seconds: the 2 prefilled BBC article links plus the 10 newest articles from the site, each with title, publishedAt and text.

Input

Input fields

FieldPlain nameTypeDefaultAllowed valuesWhat it does
articleUrlsArticle URLsarray of URLsemptyup to 500 public http(s) linksEach link is extracted. maxArticles and dateFrom do not apply here.
siteUrlsNews sites, RSS feeds or sitemapsarray of URLsemptyup to 50Homepage, RSS/Atom feed or sitemap. The Actor finds the feed itself for a homepage.
maxArticlesMax articles from sitesinteger20 (prefill 10)1–500Total articles taken from all siteUrls, newest first, sites take turns.
dateFromOnly articles published afterstringnone2026-10-01 or 7 daysSkips site articles older than this date. Articles without a date are skipped when it is set.
onlyNewOnly new articlesbooleanfalsetrue / falseRemembers delivered article URLs and skips them in the next runs.
stateKeyMemory name for 'Only new'stringdefaultletters, digits, -, _Keeps separate memory for different schedules.
outputFormatArticle body formatstringtexttext, markdown, bothWhich body fields are filled.
minWordsMinimum wordsinteger500–5000Pages with fewer words are skipped (site pages) or reported as TOO_SHORT (article links).

At least one of articleUrls or siteUrls is required. The same article found twice (also through AMP or canonical links) is returned once.

Input examples

Newest articles from several news sites

{
"siteUrls": [
{ "url": "https://www.theverge.com" },
{ "url": "https://feeds.bbci.co.uk/news/rss.xml" }
],
"maxArticles": 20,
"dateFrom": "2 days"
}

Expected behavior: the Actor reads both feeds and takes up to 20 newest articles from the last 2 days, alternating between the sites.

Scheduled monitoring without repeats

{
"siteUrls": [{ "url": "https://techcrunch.com" }],
"maxArticles": 50,
"onlyNew": true,
"stateKey": "techcrunch-hourly"
}

Expected behavior: the first run returns the newest articles. Next runs return only articles that appeared since the last run. A run with nothing new ends with status not_found and no article charges.

A list of article links as Markdown

{
"articleUrls": [
{ "url": "https://www.bbc.co.uk/news/articles/cm2d6e62p49do" },
{ "url": "https://www.bbc.co.uk/news/articles/ck054nvzr676o" }
],
"outputFormat": "markdown"
}

Expected behavior: two rows with the article body in markdown. A link that fails is listed in the run summary with an error code; the other links still return rows.

Output

Output fields

FieldMeaningCan be empty?
urlArticle URL after redirectsno
canonicalUrlCanonical URL declared by the pagefalls back to url
titleHeadlinerarely null
authorAuthor name(s), comma-separatednull when the page names no author
publishedAt / modifiedAtPublish and update time, ISO 8601 UTCnull when unknown
langLanguage code, e.g. en, en-GBnull when not declared
siteNamePublisher namecan be null
descriptionShort summarycan be null
tagsPublisher keywords and sectionsempty array when none
imageMain image URLcan be null
textBody as plain text, paragraphs separated by a blank linenull when outputFormat is markdown
markdownBody as Markdown with headings, links and listsnull when outputFormat is text
wordCountWords in the bodyno
isAccessibleForFreePublisher paywall flag: false = subscriber-only page, only the public part returnednull when not declared
discoveredViainput, rss, atom or sitemapno
feedUrlFeed or sitemap where the article was foundnull for articleUrls
fetchedAtWhen the page was fetchedno

Output example

{
"url": "https://www.theverge.com/tech/1010990/fujifilm-instax-square-2-analog-instant-film-camera-filters",
"canonicalUrl": "https://www.theverge.com/tech/1010990/fujifilm-instax-square-2-analog-instant-film-camera-filters",
"title": "Fujifilm’s new square format instant camera adds analog color filters",
"author": "Andrew Liszewski",
"publishedAt": "2026-10-14T13:43:36.000Z",
"lang": "en-US",
"siteName": "The Verge",
"tags": ["Cameras", "Gadgets", "News", "Tech"],
"text": "Continuing the analog approach of the Instax Square SQ6 that launched in 2018…",
"markdown": null,
"wordCount": 250,
"isAccessibleForFree": false,
"discoveredVia": "atom",
"feedUrl": "https://www.theverge.com/rss/index.xml"
}

This example is trimmed (fields modifiedAt, description, image, fetchedAt and most of text are left out).

Run summary and statuses

Every run also saves RUN_SUMMARY in the Key-value store (the Run summary link in Output). It has status, reason, counts of extracted and skipped pages, feeds found per site and failed URLs with error codes.

StatusWhat it meansWhat to do
completeAll requested articles were extractedUse the Dataset
partialSome rows were extracted, but some links failed, a site had no feed or the spending limit was reachedCheck failedUrls and reason
not_foundThe sources worked, but no new or matching articles were found (for example with onlyNew or dateFrom)Nothing to fix; no articles were charged
errorNo article could be extracted because sites failed or had no feed. The run is marked as failedCheck the first error code in the status message

Common error codes: NOT_FOUND (404), BLOCKED (403, bot protection or login), TIMEOUT, HTTP_5xx, NOT_AN_ARTICLE (section page, video page, feed or file), TOO_SHORT, NO_FEED_FOUND, PRIVATE_URL, INVALID_URL.

The run also stops early, keeping every article already saved, with one of these reasons: DEADLINE (10-minute limit), CHARGE_LIMIT (your spending limit), TOO_MANY_FAILURES (8 network failures in a row), TOO_MANY_UNREACHABLE_SITES (6 sites in a row did not respond; the remaining sites get the warning NOT_SCANNED and are not charged). With saved articles the status is partial, without them error.

Pricing and limits

Pricing unit

You pay per event. Platform usage is included.

EventWhen it is chargedFree planBronzeSilverGold+
Actor startOnce per run (one per GB of memory, at least one)$0.003$0.003$0.003$0.003
Article extractedOne row in the Dataset$0.0021$0.002$0.0019$0.0018
Site scannedOne entry of siteUrls searched for feeds, once per run, also when the site has no feed or does not respond$0.002$0.002$0.002$0.002
Article URL failedOne entry of articleUrls that the site answered with an error, a non-article page or a page shorter than minWords$0.0005$0.0005$0.0005$0.0005

Free: duplicates, skipped site pages (too short, older than dateFrom, not an article), articles already returned with onlyNew, invalid and private URLs, URLs skipped after repeated network failures.

A valid run with no new or matching articles pays only the start and the sites scanned. Set a spending limit in the run options: the Actor stops before it and ends with status partial, reason CHARGE_LIMIT.

Cost examples (Free plan prices)

ScenarioInputCharged eventsPrice
Two article links2 articleUrlsstart + 2 articles$0.0072
Prefilled run1 site, maxArticles 10start + 1 site + 10 articles$0.026
Daily digest5 sites, maxArticles 100start + 5 sites + 100 articles$0.223
Hourly check, nothing new5 sites, onlyNewstart + 5 sites$0.013
Large batch500 articleUrls, 480 extracted, 20 failedstart + 480 articles + 20 failed$1.02

Limits

  • Up to 500 articleUrls, 50 siteUrls and 500 articles from sites per run.
  • A run works for at most 10 minutes and stops with status partial (reason DEADLINE) when time runs out. Split very large lists into several runs.
  • Memory is set automatically: 512 MB, or 1 GB when you ask for more than 200 articles.
  • Public pages only. Private network addresses and links with passwords are rejected.

API, schedules and AI agents

  • API: start the Actor with the Apify API and read rows from the default Dataset.
  • Export: download the Dataset as JSON, CSV, Excel or XML from the Output tab.
  • Schedules: create a schedule in Apify Console with onlyNew: true and a stateKey per schedule to receive only new articles.

Use with AI agents (MCP)

  • MCP server with only this Actor: https://mcp.apify.com?tools=cliqtomedia/news-article-extractor (see Apify MCP server).
  • Smallest useful input: {"articleUrls": [{"url": "https://www.bbc.co.uk/news/articles/cm2d6e62p49do"}]}
  • Key output fields: title, publishedAt, author, text (or markdown), url.
  • A run with one site and 10 articles usually finishes in under a minute and costs about $0.026 on the Free plan. Up to 500 article links or 50 sites per run.

Troubleshooting

A site returns BLOCKED

Symptom: failedUrls shows BLOCKED for every link of one site. Likely reason: the site uses bot protection or requires login. Action: this Actor cannot read that site. Blocked links are charged as failed URLs ($0.0005 each), so remove such sites from scheduled runs.

NO_FEED_FOUND for a site

Symptom: the site warning says NO_FEED_FOUND. Likely reason: the homepage does not link a feed and robots.txt lists no sitemap. Action: find the feed URL yourself (often /feed, /rss or /rss.xml) and put it in siteUrls, or use article links in articleUrls.

Fewer articles than maxArticles

Likely reason: the feed has fewer recent items, dateFrom or onlyNew removed some, or the site's pages were videos or short teasers. The run summary shows skipped counts. When a site returns many skipped pages in a row, the Actor stops reading it (warning TOO_MANY_SKIPPED).

The text contains extra lines

Some sites mix related links or author bios into the article body. The Actor removes common bylines, captions and newsletter boxes, but layouts differ. Report the URL in Issues.

FAQ

Do I need an API key or login?

No. The Actor reads public pages only.

Does it bypass paywalls?

No. For subscriber-only pages it returns the public part and isAccessibleForFree: false.

How do I get only new articles every day?

Set onlyNew to true and run the Actor on a schedule. Use a different stateKey for each schedule. You are charged only for articles you have not received yet.

Why is publishedAt null?

The page and the feed did not give a publish date. When dateFrom is set, such site articles are skipped.

Support

For bugs, questions or feature requests, open an issue in the Issues tab of this Actor. Include the run ID, your input (without secrets) and the error code from RUN_SUMMARY. Never send tokens, cookies or passwords.