Google News headlines, sources, and links via the Apify Google News API, hosted MCP.
One address for any MCP client. Your key stays in your Odel vault.

At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Odel could not list its tools without signing in.
The efficient, reliable, and developer-friendly way to use the Google News API.
Actor page: apify.com/johnvc/GoogleNewsAPI Input schema: apify.com/johnvc/GoogleNewsAPI/input-schema
The Google News API searches Google News and returns clean, structured JSON, one item per page of results. Each item carries the search parameters, search metadata (total results, pages processed), and a news_results array where every article includes title, link, source, snippet, and ranking position. Supports location targeting, country and language filtering, safe search, duplicate filtering, and pagination control.
Clone the repository
git clone https://github.com/johnisanerd/Apify-Google-News-Scraper.git
cd Apify-Google-News-Scraper
Install dependencies with UV
# Install UV if you do not have it:
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install project dependencies:
uv sync
Configure your API key
cp .env.example .env
# Edit .env and add your Apify API key
# Get your free API key at: https://apify.com?fpr=9n7kx3
Run the example
uv run python google-news-scraper.py
export APIFY_API_TOKEN="your_api_key_here"
uv run python google-news-scraper.py
Real-time coverage at scale. Google News aggregates tens of thousands of publishers. Instead of maintaining a client for each outlet, you query the aggregated index and get ranked results across all of them in a single call.
Geo-targeted results. Filter by country code (gl), language (hl), Google domain, and location string for precise control over the geographic and linguistic scope.
Configurable depth. Set max_pages for a quick headline snapshot or a deeper sweep. Each page is returned as a discrete item, easy to stream, filter, or load into a pipeline.
Predictable, pay-per-use pricing. A small per-run setup fee plus a per-page fee, with no subscription. You control cost with the page limit.
Consistent JSON output. Every article comes back with the same fields (title, link, source, snippet, position), so there is no schema variance between publishers.
Easy to automate. Call it from Python in a few lines, or load it as an MCP tool so assistants like Claude and Cursor can pull fresh news for you on demand.
gl), language (hl), and Google domainnfpr for exact-match queriesnews_results array with title, link, source, snippet, and position per article{
"q": "artificial intelligence",
"max_pages": 1
}
{
"q": "artificial intelligence breakthroughs",
"google_domain": "google.com",
"gl": "us",
"hl": "en",
"safe": "off",
"max_pages": 2
}
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
q | string | Yes | - | Search query, e.g. artificial intelligence, coffee. |
location | string | No | - | Location string for localized results, e.g. Austin, TX, Texas, United States. |
google_domain | string | No | google.com | Google domain to search, e.g. google.co.uk. |
gl | string | No | - | Country code (ISO 3166-1 alpha-2), e.g. us, gb. |
hl | string | No | - | Language code (ISO 639-1), e.g. en, fr. |
lr | string | No | - | Language restriction, e.g. lang_en. |
safe | string | No | off | Safe search: active or off. |
nfpr | string | No | 0 | Exclude auto-corrected results: 0 or 1. |
filter | string | No | 0 | Filter duplicate results: 0 or 1. |
max_pages | integer | No | 1 | Maximum pages to fetch (~10 articles each); 0 = unlimited. Each page is billed separately. |
output_file | string | No | - | Optional filename to save results. |
A real result for artificial intelligence (one item per page; the news_results array is trimmed to a single article here, and search_information carries additional fields).
{
"search_parameters": {
"q": "artificial intelligence",
"gl": "us",
"hl": "en",
"safe": "off",
"nfpr": "0",
"filter": "0",
"max_pages": 1
},
"search_metadata": {
"total_results": 9,
"news_count": 9,
"pages_processed": 1,
"max_pages_set": 1,
"pagination_limit_reached": false
},
"search_information": {
"query_displayed": "artificial intelligence"
},
"search_timestamp": "2026-05-29T11:27:03",
"page_number": 1,
"news_results": [
{
"position": 1,
"title": "Improving multimodal wearable sensing for healthcare with artificial intelligence",
"link": "https://www.nature.com/articles/s41587-026-03134-z",
"source": "Nature",
"snippet": "This Comment explores artificial intelligence-driven strategies to accelerate the clinical translation of multimodal wearable sensors."
}
]
}
Each page item echoes the search_parameters you sent, reports search_metadata (total results and pages processed), and lists every article in news_results with its ranking position, title, link, source, and snippet.
You can load the Google News API as an MCP tool so assistants call it for you. The MCP server URL preloads just this one Actor:
https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI
Authenticate with OAuth in the browser when offered, or with your Apify API token (the same APIFY_API_TOKEN used by the Python example). Get a token at https://console.apify.com/settings/integrations and a free Apify account at https://apify.com?fpr=9n7kx3 .

Cowork is the desktop app's automation mode. To give it the Google News API as a tool, add the Apify MCP server as a connector.
claude_desktop_config.json directly).
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI"
]
}
}
}
Download the desktop app and start a free trial: https://claude.ai/referral/uIlpa7nPLg More help: https://docs.apify.com/platform/integrations/claude-desktop

Claude Code is the command-line tool. Add the Actor's MCP server with one command:
claude mcp add --transport http apify \
"https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI"
To use a token instead of browser OAuth:
claude mcp add --transport http apify \
"https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI" \
--header "Authorization: Bearer YOUR_APIFY_TOKEN"
Then verify with claude mcp list, or run /mcp inside a session. Ask Claude Code to call the Google News API.
Try Claude Code free: https://claude.ai/referral/uIlpa7nPLg Claude Code MCP docs: https://code.claude.com/docs/en/mcp

On claude.ai you add Apify as a connector, then enable just this Actor's tool.
johnvc/GoogleNewsAPI.https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI, using OAuth when prompted.Open Claude on the web: https://claude.ai/referral/uIlpa7nPLg

Cursor reads MCP servers from a project file at .cursor/mcp.json.
.cursor/mcp.json:{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI"
}
}
}
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}
New to Cursor? Get it here: https://cursor.com/referral?code=XQP4VBLI3NNX

ChatGPT connects to the Apify MCP server through Developer mode (available on ChatGPT Pro, Plus, Business, Enterprise, and Education plans).
https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPIMore help: https://docs.apify.com/platform/integrations/mcp
Use the Google News API to power media monitoring, competitive intelligence, trend detection, and LLM context pipelines with reliable, structured results.
Ready-to-run examples on the Apify Store.
Open a ready-to-send prompt about the Google News API in the AI of your choice:
Last Updated: 2026.09.22