Google News is the widest free news aggregation layer on the web, and it has no official door for developers. I keep needing it for monitoring jobs: a brand name, a ticker, a competitor. This post walks through the DIY scrape and its failure points, then the shortcut I actually use: the Google News API on Apify, which takes a keyword and returns headlines as structured JSON.
Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.
Does Google News have an API?
Not an official one. Google shut down its old News API years ago, and what remains is RSS: per-query feeds that work for casual reading but cap results, offer no pagination control, and carry only basic fields. So for anything programmatic, a Google News API today means a scraper consumed like an API: send a query and a locale, get articles back as JSON with source and date attached.
What the Google News API returns
The Google News API returns news search results as structured JSON: title, link, source, snippet, publication date, and position for every article, about ten per page.
| Field | Example | Notes |
|---|---|---|
title |
"Nvidia tops earnings expectations again" |
Headline as shown |
link |
https://www.reuters.com/technology/... |
Publisher URL |
source |
"Reuters" |
Outlet name |
snippet |
"The chipmaker reported quarterly revenue of..." |
Short teaser text |
date |
"2 hours ago" |
Relative string, normalize client-side |
position |
3 |
Rank on the page |
Each dataset item is one results page holding a news_results array plus search_metadata (total_results, news_count, pages_processed), so flatten across pages to get one row per article.
Who this is for
PR teams monitoring brand mentions, finance people watching a ticker's news flow, and builders wiring headlines into dashboards, newsletters, or agents.
The manual way, and where it breaks
Scraping news.google.com yourself starts out fine: fetch the page, parse the cards. Then the problems arrive. The markup uses generated class names that change without notice. Results localize to whatever region your requests exit from, so a US query quietly turns into German coverage. Consent pages interrupt automated sessions in some regions. And once you run at any volume, you are maintaining proxies, retries, and parser fixes instead of the thing you were building.
The faster way: run the Google News scraper
Apify Console
- Open the Google News API and click Try for free.
- Set
qto your keyword; optionally setgl,hl, andmax_pages. - Run it and download the dataset as JSON, CSV, or Excel.
REST
curl -X POST "https://api.apify.com/v2/acts/johnvc~GoogleNewsAPI/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "q": "nvidia", "gl": "us", "hl": "en", "max_pages": 1 }'
Run endpoint reference: the Apify API docs.
Get Google News headlines in Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("johnvc/GoogleNewsAPI").call(
run_input={
"q": "electric vehicles",
"gl": "us",
"hl": "en",
"filter": "1",
"max_pages": 2,
}
)
for page in client.dataset(run["defaultDatasetId"]).iterate_items():
for article in page.get("news_results", []):
print(article["date"], article["source"], article["title"])
filter: "1" collapses duplicate coverage of the same story, which starts to matter the moment you monitor anything popular. A ready-made version lives in the task Get Google News results by keyword as JSON.
Export headlines to CSV
Export Google News results to CSV is the same input with a spreadsheet ending, useful when the person reading the coverage report does not touch code.
Monitor brand mentions for PR
Monitor brand mentions in Google News for PR is the recurring version: query the brand name, filter duplicates, and route new rows to wherever your team lives.
Track one ticker's news flow
Track Nvidia news headlines by keyword covers the market-watch case: one keyword, repeated runs, source and date on every row so you can see who broke a story and when.
Use it inside n8n
Google News API for n8n workflows plugs the Actor into an n8n flow, so a fresh headline can trigger summarization, alerting, or a database insert without custom glue code.
Use it from Claude via MCP
Through the Apify MCP server, Claude, Claude Code, and Cursor can run a news search mid-conversation and answer "what happened with this company today" from live results. The task Pull Google News headlines into Claude via MCP has the config, and claude.ai is the place to start if you have not tried Claude with tools yet.
FAQ about scraping Google News
Is there a free Google News scraper?
This one bills per page: a small setup fee per run plus a per-page fee, with about ten articles on a page, so a one-page run costs a few cents and a ten-page run stays near a dime. New Apify accounts include free platform credit, which covers plenty of test runs before you pay anything.
How is this scraper different from Google News RSS?
RSS works until you need control. The scraper adds duplicate filtering, safe search, locale and domain selection (gl, hl, google_domain), pagination to the depth you set, and a documented JSON shape with position and page metadata. RSS gives you a fixed feed and whatever happens to be in it.
Can Claude run the Google News scraper through MCP?
Yes. Connect the Apify MCP server and the scraper becomes a callable tool in Claude, Claude Code, or Cursor, which turns "check the news on X" into a live query with sources attached.
How do I schedule the scraper to track a topic?
Save your input as a task, attach an Apify Schedule with a cron expression, and each run appends fresh pages with timestamps. That is the whole setup behind the brand and ticker examples above; start from the Google News API.
Does the Google News scraper return full article text?
No. You get title, snippet, link, source, and date, and you fetch body text downstream from link if the job needs it. Two more honest limits: date is a relative string like "1 day ago", so normalize before filtering, and each run handles one query, so batch by looping runs.
More from Truffle Pig Data
Same Actor, other angles: Google News API for AI Agents on Medium, the Google News API write-up on LinkedIn, and how to monitor brand mentions in Google News on Peerlist.
Wrapping up
Headlines stop being a chore once they arrive as JSON. Point the Google News API at a keyword you care about and wire the output wherever it needs to go.
Top comments (0)