Google Top Stories in the search API: which searches show them and what comes back
We checked 30 searches: 8 of 20 news-like ones showed Top Stories, none of 10 others. Source and date came back empty, so here is the workaround.
CrawlerData teamPublished 6 min read
Contents
When something is happening, Google puts a block of news above the regular results: Top Stories. If you do PR, media monitoring or news analysis, that block is valuable. A story that appears there gets seen. But what does the data look like, and which searches trigger it?
We ran 30 searches through the Google Search API in October 2026 and measured it. This guide has the numbers, a gap you need to work around, and code for both. Results change by the minute with the news, so yours will differ.
How we ran it
We used 30 searches, each in us:
- 20 news-like searches: openai news, nvidia earnings, premier league, world series, hurricane, stock market today, bitcoin price, election results, tesla recall, apple event, nba scores, taylor swift news, ukraine, inflation report, fed rate decision, oil prices today, wildfire, box office this weekend, formula 1 results, ai regulation.
- 10 other searches: how to tie a tie, best vpn, what is inflation, python tutorial, pizza in brooklyn ny, best running shoes, how to boil eggs, standing desk, dentist in austin tx, photosynthesis.
It cost 30 credits. It is a set we picked, checked once, so the numbers describe it and not Google as a whole.
Which searches show Top Stories
8 of the 20 news-like searches had a Top Stories block. None of the 10 other searches did. The ones that did:
| Search | Stories in the block |
|---|---|
| openai news | 7 |
| world series | 7 |
| hurricane | 7 |
| election results | 7 |
| ukraine | 7 |
| oil prices today | 7 |
| apple event | 4 |
| premier league | 3 |
The other twelve news-like searches had none: nvidia earnings, stock market today, bitcoin price, tesla recall, nba scores, taylor swift news, inflation report, fed rate decision, wildfire, box office this weekend, formula 1 results and ai regulation. So “this is in the news” does not guarantee the block. Searches about live events, such as a storm, an election or a championship, often did. Several finance and entertainment searches that sound topical did not.
A block held between 3 and 7 stories, with a median of 7.
It does not appear with an AI Overview
Across the 30 searches, no search had both Top Stories and an AI Overview. The 8 searches with Top Stories had no overview, and 11 of the 20 news-like searches had an overview and no Top Stories. For news-like searches, Google picked one or the other in our test, which matches what we saw with knowledge panels and overviews. If you track only one of them for a topic, you are missing the other half of the topics.
What comes back, and what does not
A story in top_stories has four fields, but two of them were empty:
{
"title": "A rogue OpenAI agent robbed a crypto wallet to obtain funds to carry out a task",
"link": "https://fortune.com/2026/10/16/rogue-openai-agent-crypto-wallet-funds-task/",
"source": null,
"date": null
}
Across all 49 stories from the 8 searches, title and link were present every time and source and date were empty every time. So the block tells you what the story is and where it lives, but not who published it or when, in a field.
There are two ways around that:
- Take the publisher from the link. The domain is in the URL. The 49 stories came from 34 different domains, led by nytimes.com (5), reuters.com (4), cnbc.com (3) and nbcnews.com (3).
- Take the date from the URL when it has one. 19 of the 49 links contained a
/YYYY/MM/DD/date, such as/2026/10/16/. The other 30 did not.
For a proper source name and age, use the Google News API, which returns both for every article, in the form FOX 8 News and 15 hours ago. The two together cover the gap: search for what is in the block, news for who and when.
The code
Put your key in an environment variable:
export CRAWLERDATA_API_KEY="YOUR_API_KEY"
import os
import re
import time
from urllib.parse import urlparse
import requests
API_URL = "https://api.crawlerdata.com/v1/jobs"
HEADERS = {"Authorization": f"Bearer {os.environ['CRAWLERDATA_API_KEY']}"}
def call(endpoint, query, country="us", retries=4):
body = {"endpoint": endpoint, "params": {"query": query, "country": country}, "queue": "live"}
for attempt in range(retries):
resp = requests.post(API_URL, json=body, headers=HEADERS, timeout=180)
if resp.status_code == 429:
time.sleep(int(resp.headers.get("retry-after", 10)))
continue
resp.raise_for_status()
job = resp.json()["job"]
if job["status"] == "completed":
return resp.json()["result"]
if "retry" in (job["error"] or "").lower(): # "service is busy" and "temporarily blocked" both say retry
time.sleep(5 * (attempt + 1))
continue
raise RuntimeError(job["error"])
raise RuntimeError("Request failed after retries")
def domain(link):
return (urlparse(link or "").hostname or "").removeprefix("www.")
def top_stories_report(query):
"""Top Stories in a search result. source and date are not filled in, so use the link instead."""
stories = call("google-search", query)["top_stories"]
return [
{
"title": s["title"],
"publisher": domain(s["link"]),
"date_in_url": (re.search(r"/(20\d\d/\d\d/\d\d)/", s["link"] or "") or [None, None])[1],
}
for s in stories
]
def with_source_and_date(query):
"""The google-news endpoint returns source and date for each article."""
return [{"source": a["source"], "date": a["date"], "title": a["title"]} for a in call("google-news", query)["news_results"]]
For world series and hurricane, top_stories_report printed:
world series - 7 top stories: [('espn.com', None), ('nytimes.com', '2026/10/16'), ('bleacherreport.com', None), ('foxnews.com', None)]
hurricane - 7 top stories: [('reuters.com', None), ('nypost.com', '2026/10/16'), ('accuweather.com', None), ('fox10tv.com', '2026/10/16')]
And with_source_and_date("world series") returned items such as {'source': 'FOX 8 News', 'date': '15 hours ago', ...}. Note that an empty top_stories list is a normal result, not an error: most searches have none.
What to do with it
- Track the block for searches that trigger it. Run your topics regularly, and record which stories appear and from which domains. The monitor in our Google News guide shows how to keep what you have seen.
- Get the publisher from the domain. Do not wait for the
sourcefield. - Pair it with the News API when you need the exact outlet name and age.
- Do not assume a block. Twelve of our 20 news-like searches had none.
- Check more than once. The news changes constantly, and so does what Google shows.
What it costs
Top Stories come with every google-search response, so there is no extra credit for them. Every request is 1 credit, on every queue. Starter is $1.00 per 1,000 requests and the largest pack is $0.30 per 1,000, see pricing.
| What you run | Requests | At $1.00 per 1,000 | At $0.30 per 1,000 |
|---|---|---|---|
| This study | 30 | $0.03 | $0.009 |
| 50 topics, hourly for a month | 36,000 | $36.00 | $10.80 |
| 50 topics, hourly, search plus news | 72,000 | $72.00 | $21.60 |
Failed requests are not charged.
Next steps
You now have numbers on which searches show Top Stories, a clear picture of the two fields that come back empty, and code that works around them. The Google Search API page lists every parameter with a full example response, and which publishers dominate Google News counts the outlets across 24 topics.
Frequently asked questions
- What is in the top_stories field of the search response?
- A list of news items that Google shows in the Top Stories block, each with a title and a link. It is empty when the search has no such block. In our October 2026 test, source and date were empty in all 49 items we collected, so use the link's domain for the publisher.
- Which searches show Top Stories?
- In our test of 30 searches, 8 of 20 news-like searches did and none of 10 other searches did. Searches for events and live topics such as hurricane, world series, election results and ukraine showed them. Others that seem news-like, such as nvidia earnings, bitcoin price and tesla recall, did not.
- How many stories are in the block?
- Between 3 and 7. The median was 7: 6 of the 8 searches that had a block returned 7 stories, while premier league returned 3 and apple event 4.
- How do I get the source and date of a story?
- Use the google-news endpoint, which returns the source name and a relative date such as 15 hours ago for each article. For Top Stories, take the publisher from the link domain, and a date from the URL when it contains one: 19 of our 49 links did.
- Do Top Stories and AI Overviews appear together?
- Not in our test. No search had both. The 8 searches with Top Stories had no AI Overview, and 11 of the 20 news-like searches had an overview and no Top Stories.
- How much does it cost?
- Top Stories come with every google-search request, at 1 credit and no extra charge. Our 30 searches cost 30 credits, $0.03 at the Starter rate of $1.00 per 1,000 requests.
- Top Stories
- Google News
- SERP features
- News monitoring
- Python
- Data