Google News API
Search and scrape news articles from Google News. Fast. Search several queries in a single run, limit results to the past hour, day, week, month or year, and filter by location and language. Returns structured JSON with article titles, links, sources, snippets, publication dates, exact UTC publish times and thumbnails. News monitoring, markets, and content aggregation. Replaces the retired Google News Lite API, so Lite users can move their searches here.
Input parameters
| PARAMETER | TYPE | REQ | DEFAULT | DESCRIPTION |
|---|---|---|---|---|
| q | string | no | — | Search query string for news articles (e.g., 'technology news', 'coffee', 'artificial intelligence'). Provide this, queries, or both. |
| queries | string[] | no | — | Several search queries in one run (e.g., 'Nvidia', 'OpenAI', 'Anthropic'). Each is searched separately with the same settings, and repeats are skipped. The setup fee is charged once per run, not per query. |
| time_range | enum | no | any | Only return articles published in the past hour, day, week, month or year. Any value other than 'any' sorts results newest first and stops at the first article older than the window. |
| location | string | no | — | Geographic location for localized news results (e.g., 'Austin, TX, Texas, United States', 'New York, NY'). |
| google_domain | string | no | — | Google domain to use for the search (e.g., 'google.com', 'google.co.uk', 'google.fr'). |
| gl | enum | no | — | Country code for localization (ISO 3166-1 alpha-2, lowercase). |
| hl | enum | no | — | Language code for localization (ISO 639-1, lowercase). |
| lr | string | no | — | Language restriction for search results (e.g., 'lang_en', 'lang_es', 'lang_fr'). |
| safe | enum | no | off | Safe search setting to filter explicit content. |
| nfpr | enum | no | 0 | Exclude results from auto-corrected queries when the original query is misspelled. |
| filter | enum | no | 0 | Enable or disable duplicate content filtering. |
| max_pages | integer | no | 1 | Maximum number of pages to fetch per query. Set to 0 to fetch all available pages, up to 30. Page 1 typically returns 10 to 25 articles and later pages about 10. — drives your bill |
Output schema
| FIELD | TYPE | DESCRIPTION | NULLABLE |
|---|---|---|---|
| page_number | integer | Results page this row came from, 1-indexed. Every page of every query is its own row. | no |
| search_parameters | object | The query and settings used for this row, including time_range, so rows from a multi-query run stay tied to their query. | no |
| search_metadata | object | Total results, articles returned, pages processed and whether the page limit was reached. | no |
| no_results | boolean | Set to true on the single row a query returns when it finds nothing, so every query in a multi-query run is accounted for. No page fee is charged for it. | yes |
| news_results | array | The articles on this page, one object each with the fields below. The News Articles dataset view (?view=articles) unwinds them to one row per article. | no |
| position | integer | Rank of the article in its query's results, 1-indexed and continuous across pages. | no |
| title | string | Article headline. | no |
| link | string | Direct URL to the article on the publisher's site. | no |
| source | string | Publisher name, for example Reuters or BBC. | no |
| snippet | string | Short excerpt from the article. Some top-story articles on page 1 come without one. | yes |
| date | string | Relative publication date as Google shows it, for example '2 hours ago'. | no |
| published_at | string | Exact publication time in UTC, for example '2026-10-10 03:34:00 UTC'. Sort and de-duplicate across runs on this rather than on date. | no |
| thumbnail | string | Article thumbnail image URL, when Google shows one. | yes |
Worked examples
{
"q": "technology news"
}
{
"queries": ["Nvidia", "OpenAI", "Anthropic"],
"time_range": "day",
"gl": "us",
"hl": "en",
"max_pages": 2
}
Coverage
n8n templates
Free n8n workflows that run this source. Import one, add your Apify token, and it runs on a schedule.
Written about this source
Walkthroughs, worked examples and posts about this source.
Code
curl
curl -X POST "https://api.apify.com/v2/acts/johnvc~GoogleNewsAPI/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"q": "technology news"}'
Python
from apify_client import ApifyClient
client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/GoogleNewsAPI").call(
run_input={'q': 'technology news'}
)
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item)
MCP
Apify's hosted MCP server loads this source from the URL below as the tool johnvc--GoogleNewsAPI. Sign in to Apify when your client asks (OAuth), or send an Apify token as an Authorization: Bearer header.
https://mcp.apify.com/?tools=johnvc/GoogleNewsAPI