News Mention Monitor: RSS Feeds, Deduplicated avatar

News Mention Monitor: RSS Feeds, Deduplicated

Under maintenance

Pricing

from $5.50 / 1,000 article storeds

Go to Apify Store
News Mention Monitor: RSS Feeds, Deduplicated

News Mention Monitor: RSS Feeds, Deduplicated

Under maintenance

Track new news coverage of a brand, company, or keyword across any RSS feeds, deduplicated across runs so you only see what's new. Built for PR/comms teams, market researchers, and competitive intelligence. No proxy.

Pricing

from $5.50 / 1,000 article storeds

Rating

0.0

(0)

Developer

Timothy Kelvin

Timothy Kelvin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 minutes ago

Last modified

Share

Track new coverage of a brand, company, product, or keyword across the RSS feeds you choose. Every run only returns articles it hasn't seen before. Dedupe holds across scheduled runs, not just within one, so this is built to run on a schedule as a standing mention monitor, not a one-off scrape.

Who this is for

  • PR/comms teams tracking new press coverage of their company or a campaign.
  • Market researchers & analysts watching a topic or competitor across many sources at once.
  • Competitive intelligence teams monitoring what's being published about competitors.

Input

FieldTypeDescription
sourcesarrayRSS feeds to watch. Each item is { "type": "rss", "name": "...", "feedUrl": "...", "keywordFilter"?: [...] }. keywordFilter keeps only items whose title or summary contains one of the words. Leave empty to use the built-in example feeds (Electrek, TechCrunch and Engadget, filtered for EV and AI news).
maxArticlesPerSourceintegerHow many of the newest items to check from each feed per run. Default 20. Articles already returned by an earlier run count toward it but aren't returned or charged again.
{
"sources": [
{ "type": "rss", "name": "techcrunch", "feedUrl": "https://techcrunch.com/feed/", "keywordFilter": ["tesla", "battery"] },
{ "type": "rss", "name": "electrek", "feedUrl": "https://electrek.co/feed/" }
],
"maxArticlesPerSource": 20
}

Output

One record per newly discovered article:

{
"url": "https://example.com/article",
"canonicalUrl": "https://example.com/article",
"title": "Example headline",
"author": "Jane Doe",
"publication": "Example News",
"publishedAt": "2026-09-18T12:00:00.000Z",
"body": "Cleaned article text...",
"imageUrl": "https://example.com/image.jpg",
"sourceName": "techcrunch",
"fingerprint": "sha256-hash",
"discoveredAt": "2026-09-19T08:00:00.000Z"
}

Each record also has rawHtml, the article page's full HTML, left out above.

A run that finds nothing new returns one row titled "No new articles in this run (not charged)", with the counts and the reason (for example, every article was already returned by an earlier run), so a scheduled run never ends with an empty dataset.

How it works

Reads each RSS feed, checks robots.txt for the feed and for every article before fetching it, and extracts clean title/author/body text (nav, ads, and cookie banners stripped). Each article is fingerprinted (canonical URL + title + publish time + body hash) against a persistent store, so re-running on a schedule only returns what's genuinely new: already-seen articles are skipped, not re-charged.

Before downloading anything, each feed item is also checked by its feed ID (or its link, if the feed gives no ID) against the items already handled, so a scheduled re-run doesn't spend a request on an article it has returned before. One consequence: an article edited after it was returned isn't returned again.

A source's robots.txt is checked per article at run time: if a publisher changes its policy, that source may start getting skipped. That's enforced by design, not a bug.

Each site is fetched at most once a second. If a site fails twice in one run, its remaining articles are skipped until the next run, so one unresponsive site can't hold up the others.

Google News isn't supported. Its robots.txt doesn't allow automated access to its RSS feeds or its article links, so google-news sources are skipped, with the reason shown in the run's output. Use the publishers' own RSS feeds instead: most news sites have one, often at /feed or /rss.

No proxy, no scraping beyond each source's own public RSS feed and the articles it links to.

Pricing note

Billed per new article stored, not per source polled or per run, since the dedupe store means a re-run only ever charges for genuinely new coverage, never for an article you've already been charged for.