DEV Community

Mr Zack
Mr Zack

Posted on

Google News RSS quietly supports after:, before:, site: and -word — I measured what each one actually does

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)