# Google News Scraper - Search, Topics, Date Range & Real Links (`pipiagent/google-news-scraper`) Actor

Scrape Google News by keyword, topic or city. Get headline, publisher, date and the real article link. Search past dates beyond the 100 result limit. Any language and country. No API key needed.

- **URL**: https://apify.com/pipiagent/google-news-scraper.md
- **Developed by:** [Frank0306](https://apify.com/pipiagent) (community)
- **Categories:** News, Marketing, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google News Scraper

Extract news articles from [Google News](https://news.google.com): search by keyword, read the top stories, follow a topic such as Business, or get local news for a city. Use it for media monitoring, brand and competitor tracking, PR reports, market research and news datasets.

- **Four sources in one Actor.** Keyword search, top stories, eight news topics and local news.
- **Goes past the 100 article limit.** Google shows about 100 articles per search. Give a date range and the Actor searches week by week and day by day, then removes duplicates.
- **Real article links.** Google News links point to Google. One switch adds the real publisher link.
- **Any language and country.** Works with every Google News edition.
- **No login, no API key and no proxy needed.** Press Start and get data.
- **Low price.** $1.50 per 1,000 results.

### What data can you get?

| Mode | What you get | Articles per run |
|---|---|---|
| Search by keyword | Articles that match your keywords, with optional date range, time range and publisher filter | About 100 per keyword, or thousands with a date range |
| Top stories | The front page of Google News for a country | 30 to 40 |
| Topic | One section: World, Nation, Business, Technology, Entertainment, Science, Sports or Health | 40 to 70 |
| Location | Local news for a city | Up to 70 per city |

Every article has these fields:

| Field | Meaning |
|---|---|
| `title` | Headline, without the publisher name at the end |
| `publisher`, `publisherUrl` | Name and website of the news source |
| `publishedAt` | Publication time in UTC |
| `googleNewsUrl` | Link to the article on Google News |
| `articleUrl` | Real link on the publisher's website. Filled only when **Get the real article links** is on |
| `description` | Text of the feed entry. Google News gives the headline and the publisher here, not a summary of the article |
| `relatedArticles` | Other articles about the same story, each with title, publisher and Google News link. Mostly in top stories and topics |
| `searchQuery`, `topic`, `location` | What found the article |
| `language`, `country`, `scrapedAt` | Edition and time of scraping |

### How to use it

1. Click **Try for free**.
2. Choose a mode in **What to scrape**.
3. Fill in the matching input: keywords, a topic or a city.
4. Click **Start**, then download the results as JSON, CSV or Excel.

### Input examples

Search the newest articles about a brand:

```json
{
    "mode": "search",
    "searchQueries": ["Tesla", "\"Elon Musk\" interview"],
    "timeRange": "7d",
    "maxItems": 200
}
```

Collect all coverage of a topic in one month:

```json
{
    "mode": "search",
    "searchQueries": ["\"quantum computing\""],
    "dateFrom": "2026-08-01",
    "dateTo": "2026-08-31",
    "maxItems": 5000
}
```

Search only some publishers and get the real links:

```json
{
    "mode": "search",
    "searchQueries": ["bitcoin"],
    "sites": ["reuters.com", "cnbc.com"],
    "timeRange": "7d",
    "resolveUrls": true
}
```

Business news in France:

```json
{
    "mode": "topic",
    "topic": "BUSINESS",
    "language": "fr",
    "country": "FR"
}
```

Local news:

```json
{
    "mode": "location",
    "location": ["London", "New York"]
}
```

### Output examples

A search result with the real article link:

```json
{
    "articleId": "CBMipgFBVV95cUxQMFNkQmpvTmdlZER6dDF6NXlNZ2x2WnpicUlHeDBvRjNRUzlaZy01OUI5Sm91YV9DRUh0Qmk4TzNwTTQ1alBveEdGOHNHcy0wa1pqR0lsZVR2dUxoQ3R1V1FnZTJuZG9MS1d3OWs3eTgxb0ZmUl96dGNiWkhzMk1wN3oyV0xFYjVrdGtIQ1Vzb0l0SWdBWlZEalo3WmxNbVpxNjJoX1dR",
    "title": "AI godfathers warn of runaway ‘intelligence explosion’",
    "publisher": "theguardian.com",
    "publisherUrl": "https://www.theguardian.com",
    "publishedAt": "2026-09-28T15:00:00Z",
    "googleNewsUrl": "https://news.google.com/rss/articles/CBMipgFBVV95cUxQMFNkQmpvTmdlZER6dDF6NXlNZ2x2WnpicUlHeDBvRjNRUzlaZy01OUI5Sm91YV9DRUh0Qmk4TzNwTTQ1alBveEdGOHNHcy0wa1pqR0lsZVR2dUxoQ3R1V1FnZTJuZG9MS1d3OWs3eTgxb0ZmUl96dGNiWkhzMk1wN3oyV0xFYjVrdGtIQ1Vzb0l0SWdBWlZEalo3WmxNbVpxNjJoX1dR?oc=5",
    "articleUrl": "https://www.theguardian.com/technology/2026/sep/28/ai-godfathers-warn-of-runaway-intelligence-explosion",
    "description": "AI godfathers warn of runaway ‘intelligence explosion’ theguardian.com",
    "relatedArticles": [],
    "searchQuery": "artificial intelligence",
    "topic": null,
    "location": null,
    "language": "en",
    "country": "US",
    "scrapedAt": "2026-09-29T11:27:39Z"
}
```

A top story with related articles (shortened to two):

```json
{
    "articleId": "CBMiVkFVX3lxTE1Ja19tUVlfSUhsMWtlZVFwemlyeW90VVNCajM0MHNFcVkwY19xSVlILTNwUFVweWtFZllQb2ZuNGhZQV9xYXlwQlktaUpVb1FiNTVKWmlR",
    "title": "RAF Fairford latest: Incident 'clearly involves' foreign actor, says US secretary of state",
    "publisher": "BBC",
    "publisherUrl": "https://www.bbc.com",
    "publishedAt": "2026-09-29T11:20:08Z",
    "googleNewsUrl": "https://news.google.com/rss/articles/CBMiVkFVX3lxTE1Ja19tUVlfSUhsMWtlZVFwemlyeW90VVNCajM0MHNFcVkwY19xSVlILTNwUFVweWtFZllQb2ZuNGhZQV9xYXlwQlktaUpVb1FiNTVKWmlR?oc=5",
    "articleUrl": "https://www.bbc.com/news/live/c65y7nl29k0et",
    "description": "RAF Fairford latest: Incident 'clearly involves' foreign actor, says US secretary of state BBC\nRubio Says Incident at UK Air Base RAF Fairford ‘Clearly Involved’ a Foreign Actor The New York Times\nThe Small English Town Rattled by Alleged Terror Plot Near U.S. Bomber Base WSJ",
    "relatedArticles": [
        {
            "title": "Rubio Says Incident at UK Air Base RAF Fairford ‘Clearly Involved’ a Foreign Actor",
            "publisher": "The New York Times",
            "url": "https://news.google.com/rss/articles/CBMimwFBVV95cUxQTVpfc0otQi04dzZ0S1E4TXBKbjlaQ252aXE1Q2hQbUw1WURoU2ViTlhsSVFoY2hFRklCdXZLdzFvYk51VlFIYkZvY0RjNDZPRDNtdlg1T29KbmdFZE1ha25MRzVMTDRQWEZuYXJlLTM4N3RuYndFZnFUVVZXdkVYdF9JMTRuT1BRT214eVEzN0ZqSm5Uc0VPaXc2WQ?oc=5"
        },
        {
            "title": "The Small English Town Rattled by Alleged Terror Plot Near U.S. Bomber Base",
            "publisher": "WSJ",
            "url": "https://news.google.com/rss/articles/CBMisAFBVV95cUxOZ3BJQmh1NEtYQ2tEaXNWdGdpMjR1ZVg1RFhLLW5sdnBjQ2xnWXQxdzU1dWw5MHZ1aHA1TmVyMXdlZXRKWWNONzUtcmFtVWNIdnZLal9aMklfZHlaTUV5SXkyZF94S011QW9YNmxpQkZkYksyc19IeW1GNFdQZmRBWXI3ZTdSTGtkLUY5V2E0RS0yTVpHc2U1M1BCSnB3SnUxRHBVZGYwSk5TWmNVc3dPZw?oc=5"
        }
    ],
    "searchQuery": null,
    "topic": "TOP_STORIES",
    "location": null,
    "language": "en",
    "country": "US",
    "scrapedAt": "2026-09-29T11:34:50Z"
}
```

### How much does it cost?

You pay per saved article: **$1.50 per 1,000 results**. There is no start fee and no monthly rental. Turning on **Get the real article links** does not change the price.

| Run | Results | Cost |
|---|---|---|
| One keyword search | 100 | $0.15 |
| One month of "quantum computing" news | 1,216 | $1.82 |
| Three months of "climate change" news | 2,547 | $3.82 |

Set a maximum charge per run in the run options and the Actor stops when it is reached.

### Limits you should know

- **One search returns about 100 articles.** This is Google's limit. Without a date range you get the about 100 articles Google ranks highest for the keyword, not all of them.
- **A date range gets more, but not everything.** The smallest search window is one day, and one day also returns about 100 articles at most. In our tests a busy keyword ("artificial intelligence") hit this limit on 30 of 31 days and returned 1,937 articles for the month, about 60 per day. A narrower keyword ("quantum computing") returned 1,216 articles for the same month and hit the limit on 9 days. The run log lists the days that hit the limit. To get more from those days, use narrower keywords or the publisher filter.
- **Old articles have a date but no exact time.** For articles older than a few weeks Google gives only the day. The time then shows as 07:00 or 08:00 UTC, which is midnight in California.
- **There is no article summary or full text.** Google News feeds contain the headline, publisher, date and link. The `description` field repeats the headline and publisher.
- **Real article links are slower.** Decoding needs one extra request per article, about 60 to 70 seconds per 100 articles. In our largest test the Actor decoded 2,148 links in one run of 19 minutes with no failures and no rate limiting. Google can change this without notice. If Google starts to refuse these requests, the Actor keeps the articles and leaves `articleUrl` empty. Links in `relatedArticles` are not decoded.
- **Top stories, topics and locations have no history.** They show what is on Google News now, 30 to 70 articles. Run them on a schedule to build a history.
- **Location works for cities, not for every place.** London, New York, Paris, Berlin, Sydney, Chicago and Toronto returned local news in our tests. Tokyo, Texas and Japan returned nothing. Pick the language and country that match the city. For other places use search mode with the place name as the keyword.
- **Results depend on the edition.** The same keyword returns different articles for different languages and countries.

### Tips

- **Use search operators.** Put exact phrases in quotes, use `OR` between alternatives, `-word` to exclude a word and `intitle:word` to search headlines only.
- **Duplicates are removed.** An article found by two keywords or two date windows is saved once. The `searchQuery` field shows the keyword that found it first.
- **Run it on a schedule.** Search with the time range "Last 24 hours" every day to follow a brand or topic over time.
- **Keep the language and country consistent.** For example `de` with `DE`, `pt` with `BR`, `ja` with `JP`.

### FAQ

**Is it legal?** The Actor collects only data that Google News shows publicly to every visitor: headlines, publisher names, dates and links. It does not copy the text of the articles. Results can contain names of people that appear in headlines. Make sure you have a legitimate reason to process them, as required by the GDPR and similar laws.

**Do I need a Google account or API key?** No.

**Can I get the full article text?** No. Turn on **Get the real article links** and pass the links to an article extractor.

**Why do I get fewer articles than "Max results"?** Google returns about 100 articles per search. Add a date range to get more.

**Something is broken or missing?** Open a ticket in the Issues tab. Issues are usually answered within a day.

# Actor input Schema

## `mode` (type: `string`):

Search: articles that match your keywords. Top stories: the front page of Google News. Topic: one news section such as Business. Location: local news for a city.

## `searchQueries` (type: `array`):

Search mode only. One search per line. Google search operators work: "exact phrase", OR, -exclude, intitle:word.

## `maxItems` (type: `integer`):

Maximum number of articles to save. One search without a date range returns at most about 100 articles. Add a date range to get more.

## `timeRange` (type: `string`):

Search mode only. Keep only articles from the last hour, day, week, month or year. Ignored when a date range is set below.

## `dateFrom` (type: `string`):

Search mode only. First day of the date range, for example 2026-01-01. With a date range the Actor searches week by week and day by day, so it can return many more than 100 articles.

## `dateTo` (type: `string`):

Search mode only. Last day of the date range. Leave empty for today.

## `sites` (type: `array`):

Search mode only. Keep only articles from these websites, for example reuters.com or bbc.com. Leave empty for all publishers.

## `topic` (type: `string`):

Topic mode only. The news section to scrape.

## `location` (type: `array`):

Location mode only. Cities, for example London, New York or Berlin. One place per line. Works best for large cities. Use the language and country that match the city.

## `language` (type: `string`):

Two-letter language code of the Google News edition, for example en, de, fr, es, pt, ja or zh. Use a code that matches the country.

## `country` (type: `string`):

Two-letter country code of the Google News edition, for example US, GB, DE, FR, BR, JP or IN.

## `resolveUrls` (type: `boolean`):

Google News links point to Google, not to the publisher. Turn this on to add the real publisher link as "articleUrl". It is slower, because it needs one extra request per article. If Google limits the requests, the article is still saved, with an empty "articleUrl".

## `proxyConfiguration` (type: `object`):

Optional. The Actor works without a proxy. Turn one on only if runs start failing with blocked requests.

## Actor input object example

```json
{
  "mode": "search",
  "searchQueries": [
    "artificial intelligence"
  ],
  "maxItems": 100,
  "timeRange": "any",
  "sites": [
    "reuters.com",
    "bbc.com"
  ],
  "topic": "WORLD",
  "location": [
    "London"
  ],
  "language": "en",
  "country": "US",
  "resolveUrls": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

News articles saved by the run, one item per article.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "artificial intelligence"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pipiagent/google-news-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQueries": ["artificial intelligence"] }

# Run the Actor and wait for it to finish
run = client.actor("pipiagent/google-news-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "artificial intelligence"
  ]
}' |
apify call pipiagent/google-news-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pipiagent/google-news-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9l1tCFnJ9AOmE2Z6Q/builds/6uQq8gvqaAV3eq0aS/openapi.json
