News Aggregator by Topic avatar

News Aggregator by Topic

Pricing

$0.50 / 1,000 article returneds

Go to Apify Store
News Aggregator by Topic

News Aggregator by Topic

Aggregate news for any topic from Google News, deduplicate near-duplicates, and tag basic sentiment.

Pricing

$0.50 / 1,000 article returneds

Rating

0.0

(0)

Developer

Ken Agland

Ken Agland

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Aggregate recent news for any topic from Google News RSS, deduplicate near-identical stories, and tag basic sentiment. No API key needed.

What it does

  • Queries Google News RSS for each topic you provide.
  • Cleans each headline and splits the source name out of the title.
  • Deduplicates near-identical stories by a normalized title.
  • Tags each article with a simple positive, negative, or neutral sentiment.
  • Optionally keeps only articles from the last N hours.
  • Writes an aggregate summary (per-topic counts and sentiment breakdown) to OUTPUT.

Example input

{
"topics": [
"openai",
"electric vehicles"
],
"maxPerTopic": 25,
"language": "en-US",
"country": "US",
"sinceHours": 48,
"sentiment": true
}

Input

FieldTypeDescription
topicsarrayOne or more topics or search queries. Each is queried separately.
maxPerTopicintegerMax articles to keep per topic after dedup. Default 25.
languagestringGoogle News language code (hl), for example en-US. Default en-US.
countrystringGoogle News country code (gl), for example US. Default US.
sinceHoursintegerKeep only articles from the last N hours. 0 disables the filter. Default 0.
sentimentbooleanTag positive, negative, or neutral sentiment. Default true.

Output

Each dataset item is one article:

{
"topic": "openai",
"title": "OpenAI launches new model",
"source": "TechCrunch",
"url": "https://news.google.com/rss/articles/...",
"publishedAt": "2026-07-04T09:30:00.000Z",
"ageHours": 5.2,
"sentiment": "positive",
"sentimentScore": 1
}

The run's default key-value store record OUTPUT holds an aggregate:

{
"topics": [
"openai",
"electric vehicles"
],
"totalArticles": 42,
"perTopicCounts": {
"openai": 25,
"electric vehicles": 17
},
"sentimentBreakdown": {
"positive": 18,
"negative": 9,
"neutral": 15
},
"query": {
"language": "en-US",
"country": "US",
"maxPerTopic": 25,
"sinceHours": 48,
"sentiment": true
},
"generatedFrom": "https://news.google.com/rss/search"
}

How it works

For each topic the Actor calls the public Google News RSS search endpoint, parses the XML with fast-xml-parser, and reads rss.channel.item. Google News titles usually end with - SourceName, so the Actor splits that off into the source field. It deduplicates stories by a normalized lowercase title across all topics, applies the optional time filter, and scores sentiment from the headline using a small built-in word list (no extra service or key). Requests retry on rate limits and server errors with backoff. It needs no Apify token.

MIT licensed.