Which publishers dominate Google News? Data from 24 topics
We pulled Google News results for 24 topics: 424 results from 207 sources. Reuters led, but the top five held only 18%. Counts, code and costs.
CrawlerData teamPublished 6 min read
Contents
If you do PR, media monitoring or news analysis, one question comes up first: which outlets actually show up when your topic is searched? Google News decides what readers see, and it is not obvious how concentrated that is.
We ran 24 topics through the Google News API on 16 October 2026, collected every result and counted the sources. This guide has the numbers, code to run the same count on your own topics, and what it costs. News changes by the minute, so your results will differ.
How we ran it
We chose 24 topics in five groups, and requested page 1 for each with country set to us:
- Technology (6): openai, nvidia, apple iphone, microsoft, cybersecurity breach, electric vehicles.
- Business and finance (6): federal reserve, bitcoin, tesla stock, inflation report, oil prices, housing market.
- Sports (5): premier league, nba, formula 1, world cup, tennis.
- Health and science (4): flu season, nasa, climate change, cancer research.
- Entertainment (3): taylor swift, netflix, box office.
It cost 24 credits. These are topics we picked, checked once, so the numbers describe this set on this day and not Google News as a whole.
The overall picture
The 24 searches returned 424 results from 207 different sources. A page held between 10 and 25 results, with a median of 19. These are the sources that appeared across the most topics:
| Source | Topics (of 24) | Results |
|---|---|---|
| Reuters | 11 | 17 |
| The New York Times | 10 | 16 |
| Yahoo Finance | 8 | 14 |
| CNBC | 7 | 15 |
| Bloomberg.com | 7 | 8 |
| USA Today | 7 | 7 |
| Yahoo | 7 | 13 |
| The Guardian | 6 | 8 |
| BBC | 6 | 13 |
| CNN | 5 | 6 |
Reuters and the New York Times were the most widespread, each in around half of the topics. But the picture is less concentrated than the top of the table suggests:
- The five sources with the most results held 18%. Reuters, the New York Times, CNBC, Yahoo Finance and Yahoo together had 75 of the 424 results.
- The tail is long. 144 of the 207 sources, 70%, appeared exactly once.
- Yahoo shows up under several names. Yahoo, Yahoo Finance and Yahoo Sports are separate
sourcevalues. If you want one number for the company, merge them in your own code.
Who leads depends on the subject
Counts by group, for the sources with the most results in each:
| Topic group | Results | Leading sources |
|---|---|---|
| Technology | 108 | Reuters (9), Yahoo Finance (6), CNBC (5), Bloomberg.com (5) |
| Business and finance | 90 | Yahoo Finance (7), CNBC (6), Reuters (5), Seeking Alpha (4) |
| Sports | 113 | ESPN (12), The New York Times (11), BBC (10), Yahoo Sports (10) |
| Health and science | 49 | NPR, Live Science, Phys.org, FlightGlobal (2 each) |
| Entertainment | 64 | Yahoo (9), Deadline (4), CNBC (4), Variety (3) |
Business and technology were led by wire services and finance outlets. Sports had a clear set of leaders, with ESPN first. Health and science looked different: no source had more than 2 results across its four topics, so the results were spread over many outlets. If you pitch stories in one of these areas, the list of outlets worth knowing is different in each.
How fresh the results are
The date field is the relative text Google shows. Of the 424 results:
- 242 were hours old, 57% of them.
- 150 were days old.
- 27 were minutes old.
- 4 were months old and 1 was weeks old.
So a news search is mostly the last day or two. Turn the text into a time, as the Google News guide explains, and record when you made the request.
Snippets are optional
Only 177 of the 424 results, 42%, had a snippet. Code that reads snippet should fall back to the title when it is empty.
The code
Put your key in an environment variable:
export CRAWLERDATA_API_KEY="YOUR_API_KEY"
This collects one page per topic and counts the sources:
import os
import time
from collections import Counter, defaultdict
from concurrent.futures import ThreadPoolExecutor
import requests
API_URL = "https://api.crawlerdata.com/v1/jobs"
HEADERS = {"Authorization": f"Bearer {os.environ['CRAWLERDATA_API_KEY']}"}
def google_news(query, country="us", retries=4):
body = {"endpoint": "google-news", "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()
data = resp.json()
if data["job"]["status"] == "completed":
return data["result"]["news_results"]
if "retry" in (data["job"]["error"] or "").lower(): # "busy" and "temporarily blocked" both say retry
time.sleep(5 * (attempt + 1))
continue
raise RuntimeError(data["job"]["error"])
raise RuntimeError("News search failed after retries")
def collect(topics, workers=3):
"""{topic: list of news results}, one request per topic."""
with ThreadPoolExecutor(workers) as pool:
return dict(zip(topics, pool.map(google_news, topics)))
def source_report(results_by_topic):
"""Which sources show up, in how many topics and how many results."""
topics_per_source = defaultdict(set)
results_per_source = Counter()
for topic, items in results_by_topic.items():
for item in items:
topics_per_source[item["source"]].add(topic)
results_per_source[item["source"]] += 1
return topics_per_source, results_per_source
Run it on your own topics:
data = collect(["your brand", "your competitor", "your category"])
topics_per_source, results_per_source = source_report(data)
for source, topics in sorted(topics_per_source.items(), key=lambda x: -len(x[1]))[:10]:
print(f"{source}: {len(topics)} topics, {results_per_source[source]} results")
For three topics, openai, federal reserve and premier league, it printed:
47 results, 35 sources
Reuters: 2 topics, 5 results
CNBC: 2 topics, 3 results
The New York Times: 2 topics, 2 results
The Guardian: 2 topics, 3 results
AP News: 1 topics, 1 results
On our full 24-topic data, source_report gave the numbers in the tables above. The retry loop handles the occasional transient failure, such as The service is busy. Please retry shortly. or Google temporarily blocked the request. Please retry., which is not charged.
What to do with it
- Build a media list from data. Run your topics, take the sources that appear most, and start there instead of from a list of famous outlets.
- Measure your share of voice. Run your brand and your competitors as topics and count how often each outlet covers each of them.
- Watch for new outlets. Keep the set of sources you have seen and flag one that appears for the first time. That is the same new-link idea as in the monitor in our Google News guide.
- Do it regularly. One day’s counts are a sample. Run the same topics on a schedule and compare weeks. See news and brand monitoring for how teams use this.
What it costs
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, once | 24 | $0.024 | $0.007 |
| 100 topics, daily for a month | 3,000 | $3.00 | $0.90 |
| 100 topics, hourly for a month | 72,000 | $72.00 | $21.60 |
Failed requests are not charged.
Next steps
You now have numbers on which outlets Google News showed for 24 topics, a count for your own topics and a way to turn it into a media list. The Google News API page lists every parameter with a full example response, and Which sites AI Overviews cite does the same kind of count for AI Overviews.
Frequently asked questions
- Which publishers appear most in Google News results?
- In our October 2026 test of 24 US topics, Reuters appeared in 11 topics and the New York Times in 10, followed by Yahoo Finance in 8, then CNBC, Bloomberg, USA Today and Yahoo in 7 each. The results were spread across 207 different sources, and the five with the most results held only 18% of the 424.
- Is Google News dominated by a few big publishers?
- Not in our sample. 144 of the 207 sources appeared exactly once. The leading outlets differ by subject: ESPN, the New York Times, the BBC and Yahoo Sports led sports, while finance topics were led by Yahoo Finance, CNBC and Reuters. Health and science topics had no source with more than 2 results.
- How many results does a Google News search return?
- On page 1, between 10 and 25 per topic in our test, with a median of 19. The page parameter goes from 1 to 10, and each page is a separate request that costs 1 credit.
- How fresh are Google News results?
- Mostly hours old. Of the 424 results, 242 were published hours ago, 150 days ago, 27 minutes ago and 5 weeks or months ago. The date field is the relative text Google shows, such as 9 hours ago.
- Do all results include a snippet?
- No. 177 of the 424 results (42%) had one. Treat snippet as optional and fall back to the title.
- How much does a study like this cost?
- 1 credit per topic. Our 24 topics cost 24 credits, $0.024 at the Starter rate of $1.00 per 1,000 requests. Checking 100 topics every day for a month is 3,000 credits, or $3.00.
- Google News
- Google News API
- Media monitoring
- PR
- Python
- Data