Keyword News & RSS Monitor avatar

Keyword News & RSS Monitor

Pricing

from $2.50 / 1,000 matching articles

Go to Apify Store
Keyword News & RSS Monitor

Keyword News & RSS Monitor

Give it RSS feeds (or news domains) and keywords — it checks them on a schedule and returns only matching articles, deduplicated across runs. No external API keys.

Pricing

from $2.50 / 1,000 matching articles

Rating

0.0

(0)

Developer

Proyecto Apify

Proyecto Apify

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Give it your RSS feeds and your keywords — it checks them on a schedule and hands back only the articles that match. Deduplicated across runs, so a daily recurring run never returns the same article twice.

No external API keys. No paywall scraping. No sentiment analysis. Just accurate keyword matching on the title and summary that the feed itself provides.

What it does

  1. Takes feeds or bare domains. Pass a full RSS/Atom URL or a domain like bbc.co.uk and the Actor auto-discovers the feed via the homepage <link rel="alternate" type="application/rss+xml"> tag, then common paths (/rss, /feed, /rss.xml, /atom.xml, /feed.xml, /index.xml, /feeds/posts/default).
  2. Parses RSS 2.0 and Atom 1.0 with fast-xml-parser (no paid API). Extracts title, summary (HTML stripped), source, publishedAt (ISO 8601), link.
  3. Filters by lookback window — only articles published within lookbackHours (default 24h) are kept. Articles with no parseable date are treated as fresh.
  4. Matches keywords against title + summary. matchMode: "any" = at least one keyword; "all" = every keyword. caseSensitive defaults to false.
  5. Deduplicates across runs via a persisted KeyValueStore record (dedup-state), capped at 10,000 entries with LRU eviction so it stays bounded over months of scheduled runs.
  6. Pushes one row per matching new article to the default dataset.

Input

FieldTypeDefaultDescription
feedsarrayRSS/Atom URLs or bare domains. Required.
keywordsarrayKeywords or phrases to match. Required (pass [] to disable matching).
matchModeany | allanyHow to combine multiple keywords.
caseSensitivebooleanfalseCase-sensitive matching.
maxArticlesPerFeedinteger100Cap on matching articles emitted per feed per run.
lookbackHoursinteger24Only articles newer than this are kept.

Output

One row per matching article in the default dataset:

{
"title": "OpenAI announces new regulation policy",
"summary": "The company said it will publish quarterly safety reports...",
"source": "Hacker News",
"publishedAt": "2026-07-23T09:14:00.000Z",
"matchedKeywords": ["AI", "regulation"],
"link": "https://news.ycombinator.com/item?id=12345678"
}

Setting up a daily scheduled run

  1. Open the Actor in Apify Console → SchedulesCreate new.
  2. Pick Cron = 0 8 * * * (08:00 UTC every day) or your preferred time.
  3. Set the input. Example:
    {
    "feeds": [
    { "url": "https://hnrss.org/frontpage" },
    { "url": "https://feeds.bbci.co.uk/news/rss.xml" },
    { "url": "reuters.com" }
    ],
    "keywords": ["AI", "regulation", "antitrust"],
    "matchMode": "any",
    "lookbackHours": 24
    }
  4. Save. Each scheduled run reads the persisted dedup-state from the default KeyValueStore, so articles seen in yesterday's run are automatically filtered out.

Reading the results programmatically

curl "https://api.apify.com/v2/acts/<your-username>~keyword-news-rss-monitor/runs/last/dataset/items?format=json" \
-H "Authorization: Bearer $APIFY_TOKEN"

Error handling

  • Unreachable, malformed, or non-RSS feeds are logged (WARNING: No RSS feed discovered for … or Failed to parse feed …) and skipped. The run continues.
  • Per-feed retries: 2 (Crawlee default), then failedRequestHandler logs and moves on.
  • If no feeds resolve at all, the Actor exits non-zero so the schedule surfaces the failure.

Limitations

  • Only reads what the feed itself exposes — typically title + summary. Does not fetch full article bodies.
  • No paywall bypass, no login flows.
  • Keyword matching is plain substring (regex-escaped). No stemming, no fuzzy match.
  • Discovery probes the homepage and a fixed list of common paths; if a site publishes its feed at a non-standard URL and doesn't advertise it in <link rel="alternate">, pass the full feed URL directly.