Google News Scraper — Free Headlines by Keyword & Country avatar

Google News Scraper — Free Headlines by Keyword & Country

Pricing

Pay per usage

Go to Apify Store
Google News Scraper — Free Headlines by Keyword & Country

Google News Scraper — Free Headlines by Keyword & Country

Free Google News scraper: headlines, source and publish time by keyword or topic, for several countries and languages per run. JSON, CSV, Sheets.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Data Rock

Data Rock

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Google News Scraper — Free Headlines by Keyword, Topic & Country

Get the latest Google News headlines for any keyword or topic: headline, publisher, publisher website, publish time, rank, related coverage and the Google News link. Several queries and several countries/languages in one run; schedule it and get only new articles since the last run.

Free. No usage fee; a run only uses a little Apify platform compute from your credits.

Features

  • Keywords or topics: search any phrase (operators work: "exact phrase", OR, -word, site:example.com, when:7d) or pick topics TOP_STORIES, WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH.
  • 50 countries: US, GB, DE, FR, IN, BR… The language is chosen per country automatically; override with language or per edition, e.g. CH:fr, US:es.
  • Time window: past hour, 12 h, 24 h, 7 days, month, year, or your own from/to dates.
  • Can't run for hours: maxRunSeconds (default 300 s) stops the run cleanly and keeps results; maxItems caps the run.
  • Reliable: every feed is retried up to 5 times with backoff; one bad query or country never stops the run; each query that fails gets its own item with status and errorMessage. The run only fails if every feed failed.
  • Only new since last run for alerts (Slack, Sheets, n8n, Make, Zapier).
  • Flat output for CSV / Google Sheets.

Free limits: up to 5 queries/topics per run (extra ones are skipped with a warning) and 500 articles per run (hard limit). One feed returns up to 100 articles per query × country; splitByDay can return more for one query, up to the 500-per-run limit.

Input

FieldTypeDefaultDescription
queriesstring[]–Keywords or phrases (max 5 incl. topics)
topicsstring[][]Google News topics
countriesstring[]["US"]ISO-2 codes, optionally CC:lang
languagestringnativeForce a language, e.g. en, de, en-GB
maxItemsPerQueryinteger1001–500 per query × country (above 100 needs splitByDay)
periodenum7dany, 1h, 12h, 1d, 7d, 1m, 1y (search queries only)
from / todateemptyCustom range YYYY-MM-DD (inclusive); overrides period
splitByDaybooleanfalseFetch each day separately + dedupe (bounded by the 500-per-run limit)
maxItemsinteger500Cap for the whole run, 1–500
maxRunSecondsinteger300Clean stop at this time; unfinished queries get status: skipped
outputFormatenumnestednested or flat
onlyNewSinceLastRunbooleanfalseSkip articles returned by earlier runs of the same input
stateKeystringautoCustom name for that memory
proxyConfigurationobjectnoneNot needed normally

No input at all = US top stories.

Output

FieldDescription
dataTypegoogleNews
statusok; per query: no_results, skipped, error, rateLimited, invalid_input
query / topicWhat returned the article
country / languageEdition
rankPosition in the feed (1 = top)
titleHeadline (publisher suffix removed); titleWithSource keeps Google's original
source / sourceUrlPublisher name and website
publishedAtISO 8601
googleNewsUrl / articleIdGoogle News link (redirects to the publisher) and its id
related / relatedCountOther outlets covering the same story (topic feeds); flat: relatedTitles, relatedSources
feedUrlThe exact RSS URL used
coverageNoteSet when a feed/window hit Google's ~100-article cap (results may be incomplete)
errorMessageOnly on non-ok items
scrapedAtISO 8601

A RUN_REPORT record in the key-value store summarises feeds, successes, failures, items and duration.

{ "dataType": "googleNews", "query": "bundesliga", "topic": null, "country": "DE", "language": "de", "rank": 1,
"title": "FC Bayern: …", "source": "SPORT1", "sourceUrl": "https://www.example.com", "publishedAt": "2026-10-23T16:30:24.000Z",
"googleNewsUrl": "https://news.google.com/rss/articles/<articleId>", "relatedCount": 0, "status": "ok", "errorMessage": null, "scrapedAt": "2026-10-23T17:27:33.016Z" }

Only new since last run

Article ids already returned are kept in your named key-value store google-news-state under a key derived from queries + topics + countries + language (or your stateKey); last 20,000 ids, per country.

Trend → news

Run Google Trending Now, take each term and pass them as queries.

Not affiliated with Google. You are responsible for using the data lawfully.