Google News has no official API, but its RSS search endpoint (news.google.com/rss/search?q=…) accepts the same operators as the web search box. I could not find a single place that documents which ones the feed honours, so I measured them (14 Sep 2026, US/en edition, query nvidia).
Setup
Each request fetched https://news.google.com/rss/search?q=<query>&hl=en-US&gl=US&ceid=US:en with a browser user-agent, and I counted <item> elements and read pubDate / <source url>.
| query | items | what came back |
|---|---|---|
nvidia |
100 | mixed sources, mixed dates |
nvidia when:7d |
100 | oldest pubDate = 7 days ago |
nvidia after:2026-09-10 before:2026-09-12 |
100 | every pubDate in 10–12 Sep (the before: day is included) |
nvidia site:reuters.com |
100 | only reuters.com sources — going back to 2005 |
nvidia site:cnbc.com |
100 | only cnbc.com
|
nvidia site:cnbc.com after:2026-09-10 before:2026-09-12 |
37 | date window narrows the same source |
nvidia -stock |
100 | zero titles contain "stock" |
intitle:nvidia |
100 | 100/100 headlines contain "nvidia" |
nvidia site:cnbc.com -stock |
58 | vs 100 without the exclusion |
nvidia site:cnbc.com after:2026-09-10 before:2026-09-12 -stock |
1 | (see below) |
Four things worth knowing
1. 100 is a hard ceiling per feed. No num=, no pagination. The only way to get more is more feeds — which is exactly what site: gives you: one feed per publisher returns up to 100 per publisher. Ten sources = up to 1,000 articles for one keyword.
2. after:/before: are real date filters. The window is inclusive on both ends (UTC days). They combine with site:, and they override the relative when: window if you send both — so pick one.
3. -word matches the article body, not the headline. nvidia site:cnbc.com in a 3-day window has 37 articles, 23 of them with "stock" in the headline. Add -stock and 36 disappear — the 13 extra ones matched in the body. Google is excluding every article that mentions stocks anywhere. If you want "not in the headline", you have to filter the feed yourself after fetching.
4. Topic and location feeds accept no operators at all. headlines/section/topic/TECHNOLOGY and headlines/section/geo/Chicago ignore everything in the query string except the locale, so date/source/word filters there must be post-fetch.
The links are not the links
Every <link> is a news.google.com/rss/articles/CBMi… redirect. Decoding it to the publisher URL takes one extra request per article to read a signature from the redirect page, then a batched batchexecute call — and from a datacenter IP the signature page sometimes comes back empty for a few minutes (HTTP 200, no signature). Three runs in a row got 0/11 signatures from the same IP; two minutes later the same input resolved 11/11. Retrying immediately from the same IP does not help — wait or switch IP.
Where this landed
I maintain a Google News actor on Apify that already resolved publisher URLs and pulled article text; today it gained publishedAfter / publishedBefore, sources (one feed per source), excludeSources and excludeWords, with every filter also applied post-fetch so topic and location feeds honour them too. Rows dropped by a filter are never billed.
→ https://apify.com/tactful_anvil/google-news-scraper
If you have measured other operators (inurl:, OR, allintext:), I'd love to add them to the table.
Top comments (0)