google alerts rss feed stopped updating, feed broken
This skill fixes Google Alerts RSS feeds that stop updating. Use it when alert coverage goes stale or when choosing primary news sources. It is not for quiet topics; the fix is verifying the alert in the dashboard, regenerating the feed URL, and keeping a news API as primary.
Google Alerts RSS feed stopped updating
TL;DR
Google Alerts RSS feeds stop updating when Google deprecates the feed format, the alert query breaks, or the feed URL's authentication expires. The feed is a convenience with no SLA. Check whether the alert still exists in the Alerts dashboard, regenerate the feed URL if needed, and keep a proper news API as the primary source so a dead alert feed never stalls a briefing.
The error
(stale feed, no HTTP error)
Google Alerts RSS feed stopped updating; last entry days old, parser sees no new itemsWhen this helps
- Google Alerts RSS feeds go stale
- a news pipeline loses alert coverage
- deciding primary versus backup news sources
- migrating off Google Alerts feeds
When it doesn't
- the topic genuinely has no news; quiet is not broken
- you need reliable delivery; alerts never had an SLA
- the feed 404s; regenerate the URL from the dashboard
Works with
Google Alerts RSS as of 2026; feedparser for python. Feed behavior is Google-side and changes without notice.
Steps
1. Confirm the feed is stale, not just quiet
curl -s "https://www.google.com/alerts/feeds/[feed-id]/[query-hash]" -o alerts.xml -w "HTTP %{http_code}\n"
python3 -c "import feedparser; d=feedparser.parse("alerts.xml"); print("entries:", len(d.entries)); print("newest:", d.entries[0].get("published") if d.entries else "none")"Expected: The newest entry date. Days-old newest entries on an active topic mean the feed stalled, not that the news stopped.
2. Check the alert in the Google Alerts dashboard
import webbrowser
print("open google.com/alerts and verify the alert query still exists and is set to deliver")
print("deleted or paused alerts silently kill their feeds")Expected: Dashboard confirmation. Alerts get paused or deleted by account changes; the feed gives no error when that happens.
3. Regenerate the feed URL from the alert
printf 'In the Alerts dashboard, open the alert, choose the RSS delivery option\nagain, and copy the fresh feed URL. Feed URLs carry per-alert tokens;\nan old URL from a recreated alert will not update.' | tee alerts_fix.txt
cat alerts_fix.txtExpected: A fresh feed URL. Regenerating re-links the feed to the live alert query.
4. Promote a news API to primary and keep alerts as backup
import json
routing = {"primary": "news api", "backup": "google alerts rss"}
open("news_routing.json", "w").write(json.dumps(routing, indent=2))
print("alerts demoted to backup source")Expected: Updated routing. Alert feeds are best-effort; the briefing's primary intake should have an SLA.
Other ways people phrase this
google alerts rss not updating
Stale feeds are common. Verify the alert, regenerate the URL, demote to backup.
google alerts feed broken
The feed is best-effort. A news API is the reliable replacement.
alerts rss no new entries
Check the newest entry date first; quiet topics look broken when they are not.
Why it happens
Google Alerts RSS is a free convenience feed with no update guarantee. Alerts get paused, queries break on special characters, and Google changes feed handling without notice. The feed fails silently by just stopping, which is why pipelines discover the staleness late.
Edge cases
- Feed URLs are per-alert; copying one to a new alert does not work.
- Special characters in alert queries break feed generation; keep queries simple.
- Alerts cap at a fixed number per account; a full account silently drops the oldest.
- Monitor feed freshness with a staleness alert so stalls surface in hours, not days.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_YIDNfp9ccsFOuO95wlBt1A
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.