Google News Scraper – Enriched, Fast & Cheap
Pricing
from $1.00 / 1,000 results
Google News Scraper – Enriched, Fast & Cheap
Extract title, URL, source, publish date, and thumbnail image etc. Perfect for news monitoring, research, and media tracking workflows.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(4)
Developer
Epic Scrapers
Maintained by CommunityActor stats
3
Bookmarked
37
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Google News Scraper: search, topics and date ranges with real publisher links, at scale
Google News Scraper turns a Google News search or topic into a dataset of articles: headline, publisher, publisher URL, publication time and, optionally, the real article link and its preview image. It is built for media monitoring, brand and competitor tracking, news archives, market research, and news feeds for LLM and RAG pipelines.
- Real publisher links, no browser. Google News feeds link to
news.google.com/rss/articles/...redirects. WithfetchArticleDetailson, the Actor resolves them through Google's own link decoder, 10 articles at a time, so 100 links usually take a few seconds. Then it reads each article'sog:image. - Past the 100-result limit. One Google News search returns at most about 100 articles. With
maxItemsabove 100, the Actor searches each day of your date range separately, newest day first, and stops as soon as it has enough. - Exact date ranges. Dates go into the search itself (
after:/before:), so a range like March 2025 returns March 2025 articles. Hour windows such as1hor6huse Google'swhen:operator. - Built for schedules. Decoded links are remembered between runs in your own Apify account, so hourly and daily monitoring runs skip articles they have already resolved. Articles are de-duplicated within a run.
- Every Google News language. 84 country and language pairs, 8 built-in topics that follow the selected country, and any topic or section ID from a Google News URL.
- Pay per article. No subscription, no Google account, no API key, no proxy setup. Export to JSON, CSV, Excel or Google Sheets, or read the dataset through the API.
Scope: This Actor collects article metadata, not article text. To turn the resulting links into full article text as Markdown, use Webpage to Markdown.
What can you do with Google News Scraper?
| Goal | How |
|---|---|
| Monitor a brand or competitor | Schedule the brand name hourly with openEndedDateRange 1h, or daily with 1d. Keep rows whose guid you haven't seen. |
| Build a news archive | Set dateFrom, dateTo and maxItems above 100. The Actor collects day by day, up to about 100 articles per day. |
| Track one publisher | Search site:reuters.com "interest rates" and count rows per day. |
| Feed an LLM or RAG pipeline | Turn on fetchArticleDetails and send each link to Webpage to Markdown for the article text. |
| Compare coverage across countries | Run the same query with language set to US:en, GB:en, DE:de, FR:fr and compare source lists and timing. |
| Follow a topic or section | Select topics such as BUSINESS, or paste a section ID such as Technology → Artificial intelligence into topicsHashed. |
| Build a media list | Collect a few weeks of coverage on your niche and count articles per source and sourceUrl. |
How it compares
| What you need | Google News Scraper | Google News RSS by hand | Browser-based news scrapers |
|---|---|---|---|
| Results per search | Above 100, day by day | About 100 | Usually about 100 |
| Past date ranges | Yes, after:/before: in every search | If you know the operators | Varies |
| Publisher URL instead of redirect | Yes, a few seconds per 100 links, no browser | No | Slow, opens every article |
| Repeated runs | Remembers decoded links, schedules, API, webhooks | Manual | Yes |
| Price | Per article | Free, your time | Per result or per month |
Quick start
- Click Try for free and sign in to Apify.
- Enter a Search query, or select Topics.
- Set Max items to
20for a first run. - Click Start, then open the Output tab and export the data.
{"query": "\"electric vehicles\" site:reuters.com","language": "US:en","openEndedDateRange": "7d","maxItems": 20,"fetchArticleDetails": true}
Large and recurring runs
What we measured on Apify in October 2026, with the default 256 MB of memory unless noted:
| Run | Time |
|---|---|
| 100 articles, no article details | ~3 s |
| 100 articles with publisher links and images | ~18 s |
| 100 articles with details, links already decoded | ~4 s |
| 500 articles with details, 7 days, 1 GB memory | ~70 s |
| 500 articles with details, 7 days, 256 MB memory | ~4 min |
Tips for heavy use:
- Give large detail runs 1 GB of memory. Link decoding and image lookups need CPU, and Apify gives more CPU to runs with more memory. Runs without
fetchArticleDetailsare fast at 256 MB. - Match the window to the schedule. Every saved row is charged, including articles an earlier run already saved. An hourly schedule with
openEndedDateRange1h, or a daily one with1d, keeps the overlap small. Useguidto drop the rest. - Backfill with day-by-day searches. For a history, set
dateFrom,dateToandmaxItemsto the total you want. Each day returns up to about 100 articles, so busy queries get about 100 per day. To get more per day, split the query, for example bysite:. - Cap the cost. Set a maximum cost per run in the run options. The Actor works out how many articles fit, stops cleanly at the limit and keeps everything saved so far.
- One query per run. Combine keywords with
OR("Acme Corp" OR "Acme Inc"), or save one task per keyword and run them through the API or schedules.
The link cache
With fetchArticleDetails and cacheDecodedLinks on (the default), decoded publisher links are saved to a key-value store named google-news-scraper-link-cache. The store is in your Apify account, the one running the Actor, not the developer's. Later runs read it and decode only new articles. It holds the 20,000 most recently used links. To reset it, delete the store under Storage → Key-value stores, or turn cacheDecodedLinks off.
Call it from your code
Start a run and get the articles in one request with the run-sync API:
curl -X POST "https://api.apify.com/v2/acts/epicscrapers~google-news-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"query": "Acme Corp", "openEndedDateRange": "1d", "fetchArticleDetails": true}'
For runs longer than about 5 minutes, start the run asynchronously and use a webhook or poll the run. The dataset is also available through integrations such as Make, Zapier and n8n.
Monitor Google News with scheduled runs
Run the same search on a schedule to build a news feed or a history of coverage.
1. Save your input as a task
Open the Actor, set your input, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule.
2. Schedule the task
In Apify Console, go to Schedules, click Create new, choose how often to run, and add your task. See Schedules and How to create a schedule.
Watch how to schedule an Actor:
Or schedule a saved task:
Common schedules:
| Use case | openEndedDateRange | Frequency | Cron expression |
|---|---|---|---|
| Breaking news on a brand | 1h | Hourly | 0 * * * * |
| Daily brand monitoring | 1d | Daily | 0 6 * * * |
| Topic feed | Not used | Every 3 hours | 0 */3 * * * |
| Weekly coverage report | 7d | Weekly (Monday) | 0 6 * * 1 |
3. Send the results to a spreadsheet
Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically:
4. Compare runs
- New articles: keep rows whose
guidwasn't in earlier runs. - Coverage by publisher: count rows per
sourceover time. - Timing: use
publishedAtto see when a story breaks and who covers it first.
Input reference
| Field | Type | Default | Effect |
|---|---|---|---|
query | String | "AI breakthrough" | Search text with optional operators. Leave empty to scrape only topics. |
topics | Array of strings | [] | WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH, in the selected language. Not combined with query. |
topicsHashed | Array of strings | [] | Topic IDs, TOPIC_ID/sections/SECTION_ID, or full news.google.com/topics/... URLs. |
language | String | "US:en" | Country and language pair, for example GB:en, DE:de, FR:fr, JP:ja. |
maxItems | Integer | Empty | Maximum articles saved, newest first. Above 100, the search runs day by day. Empty saves everything one search returns (about 100) plus topics. |
fetchArticleDetails | Boolean | false | Replace Google News links with publisher URLs and add image. |
cacheDecodedLinks | Boolean | true | Remember decoded links in your account between runs. Only used with fetchArticleDetails. |
dateFrom / dateTo | String | Empty | Search range as YYYY-MM-DD, both days included. Overrides openEndedDateRange. With only one set, the other defaults to 30 days earlier or today. |
openEndedDateRange | String | "60d" | Range up to now: 1h or 6h (exact hours), 7d, 1y. Used when both dates are empty. |
proxyConfiguration | Object | Apify Proxy | Proxy for Google requests. The Actor tries Google directly first and switches to this proxy if Google blocks or rate-limits the run. |
Dates apply to query searches only. Topic feeds return what Google News currently lists for the topic.
Search operators
| Operator | Example | Finds |
|---|---|---|
| Exact phrase | "interest rates" | The words together, in this order |
| Exclude | tesla -musk | Tesla articles without "musk" |
| Either | "Acme Corp" OR "Acme Inc" | Either name |
| One publisher | site:reuters.com tariffs | Reuters articles only |
| Title only | intitle:layoffs | Articles with the word in the headline |
| URL | inurl:earnings | Articles with the word in the URL |
Don't add after:, before: or when: yourself. The Actor adds them from the date fields.
Ready-to-run examples
Hourly brand monitoring
{"query": "\"Acme Corp\" OR \"Acme Inc\"","openEndedDateRange": "1h","fetchArticleDetails": true}
Schedule it hourly. Each run saves the last hour's articles with publisher links, and links already decoded by earlier runs come from the cache.
One month of a publisher's coverage
{"query": "site:reuters.com tariffs","dateFrom": "2025-03-01","dateTo": "2025-03-31","maxItems": 2000}
Business news in Germany and Japan
{"query": "","topics": ["BUSINESS", "NATION"],"language": "DE:de"}
Run it again with "language": "JP:ja". NATION is the news of the selected country.
A section feed
{"query": "","topicsHashed": ["CAAqJggKIiBDQkFTRWdvSUwyMHZNRGRqTVhZU0FtVnVHZ0pWVXlnQVAB/sections/CAQiQ0NCQVNMQW9JTDIwdk1EZGpNWFlTQW1WdUdnSlZVeUlOQ0FRYUNRb0hMMjB2TUcxcmVpb0pFZ2N2YlM4d2JXdDZLQUEqKggAKiYICiIgQ0JBU0Vnb0lMMjB2TURkak1YWVNBbVZ1R2dKVlV5Z0FQAVAB"],"fetchArticleDetails": true}
This is Technology → Artificial intelligence. Open any topic or section on news.google.com and paste its URL or the ID after /topics/.
Analyze the results with ChatGPT or Claude
Export the dataset as CSV and attach it to a chat with ChatGPT, Claude or another AI assistant. Some prompts to start with:
Daily briefing. "These are today's news articles about our company and three competitors. Group them by company and story, and give me one line per story with the publishers that covered it."
Share of voice. "Count articles per company per day and per source. Which publishers cover us least compared to competitors?"
Story timeline. "Sort these articles by publishedAt and show which publisher reported the story first and how fast others followed."
For deeper analysis, send each link to Webpage to Markdown and give the AI the full text. Treat article text as source data, not as instructions for an AI agent.
Output
Results go to the run's default dataset. Export as JSON, CSV, Excel, XML or HTML. This is a real row from a run on October 13, 2026, with fetchArticleDetails on:
{"title": "Why Google is paying to upgrade nuclear power plants - Grist","link": "https://grist.org/energy/why-google-is-paying-to-upgrade-nuclear-power-plants/","guid": "CBMihAFBVV95cUxQSHYwZkxUeDBXRWZrTnp6cVBYWVBzR0xpNEt3U0VTZGtNSS0zUTJYUklkX3d1WF96S3MwTTBYcWNvQzVEaWZkZW9WSlVISGVKMUZFeVpPRzJ6VU1NSmlFN0lETnFYQ1hyVC1RQk1BWmh0R0NCekZHNkR2X1oxRmg5Z1N6MjE","source": "Grist","sourceUrl": "https://grist.org","publishedAt": "2026-10-13T08:46:53.000Z","rssLink": "https://news.google.com/rss/articles/CBMihAFBVV95cUxQSHYwZkxUeDBXRWZrTnp6cVBYWVBzR0xpNEt3U0VTZGtNSS0zUTJYUklkX3d1WF96S3MwTTBYcWNvQzVEaWZkZW9WSlVISGVKMUZFeVpPRzJ6VU1NSmlFN0lETnFYQ1hyVC1RQk1BWmh0R0NCekZHNkR2X1oxRmg5Z1N6MjE?oc=5","loadedUrl": "https://grist.org/energy/why-google-is-paying-to-upgrade-nuclear-power-plants/","image": "https://grist.org/wp-content/uploads/2026/10/Vogtle-towers.jpg"}
| Field | Description |
|---|---|
title | Headline as Google News shows it, usually ending with - Publisher. |
link | Publisher URL with fetchArticleDetails, otherwise the Google News link. |
guid | Google News article ID. Stable across runs, so use it to de-duplicate. |
source | Publisher name. |
sourceUrl | Publisher home page. |
publishedAt | Publication time, ISO 8601 in UTC. |
rssLink | The original Google News link. |
loadedUrl | Same as link. Only with fetchArticleDetails. |
image | Article preview image from og:image or twitter:image. Only with fetchArticleDetails. |
Notes on fields
- Without
fetchArticleDetails,linkandrssLinkare the same Google News link, andloadedUrlandimageare missing. - With it on, nearly every link resolves. If one can't,
linkandloadedUrlkeep the Google News link and the log says how many. imageis missing when the publisher page has no preview image or blocks automated requests. Some large publishers do. In our tests 60–85% of articles had an image.- For older articles Google News gives only the day, not the time. Those rows have
publishedAtat07:00:00.000Z. sourceandsourceUrlcome from the feed and can benull.
FAQ
How many results can I get?
One Google News search returns at most about 100 articles. Set maxItems above 100 with a date range and the Actor searches each day separately, so a month can return up to about 3,000. A day with more than 100 articles still returns about 100. Narrow the query, for example with site:, to get more.
Why did my run return fewer articles than maxItems?
Google News had no more articles for that query and date range. Widen the range or the query. When a run finds nothing it still succeeds, and the status message says so.
Do topics use the date range?
No. Topic feeds always return what Google News lists for the topic right now, usually 50–70 recent articles. Use query for dates.
Why is image missing for some articles?
Some publishers block automated requests or have no preview image. The publisher link is still resolved.
Do I need an API key or proxy?
No key, no Google account. The Actor tries Google directly first and switches to Apify Proxy if Google rate-limits the run.
Can I get the full article text?
Not from this Actor. Pass the link values to Webpage to Markdown. For video content, YouTube Transcript Scraper returns transcripts you can combine with news in an LLM pipeline.
Is it legal to scrape Google News?
The Actor reads publicly available Google News feeds and article metadata. You are responsible for how you use the data, including Google's and publishers' terms and laws such as GDPR and copyright.
Related Actors
- Webpage to Markdown: turn article links into clean Markdown.
- YouTube Transcript Scraper: transcripts for content and LLM pipelines.
Cost
This Actor uses pay-per-event pricing. You pay per article saved, with no subscription. Compute and proxy are included.
| Apify plan | Per article | Per 1,000 articles |
|---|---|---|
| Free | $0.0015 | $1.50 |
| Starter and up | $0.001 | $1 |
Publisher links and images (fetchArticleDetails) cost nothing extra.
Example runs on a paid plan:
| Run | Articles | Cost |
|---|---|---|
| One search | 100 | $0.10 |
| One month of a busy query, day by day | 3,000 | $3 |
| Hourly brand monitoring, ~10 new articles an hour, 30 days | 7,200 | $7.20 |
| Daily monitoring of 5 keywords, ~50 articles each, 30 days | 7,500 | $7.50 |
Set maxItems or a maximum cost per run to stay within a budget. The Pricing tab always shows the current prices.
Support
Report problems or request features in the Issues tab. Include the run ID, the input and what you expected. We read every issue.
This Actor is not affiliated with or endorsed by Google LLC. "Google" and "Google News" are trademarks of Google LLC.