← Blog

News

Google News Scraper: Export Headlines by Keyword, Topic and Date

Scrape Google News into JSON or CSV: search operators, topics, 80+ language-region editions, date ranges and decoded article links. A practical news API guide.

Epic Scrapers

Google News aggregates thousands of publishers, which makes it the obvious starting point for media monitoring. Getting the data out is harder. There’s no official Google News API, the RSS feeds return around 100 items per search, and the links in them point to Google redirect URLs rather than the actual articles.

The Google News Scraper gives you that data as a dataset. Search with a query (including operators like site: and intitle:), browse topics, pick any of 80+ language and region editions, set a date window, and get back title, publisher, publish time, article URL and image for each result. Above 100 results, the actor splits your date range into individual days, so you can collect far more than a single Google News search shows.

What you get per article

Field Description
title Headline
link Article URL (decoded to the publisher URL when fetchArticleDetails is on)
source Publisher name or domain
sourceUrl Publisher homepage
publishedAt Publish time, ISO 8601
image Preview image from the article’s Open Graph or Twitter Card tags
guid Google News item ID, useful for de-duplication

How to scrape Google News

  1. Open the Google News Scraper on Apify.
  2. Enter a query, pick topics, paste topicsHashed IDs, or combine them. Results are merged.
  3. Choose a language edition, e.g. US:en, GB:en, DE:de, FR:fr, BR:pt-419 or JP:ja.
  4. Set a time window: an openEndedDateRange such as 1h, 7d or 1y, or a fixed dateFrom / dateTo.
  5. Set maxItems and decide whether to enable fetchArticleDetails.
  6. Run, then export JSON, CSV, Excel or HTML.
{
  "query": "\"Acme Corp\" -jobs",
  "language": "US:en",
  "openEndedDateRange": "1d",
  "maxItems": 100,
  "fetchArticleDetails": true
}

fetchArticleDetails visits each article to resolve the real publisher URL and grab the preview image. It makes runs slower, so leave it off when headlines and Google links are enough.

Topic feed with no keyword

Topics run as a standalone search. The query field defaults to "AI breakthrough", so set it to an empty string when you only want topics:

{
  "query": "",
  "topics": ["BUSINESS", "TECHNOLOGY"],
  "language": "GB:en",
  "openEndedDateRange": "12h",
  "maxItems": 200
}

Available topics: WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH. For narrower sections such as Technology > Artificial intelligence, copy the hash from a news.google.com/topics/... URL into topicsHashed, including /sections/... if present.

Historical research with a fixed date range

openEndedDateRange defaults to 60d and overrides fixed dates whenever it’s set. To use dateFrom and dateTo, clear it:

{
  "query": "intitle:\"interest rates\" AND (ECB OR \"European Central Bank\")",
  "language": "DE:de",
  "dateFrom": "2026-01-01",
  "dateTo": "2026-06-30",
  "openEndedDateRange": "",
  "maxItems": 3000
}

With maxItems above 100, the actor searches day by day across the range. That’s how it gets past Google News’ cap of roughly 100 results per search.

Search operators that work

Operator Example Effect
site: site:reuters.com tariffs One publisher only
intitle: intitle:Samsung Keyword must be in the headline
"..." "climate change" Exact phrase
- apple -fruit Exclude a term
AND / OR AI AND (ethics OR regulation) Boolean logic

intitle: is the most useful filter for monitoring: it removes articles that only mention your brand in passing.

Sample output

{
  "title": "Web Scraping Optimization: Tips for Faster, Smarter Scrapers",
  "link": "https://hackernoon.com/web-scraping-optimization-tips-for-faster-smarter-scrapers",
  "source": "hackernoon.com",
  "sourceUrl": "https://hackernoon.com",
  "publishedAt": "2024-11-15T08:00:00.000Z",
  "image": "https://hackernoon.imgix.net/images/example.png",
  "guid": "CBMiiAFBVV95cUxQUXh5WVZ2RkNpNG9ndjF6V3hMRHBR..."
}

image is empty when a publisher doesn’t set preview tags.

Google News API: run it from code

Use the Apify API as your Google News API. Keep your token in APIFY_TOKEN.

cURL:

curl -X POST \
  "https://api.apify.com/v2/acts/epicscrapers~google-news-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "site:techcrunch.com intitle:funding", "language": "US:en", "openEndedDateRange": "7d", "maxItems": 50}'

Python (pip install apify-client), comparing coverage of one story across editions:

import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
editions = ["US:en", "GB:en", "DE:de", "FR:fr"]

for lang in editions:
    run = client.actor("epicscrapers/google-news-scraper").call(run_input={
        "query": "\"electric vehicles\" tariffs",
        "language": lang,
        "openEndedDateRange": "3d",
        "maxItems": 50,
    })
    items = client.dataset(run["defaultDatasetId"]).list_items().items
    sources = sorted({i["source"] for i in items})
    print(lang, len(items), "articles from", len(sources), "publishers")

News monitoring workflows

Brand and competitor alerts. Save an input with intitle:"YourBrand" and openEndedDateRange: "1h" as an Apify task, schedule it hourly, and send new items to Slack or email through an integration. De-duplicate on guid so each story alerts once.

PR measurement. Run a monthly query for your company over the previous month, then count articles per source and per day from publishedAt. Comparing editions (US:en vs DE:de) shows where coverage actually landed.

Market and investor news. Track tickers, executives or sectors with Boolean queries and feed the headlines into a sentiment model or an LLM summary each morning.

Newsletters and curation. Pull a topic feed (TECHNOLOGY, or a hashed section) with fetchArticleDetails on, and you have titles, clean links and images ready for a newsletter template.

Research datasets. Use fixed date ranges with a high maxItems to build a corpus of coverage on an event, then fetch the full article text from each link with a separate article extractor.

For video coverage of the same topics, see the YouTube transcript scraper guide.

FAQ

Is there an official Google News API?

No. Google retired its News Search API years ago. Google News still publishes RSS feeds, which this actor uses, and it adds pagination by day, link decoding and structured output on top.

Can I get the full article text?

No, the actor returns metadata: headline, link, publisher, date and image. Pass the link field to an article or web-page extractor if you need body text.

How many results can I get?

A single Google News search returns about 100 items. Set maxItems above 100 and the actor walks the date range one day at a time to collect more.

The actor reads public RSS feeds designed for syndication. Headlines and links are generally fine for monitoring and analysis; republishing full articles is not. Respect publisher copyright and applicable laws. This is not legal advice.

What if runs get blocked?

The actor uses Apify Proxy by default. If you see blocks on large jobs, switch proxyConfiguration to residential proxies or shorten the date range.

Start monitoring the news

Enter one query, pick your edition, set openEndedDateRange to 1d and run it. Then schedule it. Open the Google News Scraper on Apify or see the actor page.