Google News Scraper — Multi-Query Topic & Brand Monitoring avatar

Google News Scraper — Multi-Query Topic & Brand Monitoring

Pricing

from $150.00 / 1,000 query feed delivereds

Go to Apify Store
Google News Scraper — Multi-Query Topic & Brand Monitoring

Google News Scraper — Multi-Query Topic & Brand Monitoring

Google News RSS scraper with date-range filters, publisher filters, 30 language editions, optional enrichment (real article URL + og:image decoded from the Google News redirect) and FREE webhook + Telegram alerts.

Pricing

from $150.00 / 1,000 query feed delivereds

Rating

0.0

(0)

Developer

B

B

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

21 hours ago

Last modified

Share

Google News Scraper — Topic & Brand Monitoring Feed (No API Key)

Independently validated (2026-08-26): 20/20 rows byte-exact vs same-minute raw Google News RSS fetched through a separate code path — 0 field errors (title, url, published_at, source), 0 phantom rows, feed order preserved. Receipt: validation/gns-0826-val/ in the actor repo.

Normalised topic feeds from Google News RSS for monitoring, dashboards and AI agents. No Google account, no API key, no proxy needed — the same public feed Google News itself is built on.

Give it topic queries (openai, acme competitor, "exact phrase", künstliche intelligenz in the German edition) and get one clean dataset: article title, URL, publisher name + URL + domain, publish time (ISO 8601 UTC), language/geo edition and a snippet — deduplicated across queries. 30 language editions and 51 country editions out of the box. Flip on enrich: true and each row also carries the real publisher article URL, og:image and og:description, decoded from the Google News redirect.

Narrow it down without learning Google's operator syntax:

  • Time range — last hour / 6h / 12h / 24h / 3d / 7d / 14d / 30d / 1y.
  • Date rangedateFrom / dateTo for a fixed historical window.
  • Only these domains["reuters.com", "bbc.com"].
  • Exclude words — drop the noise before it is ever fetched.
  • Sections — Google News' own Top / World / Business / Technology / Entertainment / Sports / Science / Health / Nation feeds.
  • Sort by newest — Google's feed order is relevance, not time.
  • maxTotal — one hard cap on the whole run, so a scheduled job can never surprise you.

Why this one: pay-per-event, not a monthly rental, and not per row. You are charged once per successfully harvested topic query or section — a query with zero coverage returns no rows and is never charged. Failed runs are never charged either. Every filter above is applied by Google inside the search, so filtered-out articles are never fetched and never billed.

Example input

{
"queries": ["openai", "\"ai chip export controls\""],
"topics": ["TECHNOLOGY"],
"language": "en",
"geo": "gb",
"timeRange": "7d",
"siteFilter": ["reuters.com", "theguardian.com"],
"excludeWords": ["crypto"],
"sortBy": "newest",
"maxPerQuery": 50,
"maxTotal": 500
}

Minimal input still works exactly as before:

{ "queries": ["openai", "anthropic"], "language": "en" }

Sample output (real row from a live run, 2026-09-02, enrich: true)

{
"query": "openai",
"title": "OpenAI says Astra AI model is its first that crosses 'Critical' cybersecurity capability - CNBC",
"url": "https://news.google.com/rss/articles/CBMisAFBVV95cUxPaHpSbHZkTWlhMjRzMExScVVuOFlpTlNLWVdaUWtDNDZq...?oc=5",
"article_url": "https://www.cnbc.com/2026/09/01/open-ai-astra-cyber-model.html",
"image_url": "https://image.cnbcfm.com/api/v1/image/108316427-1780524884815-gettyimages-2278945689-AFP_B4XB779.jpeg",
"article_description": "OpenAI said its newest AI model crosses the 'critical' line in cybersecurity capabilities…",
"published_at": "2026-09-01T20:30:00Z",
"source_name": "CNBC",
"source_url": "https://www.cnbc.com",
"source_domain": "cnbc.com",
"fetched_at": "2026-09-02T08:00:31.000000Z",
"language": "en",
"geo": "gb",
"topic": "",
"feed_url": "https://news.google.com/rss/search?q=openai%20-crypto%20when%3A7d&hl=en&gl=gb&ceid=GB:en",
"description_snippet": "OpenAI says Astra AI model is its first that crosses 'Critical' cybersecurity capability CNBC"
}

The three article_* / image_url fields appear only with enrich: true (v0.5); publishers that bot-wall the fetch keep their row with empty enrichment fields — nothing is dropped, nothing extra is charged.

feed_url is the exact Google News RSS URL the row came from. Paste it into a browser and you see the same articles — that is the whole verification story, and it is why this actor has nothing to hide.

Use with AI agents (MCP)

Expose this actor as a tool to Claude, Cursor, VS Code or any MCP client — add the Apify MCP server pinned to this actor:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?actors=halobartku~google-news-scraper"
}
}
}

Then just ask: "Pull everything about 'anthropic' from the last 24 hours, Reuters and Bloomberg only, newest first."

Notifications (free)

Brand monitoring should reach you — not the other way round. Two optional, always-free outputs (no charge events, ever):

  • Webhook (webhookUrl): a POST with a JSON run summary on every finished run — including empty ones. Machine endpoints want heartbeats, not surprises: you know the monitor is alive even on a quiet news day. Payload: edition, entries with rows / valid-empty / skipped, rows delivered, charges incurred, duration, up to 5 sample headlines.
  • Telegram (telegramBotToken + telegramChatId): a human-readable digest (top headlines with publishers), sent only when there is something to read.

Both are fail-soft by contract: a broken webhook or bad token is logged and swallowed — it can never fail an otherwise-good run, and your dataset is already written before notifications fire.

Pair with a schedule (hourly/daily) and you have a $0-fixed-cost brand monitor: pay only for topics that actually return news.

For AI agents & LLM apps (compact reference)

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: halobartku/google-news-scraper).

Purpose: One normalised Google News dataset for any set of topic queries — brand mentions, competitor moves, industry keywords — across 30 language editions, without API keys or proxies. Designed as the detection/routing layer of a news pipeline: find what changed, fetch full text in a second pass only where it matters.

Minimal input:

{ "queries": ["your brand", "\"competitor name\""], "language": "en" }

Output: one row per article — query, title, url (Google News redirect, resolves to publisher), source_name, source_url, source_domain, published_at (ISO 8601 UTC), fetched_at, language, geo, topic, feed_url, description_snippet.

Behaviors an agent should know:

  • queries is an array; topics is an array of Google News section names. All results land in one dataset with one schema, deduplicated across entries by URL.
  • language sets the edition language and geo the country; regionLanguage takes a raw COUNTRY:lang token (GB:en, BR:pt-419, TW:zh-Hant) when you need an edition the dropdowns do not list.
  • Feed order is Google's relevance ranking, not chronological — set sortBy: "newest" for a time-ordered feed. Sorting happens before maxPerQuery truncates, so "newest 20" really means the 20 newest. Sorting is applied per query and per section — rows are written one source at a time, so with several queries in one run the dataset is ordered within each source, not globally.
  • timeRange uses Google's when: operator. Google returns zero results for month-style windows, so only windows that actually work are offered (1h30d, 1y). Use dateFrom/dateTo for anything longer or fixed.
  • topics sections carry their own fixed window (~last 2 days) and ignore timeRange, siteFilter and excludeWords.
  • ~100 items per query per fetch is the feed's coverage window; schedule recurring runs for continuous monitoring.
  • A query with zero coverage returns zero rows and fires no charge event — safe to probe speculative queries cheaply. maxTotal skips remaining entries once full, and skipped entries are not charged.
  • published_at can be an empty string when the feed carries no date; treat as unknown, not as epoch. Those rows always sort last.

What you get per item

fieldnotes
querythe topic this item was harvested for (topic:TECHNOLOGY for sections)
titlearticle headline
urlGoogle News redirect URL — resolves to the publisher article
source_name / source_urlpublisher
source_domainpublisher domain, www. stripped, lowercased — group and filter on this
published_atISO 8601 UTC (empty string when the feed carries no date)
fetched_atISO 8601 UTC harvest time
language / geoedition used
topicGoogle News section, empty for search queries
feed_urlthe exact RSS URL this row came from — reproducible in a browser
description_snippetfirst 300 chars, HTML stripped
article_url(enrich only) real publisher article URL, decoded from the Google News redirect
image_url(enrich only) og:image from the article page (empty when the publisher blocks us)
article_description(enrich only) og:description from the article page

FAQ

How many articles per query? Google News RSS caps a topic at ~100 items per fetch — that is the feed's coverage window, not ours. Section feeds return 38–70. Items arrive in feed order (Google's relevance ranking); set sortBy: "newest" if you need chronology.

Why is timeRange missing "last month"? Because it does not work. Google News returns zero items for when:1m and when:3m. We tested every window and shipped only the ones that return real, correctly-filtered results — 30d is the honest "last month".

What if my query has zero coverage? No rows, no charge. The feed-harvested event fires only after an entry's rows are actually written. A run monitoring 10 brands where 3 have no news costs 7 events.

Do I need a proxy, API key or Google account? No. The feed is public and keyless. Runs work without any proxy configuration in normal conditions.

Can I monitor competitors in other languages? Yes — set language and query in that language; the country edition is inferred (de→Germany, pl→Poland, ja→Japan, …), or pin it with geo. Exact phrases in quotes work in every edition.

Does siteFilter guarantee on-topic results? It guarantees the domains. Google's site: operator competes with your keywords for ranking, so a very narrow domain list plus a wide time window can surface loosely-related articles from those publishers. Narrow the timeRange or widen the domain list if you see drift.

Images? Full article text? The real publisher URL instead of the redirect? Article URL and image: yes, optionally (enrich: true, since v0.5) — the run decodes Google News redirect URLs to the real publisher article URL and pulls og:image + og:description into article_url, image_url, article_description. Fail-soft by contract: a row whose publisher bot-walls us is delivered with empty enrichment fields — never dropped, never charged extra (see enrichLimit for the cost-free bound). Full article body text is still out of scope: that needs per-publisher scraping behind paywalls and bot walls, and it is not what you are paying us for. Feed-first, enrich second.

What does a failed run cost me? Nothing. Failed or empty queries are never charged — that is the core of our per-event pricing.

Pricing

Pay-per-event: one feed-harvested event per successfully harvested topic query or section ($0.15). A run with 5 topics that all return coverage = 5 events, whether each returns 10 rows or 100. Empty queries and failed runs are free. No monthly fee, no minimum.

Honest math vs the $19.99/month alternative: pay-per-event wins when you check occasionally or track a handful of topics (4 topics × 1 run/week ≈ $2.40/mo). If you poll 50 topics hourly, a monthly plan is cheaper — use the Pricing tab's calculator for your volume.

Changelog

  • 0.5 — optional enrichment (enrich: true, enrichLimit): decodes the Google News redirect to the real publisher article URL and pulls og:image / og:description into new fields article_url, image_url, article_description. Fail-soft by contract (blocked publishers keep their row, empty enrichment fields, zero extra charge); no new charge events; default remains off — output for existing users is byte-identical.
  • 0.4 — SEO: notifications keywords (news alerts webhook, Telegram alerts, monitoring notifications) added to listing metadata. No code changes; behavior identical to 0.3.
  • 0.3 — free notifications: optional webhookUrl (JSON run summary on every finished run, including empty ones — heartbeat for monitoring pipelines) and Telegram digest (telegramBotToken + telegramChatId, sent only when there is something to read). Zero charge events; fail-soft by contract. Turns the actor into a set-and-forget brand monitor.
  • 0.2.1 — empty-coverage fix: a query with no results is now a SUCCEEDED run with 0 rows and no charge (it is the correct answer, not a failure). Previously a run where every query returned zero rows ended FAILED. Real fetch/parse errors are still skipped uncharged and still fail the run only when no query produced rows or a valid empty answer. Charge behavior for runs that return data is unchanged.
  • 0.2timeRange (9 verified windows) + dateFrom/dateTo; Google News section feeds (topics); language editions 11 → 30 and country editions 11 → 51 plus a raw regionLanguage (ceid) override; siteFilter and excludeWords applied inside the Google query; sortBy (relevance/newest/oldest) applied before truncation; run-wide maxTotal cap; new output fields source_domain, topic, feed_url. All existing inputs and all existing output fields are unchanged.
  • 0.1 — initial release: multi-query harvest, 10-language editions, cross-query dedup, per-query pay-per-event pricing.

Disclosure

This actor was built and is operated by an AI agent (Jarvis, for its operator Bartosz). The parsing logic is deterministic, the listing claims are backed by live end-to-end runs, and the human operator reviews and publishes releases.

SEO keywords

google news scraper, google news api, google news rss feed, news scraper no api key, news feed scraper, topic monitoring news, brand monitoring news, competitor news monitoring, media monitoring api, press clipping service, news aggregation tool, google news search api, news dataset for llm, news data for ai agents, multilingual news scraper, google news python, headline aggregator, news by keyword api, google news scraper free, news monitoring without api key, google news by date, google news last 24 hours, google news by country, google news topic feed, news alerts webhook, google news telegram alerts, news monitoring notifications, google news article url, news article image, google news images, news scraper with images