Skip to main content
The Custom Search JSON API does not expose a dedicated news tab, but you can reliably surface timely journalism by combining sort=date (most-recently-indexed first), dateRestrict (a rolling time window), and siteSearch (targeting specific news outlets or Google News–indexed domains). This approach mirrors the behavior of a news search tab and gives you precise control over which sources, time ranges, and topics your application surfaces.

How news search works

When you set sort=date, Google returns results ordered by the date each page was indexed rather than by relevance score. Pairing that with dateRestrict ensures you only retrieve articles published within a defined recency window. You can further sharpen results by restricting to known news domains (e.g., reuters.com, bbc.com, apnews.com) via siteSearch, or by configuring your Programmable Search Engine in the Control Panel to include a curated list of news outlets. Publication dates are not returned as a dedicated API field. Instead, they appear in the pagemap object — typically in metatags[0]["article:published_time"] (ISO 8601) or in metatags[0]["og:updated_time"] — and sometimes in the human-readable snippet text.
Google News (news.google.com) content itself is not accessible through the Custom Search API. Use siteSearch to target the original publisher domains where the articles are hosted.
string
required
Your news query. Standard Google operators work — for example:
  • q=inflation+rate — broad keyword match
  • q="interest+rate"+decision+intitle:central+bank — exact phrase plus title match
  • q=earthquake+OR+tsunami — either term
string
Set to date to order results by index date (most recent first) instead of relevance. This is the single most important parameter for news retrieval.
string
Limit results to content indexed within a rolling window. Format: d[N], w[N], m[N], y[N].For breaking news, use d1 or d2. For trend analysis, use m1 or m3.
Restrict results to a specific news outlet domain. Combine with siteSearchFilter=i to include only that source. You can only specify one domain per request; to search across multiple outlets, configure them as included sites in your engine.
string
i — include only the siteSearch domain. e — exclude that domain. Defaults to i.
string
Require this exact phrase to appear in every returned result. Useful for filtering out loosely related articles when your query terms are ambiguous.
string
Exclude any result that contains this term. Useful for filtering out topic crossover (e.g., excluding sports from results for "league table").
string
Restrict results to a specific language. Format: lang_XX (e.g., lang_en, lang_de, lang_fr). See Advanced Filters for the full list.
string
Geolocation of the end user. Two-letter country code (e.g., us, gb, in). Influences which regional editions of news sites rank higher.
integer
Results per page. Accepts 110. Defaults to 10.
integer
Pagination offset (1-based, max 91).

Make your first news search request

1

Pick your recency window

Decide how fresh the content needs to be. For a real-time news widget, use d1; for a weekly digest feature, use w1 or d7.
2

Choose a source strategy

Decide between:
  • Single outletsiteSearch=reuters.com&siteSearchFilter=i
  • Multi-outlet engine — Configure trusted domains in the Programmable Search Engine Control Panel, then omit siteSearch
  • Open web news — Omit siteSearch entirely; add sort=date and dateRestrict to surface any recently indexed news
3

Send the request

4

Extract the publication date

Parse the pagemap.metatags[0]["article:published_time"] field from each result item. Fall back to the snippet text if the structured field is absent.

Full curl examples

Retrieve the most recent articles about an earthquake from any indexed source:

Sample news result item

How to read publication dates

Publication dates are not a dedicated top-level API field. Extract them using this priority order:
Available in pagemap.metatags[0]["article:published_time"] when the publisher uses the Open Graph Article protocol. Returns an ISO 8601 timestamp:
Some publishers include Schema.org NewsArticle markup. Check pagemap.newsarticle[0].datePublished:
Falls back to pagemap.metatags[0]["og:updated_time"] when article:published_time is absent:
Many news snippets begin with the publication date in the format "Nov 8, 2024 — ...". Parse it as a last resort:
pagemap data reflects what Google extracted at crawl time. A very recently published article may not yet have its pagemap fully populated. Use the snippet date prefix as a fallback for breaking-news use cases where freshness is critical.

Build a news monitoring workflow

1

Set a polling interval

For near-real-time monitoring, poll the API every 15–30 minutes using dateRestrict=d1 and sort=date. This keeps you within the free tier of 100 queries/day if you poll every ~15 minutes.
2

Track seen articles

Store the link (canonical URL) of each returned article in a database or cache. On each poll, skip any item whose link you have already processed.
3

Filter by publication date

After extracting article:published_time, discard any articles published before your last poll timestamp to prevent duplicates during recrawl windows.
4

Handle pagination for broad queries

If a topic is fast-moving, the first page may fill quickly. Page through results (start=11, start=21, …) until you encounter an article you’ve already seen.
For high-volume news monitoring on the paid tier (up to 10,000 queries/day per project), use a caching layer in front of the API. Cache results by q + dateRestrict + siteSearch for 5–10 minutes to avoid duplicate calls for the same topic from concurrent users.

Error reference