Google APInews.google.com ↗
Search Google News by query, country, and language. Returns up to 100 ranked article records including title, URL, source, and publish date.
What is the Google API?
The Google News API exposes one endpoint, search_news, that returns up to 100 ranked article records for any free-text query. Each response includes article title, Google News redirect URL, article ID, source publisher, and total result count — all filtered by country edition and language code. It is the fastest way to pull structured news search results from news.google.com without managing a browser.
curl -X GET 'https://api.parse.bot/scraper/0d2d3400-d07f-4b50-9b0f-7af4ab516089/search_news?query=climate+change' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace news-google-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Google News Search — find articles, inspect results."""
from parse_apis.news_google_com_api import GoogleNews, InputFormatInvalid
client = GoogleNews()
# Search for articles on a topic, capped to 5 total items.
for article in client.articles.search(query="climate change", limit=5):
print(article.title, "|", article.source_name, "|", article.published_at)
# Drill into the first result of a different query.
article = client.articles.search(query="artificial intelligence", limit=1).first()
if article is not None:
print(article.title)
print(article.url)
print(article.source_url)
# Demonstrate error handling for a malformed country code.
try:
client.articles.search(query="news", country="INVALID", limit=1).first()
except InputFormatInvalid as e:
print("Bad input:", e.message)
print("exercised: articles.search")
Returns the Google News search results for a free-text query as a flat list of articles (one row per article), ordered as Google News ranks them. One round trip. Google News exposes at most 100 results per search and offers no continuation, so total_available (0-100) is the whole accessible set and limit only trims it; there is no pagination. Search operators Google News accepts inside the query (for example 'when:7d' for the last 7 days, or 'site:bbc.com') work as part of the query text. language and country pick the Google News edition; the returned language field echoes what the site served. A query with no matching articles returns total_available 0 and an empty articles array. Article url values are Google News redirect links to the publisher; article_id is Google's stable article identifier. Malformed language/country codes are rejected before any request.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of articles to return; values above 100 are clamped to 100. |
| queryrequired | string | Free-text search query, as typed into the Google News search box. |
| country | string | Two-letter country code for the news edition (US, DE). Verified with US and DE. |
| language | string | Interface/edition language code: two lowercase letters optionally followed by a region (en, en-US, de). Verified with en-US and de. |
{
"type": "object",
"fields": {
"query": "the query string that was searched",
"country": "uppercased country code used for the edition",
"articles": "array of article records: article_id (Google News article identifier), title (publisher suffix removed), url (Google News redirect link), published_at (ISO-8601 UTC), source_name, source_url",
"language": "language of the edition the site served (e.g. en-US)",
"total_available": "integer count of articles Google News returned for the query (max 100) before limit is applied"
},
"sample": {
"data": {
"query": "climate change",
"country": "US",
"articles": [
{
"url": "https://news.google.com/rss/articles/CBMiqAFBVV95cUxQbkN6Z21ISkJEam8zX3g1YlB4UEdTTlo3VU5qeGVtTllnU0MzcllwdEJ4ampMczlYRjdheXZ4SlpmMk1yaFU0Mm1PQm00RFY0VXZsZ1ZSVFNIU3JGNGE0M1RmalRYcGxqRVlwcjdhLWxVcHNJSFlIaUJVbTV4MG9ndUdJcExzMEY5ejRMZjUtdEtYTmNzR3lqakFLdlNTWWN2Qm50S1VOSWY?oc=5",
"title": "10 ways climate-change-altered hurricanes may come to bite us",
"article_id": "CBMiqAFBVV95cUxQbkN6Z21ISkJEam8zX3g1YlB4UEdTTlo3VU5qeGVtTllnU0MzcllwdEJ4ampMczlYRjdheXZ4SlpmMk1yaFU0Mm1PQm00RFY0VXZsZ1ZSVFNIU3JGNGE0M1RmalRYcGxqRVlwcjdhLWxVcHNJSFlIaUJVbTV4MG9ndUdJcExzMEY5ejRMZjUtdEtYTmNzR3lqakFLdlNTWWN2Qm50S1VOSWY",
"source_url": "https://yaleclimateconnections.org",
"source_name": "Yale Climate Connections",
"published_at": "2026-09-15T11:00:00+00:00"
}
],
"language": "en-US",
"total_available": 100
},
"status": "success"
}
}About the Google API
What the API Returns
The search_news endpoint accepts a query string — exactly what you would type into the Google News search box — and returns a flat array of articles ordered by Google News relevance. Each article record includes article_id (Google's own identifier for the article), title (with publisher suffixes stripped), a url pointing to the Google News redirect, and metadata fields. The top-level response also carries query, language, country, and total_available — the raw count of results Google News produced before any limit is applied, capped at 100.
Filtering by Edition
Two optional parameters control which regional edition Google News serves. country accepts a two-letter ISO code (e.g. US, DE) and language accepts a two-letter code with an optional region suffix (en, en-US, de). Both have been verified against US and DE editions. The response echoes back the country as an uppercased code and the language as served by Google News (e.g. en-US), so you can confirm the edition that was actually applied.
Pagination and Result Count
Google News does not support result pagination — it exposes at most 100 articles per search query and offers no continuation token or offset parameter. The total_available field reflects this ceiling: it is an integer between 0 and 100 representing the full set of results Google News returned. The limit input clamps the returned array without affecting total_available, and values above 100 are silently clamped to 100. If you need broader coverage for a topic, the practical approach is to vary the query string or edition parameters across multiple calls.
The Google API is a managed, monitored endpoint for news.google.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when news.google.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official news.google.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track breaking news coverage for a brand or topic by polling
search_newswith a keyword and comparingtotal_availableover time - Build a media monitoring dashboard that aggregates article titles and URLs across multiple country editions
- Feed a summarization pipeline by collecting article URLs from
search_newsand passing them downstream for full-text retrieval - Detect publication spikes around an event by recording
total_availablecounts at regular intervals for a query - Compare how a story is covered in different markets by running the same query with different
countryandlanguagecombinations - Populate a newsletter digest with the top-ranked articles for a subject area, using the ranked order Google News assigns
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Google News have an official developer API?+
What does each article record in the `articles` array contain?+
article_id (Google News' own identifier for the piece), title (with publisher name suffixes removed), and url (the Google News redirect link for the article). The response does not currently include full article body text, author names, or normalized direct publisher URLs — it covers the metadata Google News surfaces in search results.Can the API return more than 100 results for a single query?+
total_available reflects that hard ceiling. There is no offset or pagination parameter. If your use case requires broader result sets, one approach is issuing multiple calls with varied query phrasing or date-specific terms. You can fork this API on Parse and revise it to add query-variation or date-range logic as a wrapper.Does the API return publish dates or timestamps for articles?+
search_news. The response covers article_id, title, url, language, country, and total_available. You can fork the API on Parse and revise it to add date fields if the underlying source exposes them for the edition you are targeting.Which country and language editions are supported?+
country and language parameters have been verified against US (US, en-US) and Germany (DE, de) editions. Other two-letter country codes and language codes may work but are unverified. The response echoes back the actual country and language values served, which lets you detect mismatches. You can fork the API on Parse and revise it to add validation or extend verified coverage to additional locales.