Google News Scraper — Search & Topic RSS Feeds
Pricing
Pay per event
Google News Scraper — Search & Topic RSS Feeds
Scrape Google News search results and topic (beat) feeds into a clean dataset — title, publisher, source URL, publish date, and an opt-in true-article-URL resolver. Handles the ~100-item pagination cap and Google's redirect-token links so you don't have to.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
🎯 What this scrapes
Google News hands back a redirect token instead of the real article URL and quietly truncates any window at 100 items — we walk the date range and hand you clean rows anyway. This isn't a job for our generic rss-feed-scraper (that one parses any RSS/Atom feed as-is) — this Actor is purpose-built for Google News' redirect tokens, truncation-aware date-window pagination, and topic/beat feeds.
🔥 What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 No proxy markup — Google's RSS surface doesn't gate on IP reputation, so we don't burn your run budget on residential-proxy rotation you don't need;
proxyConfigurationstays in the input in case that ever changes. - 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- PR and media-monitoring teams tracking brand or competitor coverage across outlets.
- Market researchers measuring news volume and sentiment shifts around a topic over time.
- SEO and content-ops teams tracking which publishers are covering a competitor or keyword.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
queries | array | no | ['openai', 'anthropic'] | Search queries. Each is walked independently across the resolved date range. At least one of Queries / Topics is… |
topics | array | no | [] | Google News topic (beat) codes, e.g. TECHNOLOGY, BUSINESS. At least one of Queries / Topics is required. |
hl | string | no | 'en-US' | Google News language parameter. |
gl | string | no | 'US' | Google News country parameter, 2-letter. |
ceid | string | no | 'US:en' | Combined locale parameter, shape "{gl}:{lang}". |
dateFrom | string | no | '—' | Start of the date walk (Queries mode only). Defaults to 7 days before run start when both dates are omitted. |
dateTo | string | no | '—' | End of the date walk (Queries mode only). Defaults to run start when omitted. |
resolveArticleUrl | boolean | no | False | Follow each item's Google redirect link to populate the real publisher article URL. Costs one extra request per item —… |
maxItemsPerQuery | integer | no | 500 | Cap on emitted rows per query or topic. |
proxyConfiguration | object | no | {'useApifyProxy': False} | Apify Proxy configuration. This target is proven reachable proxy-free — not defaulted to RESIDENTIAL. |
Example input
{"queries": ["openai","anthropic"],"dateFrom": "2026-09-11","dateTo": "2026-09-13","resolveArticleUrl": false,"maxItemsPerQuery": 50,"proxyConfiguration": {"useApifyProxy": false}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
title | string | Article title, kept exactly as received (including any trailing " - Publisher" suffix). |
link | string | Raw Google News redirect token URL. |
resolved_url | ['string', 'null'] | True publisher article URL — only populated when resolveArticleUrl=true. |
source_name | ['string', 'null'] | Publisher name from . |
source_url | ['string', 'null'] | Publisher domain from . |
pub_date | string | Publish date/time, ISO-8601. |
query | ['string', 'null'] | Input query that produced this row (queries mode). |
topic | ['string', 'null'] | Input topic code that produced this row (topics mode). |
guid | string | Feed GUID — primary dedupe key. |
Example output
{"title": "OpenAI announces new model - TechCrunch","link": "https://news.google.com/rss/articles/CBMi...","resolved_url": null,"source_name": "TechCrunch","source_url": "https://techcrunch.com","pub_date": "2026-09-10T14:32:00Z","query": "openai","topic": null,"guid": "CBMi..."}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.2 | One-off warm-up charge per run |
result | $0.001 | Per dataset item |
Example: 1 000 results at the rates above ≈ $1.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
resolveArticleUrl defaults off — turning it on adds one request per row, so unit economics favor leaving it off unless you need the resolved publisher URL. The ~100-item-per-window cap is handled by halving down to a 1-day floor; extremely high-volume queries can still hit 100 items even at that floor, in which case we accept the window best-effort and log a warning rather than guess at what's missing. Topic feeds return a snapshot with no date window. This is an undocumented Google endpoint with no published SLA — we watch for shape changes, but Google can alter it without notice.
❓ FAQ
Why is resolveArticleUrl off by default?
Turning it on follows one extra redirect per row, which multiplies request volume. We keep it opt-in so the default run stays fast and cheap — flip it on when you need the true publisher URL instead of Google's redirect token.
What happens when a date window has more than 100 articles?
Google truncates any window at exactly 100 items without saying so. We detect that ceiling, split the window in half, and re-fetch — recursively, down to a 1-day floor — so dense windows still surface everything reachable instead of silently dropping items.
Does this work for topic feeds like TECHNOLOGY or BUSINESS?
Yes — pass topic codes instead of (or alongside) search queries to monitor a beat. Topic feeds return Google's current snapshot and aren't date-windowed, since Google doesn't expose a date cursor for them.
Where does source_url come from if link is a redirect token?
Google's own element carries the publisher's domain for free — no extra request needed. We extract it directly, so you get a usable publisher domain on every row even with resolveArticleUrl off.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.