Google News Scraper API avatar

Google News Scraper API

Pricing

from $2.00 / 1,000 news articles

Go to Apify Store
Google News Scraper API

Google News Scraper API

Google News scraper for brand, competitor and market monitoring. Search by country, language and date; filter publishers, resolve URLs and optionally extract article text. Free analytics report publisher/domain share, daily/query volume. From $2.50 per 1,000 articles, platform usage included.

Pricing

from $2.00 / 1,000 news articles

Rating

0.0

(0)

Developer

Rosario Vitale

Rosario Vitale

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Why use this Actor?

Google News scraper for brand, competitor and market monitoring. Search by country, language and date; filter publishers, resolve URLs and optionally extract article text. Free analytics report publisher/domain share, daily/query volume. From $2.50 per 1,000 articles, platform usage included.

Features

  • Search queries — Google News search queries, one per line, e.g. OpenAI or "electric vehicles" -Tesla. Google operators such as quotes, OR, -word and site:reuters.com work. Up to 50 queries; send an empty list to read only topics or topic URLs.
  • Google News topics (no query needed) — Optional headline feeds for the selected edition, e.g. TECHNOLOGY or TOP_STORIES. Each topic returns about 30-70 current articles and is charged like search results.
  • Google News topic or section URLs — Optional news.google.com pages to follow, e.g. https://news.google.com/topics/CAAqJggKIiBDQkFTRWdvSUwyMHZNRGRqTVhZU0FtVnVHZ0pWVXlnQVAB (copy the URL of any topic, section or publication page). Up to 20.
  • Language — Google News edition language, e.g. en, it, de, fr, pt-BR, es-419 or zh-Hant. Combined with the country code to pick the edition (en + US = U.S. English edition).
  • Country code — Two-letter country code of the Google News edition, e.g. US, GB, IT, DE or BR. Also used for topic feeds and URL decoding.
  • Maximum articles per query — Maximum articles saved per query, topic or topic URL, e.g. 50. Google News returns at most about 100 articles per feed request; to collect more for one query, set dateFrom and dateTo and keep daily splitting on.
  • From date (YYYY-MM-DD) — Optional start date (inclusive) in YYYY-MM-DD format, e.g. 2026-09-01. Sent to Google as after:2026-09-01. Leave empty for the latest news.
  • To date (YYYY-MM-DD, exclusive) — Optional end date (exclusive) in YYYY-MM-DD format, e.g. 2026-10-01 to include 30 September. Must be later than dateFrom.
  • Recent news window — Relative recency filter sent to Google as when:1d etc., e.g. 1d for the last 24 hours. Ideal for schedules because it needs no date updates. Ignored when dateFrom or dateTo is set and for topic feeds.
  • Published after (optional) — Drop articles published before this moment, e.g. 2026-09-01 or 2026-09-01T08:00:00Z (no zone = UTC). Applies to search and topic feeds; dropped articles are not charged.
  • Split date ranges by day to reduce RSS caps — When both dates are set, query each day separately (e.g. 30 requests for September) so busy topics are not cut at Google's ~100-article feed limit. Turn off for a single request per query.
  • Only these publisher domains — Keep only articles from these publisher domains, e.g. reuters.com or techcrunch.com (subdomains included). Filtered articles are never charged.

Use cases

  • Brand monitoring.
  • Competitor news tracking.
  • Pr research.
  • News datasets and alerts.

Example input

{
"queries": [
"OpenAI"
],
"language": "en",
"country": "US",
"maxItemsPerQuery": 100,
"timeRange": "any",
"splitDateRangeByDay": true
}

Pricing & cost control

The primary event costs $0.002500 per News article (about $2.50 per 1,000 successful primary events). Only successful primary events are intentionally billed by this Actor; summary/status rows add context without adding primary-event charges.

Use the bounded input limits and filters to keep both event charges and platform usage predictable.

FAQ

What is this Actor for?
It is designed for brand monitoring, competitor news tracking, PR research.

Can I run it on a schedule?
Yes. You can schedule Actor runs on Apify and send the resulting dataset into automations, webhooks, storage, or downstream APIs.

How do I control cost and run size?
Use the input limits and filters shown in the Actor input form. The Actor applies bounded defaults and hard caps so large jobs remain predictable.

Pricing at a glance

Price per 1,000 news articles
This Actor$2.50
Median of 8 comparable Apify Store Actors (October 2026)$4.99

That is about 50% below the median per-result price for this task in Apify Store.

Subscriber discounts: on a paid Apify plan you pay even less per result — Bronze −10%, Silver −15%, Gold and higher −20% ($2.00 per 1,000 news articles on Gold).

Apify platform usage (compute, storage, data transfer) is included — you pay only the result price plus a small run start fee ($0.0001 per GB of run memory). No surprise compute bill, even on long runs.

Use the run's maximum charge setting to cap spending — the Actor stops cleanly when the limit is reached.

Use it from AI agents (MCP) and code

AI agents — Claude, ChatGPT, Cursor, VS Code, n8n AI agents and any MCP client can run this Actor through the official Apify MCP server: add https://mcp.apify.com?tools=zenomastro/google-news-intelligence to your client. Then just ask, for example:

"Find this week's Google News articles about OpenAI in English and group them by publisher."

The agent fills the input from the field descriptions and receives clean JSON it can reason over.

API — one HTTP call runs the Actor and returns the results directly:

curl -X POST "https://api.apify.com/v2/acts/zenomastro~google-news-intelligence/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["OpenAI"], "country": "US", "language": "en", "maxItemsPerQuery": 5, "resolveArticleUrls": false}'

The same works from the Apify Python/JavaScript clients, Make, n8n, Zapier, LangChain and LlamaIndex integrations, or on a schedule.

What does Google News Scraper API do?

It reads Google News for your search queries, headline topics, local news of any place or any pasted news.google.com page, and returns clean, deduplicated article rows: title, publisher, publisher website, publish time, Google's feed rank, image, description and, on request, the real publisher URL and the full article text. It works without a browser and without an API key, so runs are fast and cheap enough for hourly or daily schedules, and every run can be called through the Apify API, MCP or integrations.

Who it is for: PR and communications teams tracking brand and competitor coverage, marketers and SEO teams watching their market, analysts building news datasets, and AI agents that need current news as JSON.

How to use it

  1. Enter one or more search queries (Google operators such as "exact phrase", OR, -word and site:reuters.com work), or pick topics or locations instead.
  2. Choose the edition: Language and Country code (for example en + US), or several editions at once in More editions (for example US:en, GB:en, IT:it).
  3. Optionally set a Recent news window (past hour to past year) or a date range, and publisher filters.
  4. Click Start. Articles appear in the Output tab as soon as they are found; export them as JSON, CSV, Excel or HTML, or read them through the API.
  5. For alerts, save the input as a task with a monitor name and Emit only newly seen articles, then schedule it.

Main features

  • Search, topics and local news in one run: up to 50 queries, the 9 Google News topics (Top stories, World, Business, Technology…), up to 20 places for Google News' Local section (locations, e.g. Milan or New York) and up to 20 pasted topic, section or publication URLs.
  • Several countries and languages per run: editions reads every query, topic and place in up to 20 Google News editions (US:en, GB:en, DE:de, BR:pt-419…). Each row says which edition it came from.
  • Deduplicated and fairly billed: an article found by several queries, editions or date windows is saved and charged once; filtered, duplicate and already-seen articles are never charged.
  • Time filters: timeRange (past hour, 6 hours, 24 hours, 7 days, 30 days, year), absolute dateFrom/dateTo with optional day-by-day splitting to get past Google's ~100-article feed cap, and a publishedAfter cut-off.
  • Publisher filters: keep only, or drop, chosen publisher domains (subdomains included).
  • Story clusters: for topic and local headlines, relatedArticles lists the other outlets covering the same story and storyUrl links Google's Full Coverage page.
  • Publisher URLs and full text: decodes Google's encrypted news.google.com/rss/articles/CBMi… links into the publisher URL and can extract the article text, author, canonical URL, image and publish date.
  • Monitoring: a monitorName remembers delivered articles between runs (isNew), and onlyNew saves and charges only new ones.
  • Free analytics: one summary row per run (publisher and domain share, articles per day and per query or edition, keyword mentions) and, optionally, one query_summary row per query/topic/place and edition.

Input examples

Brand monitor across three markets, only new articles from the last 24 hours:

{
"queries": ["Acme Robotics", "\"Acme Robotics\" funding"],
"editions": ["US:en", "GB:en", "DE:de"],
"timeRange": "1d",
"maxItemsPerQuery": 100,
"monitorName": "acme-brand",
"onlyNew": true,
"includeQuerySummaries": true
}

Local news for two cities in Italian, with publisher URLs:

{
"queries": [],
"locations": ["Milano", "Torino"],
"language": "it",
"country": "IT",
"maxItemsPerQuery": 30,
"resolveArticleUrls": true
}

Topic headlines without a query:

{
"queries": [],
"topics": ["TECHNOLOGY", "BUSINESS"],
"language": "en",
"country": "GB",
"maxItemsPerQuery": 30
}

A full month for one query, read day by day:

{
"queries": ["electric vehicles -Tesla"],
"dateFrom": "2026-09-01",
"dateTo": "2026-10-01",
"splitDateRangeByDay": true,
"maxItemsPerQuery": 1000
}

Key inputs

InputWhat it doesExample
queriesGoogle News searches. Leave empty to read only topics, locations or URLs.["OpenAI", "Claude AI"]
topicsHeadline feeds of the edition, no query needed.["TECHNOLOGY", "TOP_STORIES"]
locationsLocal headlines for places (Google News Local section).["Milan", "New York"]
topicUrlsAny news.google.com topic, section or publication URL.["https://news.google.com/topics/CAAq..."]
language / countryThe edition when editions is empty."en" / "US"
editionsSeveral editions in one run, as COUNTRY:language.["US:en", "IT:it", "BR:pt-419"]
timeRangeRelative recency window for searches."1d"
dateFrom / dateToAbsolute range (dateTo is exclusive), optionally split by day."2026-09-01" / "2026-10-01"
publishedAfterDrop older articles (date or ISO date-time, UTC without a zone)."2026-10-01T06:00:00Z"
includeDomains / excludeDomainsKeep only, or drop, publisher domains.["reuters.com"]
resolveArticleUrlsDecode publisher URLs.true
enrichArticlesDecode and extract article text and metadata.true
monitorName / onlyNewRemember delivered articles across scheduled runs."ai-competitors" / true
includeQuerySummariesFree per-query statistics rows.true

Output

Every article is one dataset row (recordType: "article"). Example with illustrative values:

{
"recordType": "article",
"sourceType": "search",
"query": "Acme Robotics",
"topic": null,
"title": "Acme Robotics raises $40M to expand warehouse automation - Example Daily",
"googleNewsUrl": "https://news.google.com/rss/articles/CBMi...?oc=5",
"publishedAt": "2026-10-13T08:15:00.000Z",
"publisher": "Example Daily",
"publisherSite": "https://www.example.com",
"publisherDomain": "example.com",
"guid": "CBMi...",
"description": "Acme Robotics raises $40M to expand warehouse automation Example Daily",
"imageUrl": null,
"descriptionLinks": ["https://news.google.com/rss/articles/CBMi...?oc=5"],
"dateWindow": { "after": null, "before": null },
"scrapedAt": "2026-10-14T07:00:02.511Z",
"location": null,
"edition": "US:en",
"language": "en",
"country": "US",
"position": 1,
"relatedArticles": [],
"storyUrl": null,
"articleUrl": "https://www.example.com/news/acme-robotics-funding",
"articleUrlDecoded": true,
"decodeError": null,
"isNew": true
}
FieldMeaning
sourceTypesearch, topic, location or topicUrl
query / topic / locationWhat found the article
edition, language, countryThe Google News edition, e.g. US:en
positionRank of the article in Google's feed (1 = first)
title, publisher, publisherSite, publisherDomain, publishedAtArticle metadata from Google News
googleNewsUrlGoogle's link; articleUrl is the decoded publisher URL when resolveArticleUrls or enrichArticles is on
relatedArticles, storyUrlOther outlets of the same story and the Full Coverage page (topic and local feeds)
isNewWith a monitor: true when the article was not delivered by an earlier run
articleText, articleAuthor, articleCanonicalUrl, articleWordCount…With enrichArticles

Free rows that are never charged:

  • query_summary (with includeQuerySummaries): articles, uniquePublishers, topPublishers, articlesPerDay, firstPublishedAt, lastPublishedAt, itemsReturned, filtered, duplicates, skippedAsSeen, feedRequests, feedErrors and possiblyTruncated (Google returned a full ~100-article page, so a daily date split would find more).
  • summary: one per run with the totals, editions, locations, duplicates, stoppedReason and the coverage analytics.
  • error: a feed or input that failed, with the query, topic or location and the edition.

Publisher URLs and full text

Google News links such as news.google.com/rss/articles/CBMi… are encrypted IDs that no longer redirect to the publisher. With resolveArticleUrls (or enrichArticles) the Actor decodes them the same way the open-source Google News decoders do: it reads the signature from Google's article page and asks Google's own batchexecute endpoint for the real URL, ten articles per call, up to 2,000 per run.

  • articleUrl — the publisher URL, or the original Google News link when decoding was not possible.
  • articleUrlDecoded — true only when a real publisher URL (not a Google or consent page) was returned.
  • decodeError — why decoding failed (for example, Google rate-limited the run).

With enrichArticles, only decoded publisher pages are fetched, up to maxArticleEnrichments per run. articleEnrichmentSuccess is true only when the publisher page itself returned readable text; paywalled, blocked or JavaScript-only pages get a clear articleEnrichmentError and the article row is still delivered. Private and local network addresses are never fetched.

Reliability

  • A feed that fails becomes a free error row; the other queries, topics and editions still run, and a run never fails because of one bad query or input.
  • Temporary errors (timeouts, HTTP 429, 5xx) are retried with exponential backoff and Google's Retry-After; permanent answers such as HTTP 404 are not retried.
  • A consent or block page answered with HTTP 200 is reported as an error instead of being mistaken for "no news".
  • If 10 feeds fail in a row (Google is blocking or down), the run stops early with stoppedReason: "consecutiveFailures" instead of burning time.
  • Shortly before the run timeout the Actor stops starting new requests, saves the articles it already found (without URL decoding if there is no time left for it), the summary and the monitor state, and finishes normally (stoppedReason: "timeLimit").
  • At your maximum charge limit the run stops cleanly; articles that did not fit are not marked as seen, so a monitor delivers them on its next run.

Limits

  • Google News returns at most about 100 articles per feed request. For more, use a date range with daily splitting (up to 366 days), or more specific queries.
  • Up to 50 queries, 20 editions, 20 locations and 20 topic URLs per run, and at most 1,000 search feed requests (queries × daily windows × editions).
  • timeRange and dateFrom/dateTo apply to searches; topic, local and URL feeds always show current headlines (use publishedAfter to cut them by time).
  • Local news uses Google News' Local section for the place name you enter; very small or ambiguous places may return no articles or broader regional news.
  • Google News RSS and the URL decoder are public but undocumented Google endpoints and can change; failures are isolated into error rows.

FAQ

Do I pay for duplicates, filtered or error rows?
No. Only delivered article rows are charged. Duplicates across queries, editions and date windows, articles removed by your filters, already-seen articles with onlyNew, and the summary, query_summary and error rows are free.

How do I monitor news in several countries at once?
Add the editions to More editions (for example US:en, GB:en, FR:fr) and schedule the task with a monitor name and onlyNew. Every row carries its edition.

Why do I get fewer articles than maxItemsPerQuery?
Google returns up to about 100 articles per feed and fewer for niche queries. query_summary.possiblyTruncated tells you when the cap was probably hit; then use dateFrom/dateTo with daily splitting.

Why is articleUrlDecoded sometimes false?
Google occasionally rate-limits the decoder or returns no publisher URL. The article is still delivered with its Google News link, and decodeError explains why.

Is it legal to scrape Google News?
The Actor reads public Google News feeds and, on request, public article pages. Use the data responsibly and respect publishers' terms and copyright when you store or republish article text.

Something is missing or not working?
Open an issue on the Issues tab with the run ID; feature requests are welcome.

Extended capabilities

  • Search Google News across bounded date windows with deduplication and persistent monitoring.
  • Optionally fetch destination articles and extract canonical URL, dates, author, image, text, and word count.
  • Preserve source metadata while isolating per-article enrichment failures.