# Google News Scraper (`dektionstudio/google-news-scraper`) Actor

Google News articles for any search or section, in any country and language: headline, publisher, date and the publisher's real URL instead of the news.google.com link. Sections add related coverage. Up to 100 per search. $1 per 1,000 articles.

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

## Pricing

from $1.00 / 1,000 articles

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

Google News articles for any search or section, in any country and language: headline, publisher, publish date and the real article URL, plus the other outlets covering the same story when you read a section. Up to 100 articles per search. People use this kind of feed for brand monitoring, PR reports and feeding news into AI tools.

The part that matters most is the link. Google News sends every article through a news.google.com redirect, so most exports are full of Google links you can't use directly. This Actor turns each one into the publisher's own URL, like theguardian.com or reuters.com, using Google's own link lookup. In two test runs on 27 September, all 200 links resolved, to 74 and 47 different sites.

### What you get for each article

- Headline, with the publisher name removed from the end
- Publisher name and site
- Publish date and time
- The article URL on the publisher's site, plus the original Google News link
- Related coverage: other outlets' headlines Google groups with the story, for sections
- Which search or topic it came from, and its position there

### Input

```json
{
    "queries": ["electric cars", "\"OpenAI\" site:reuters.com"],
    "topics": ["TECHNOLOGY"],
    "country": "US",
    "language": "en",
    "timeRange": "7d"
}
```

- `queries` accept Google News operators: quotes for exact phrases, `site:` for one publisher, `-word` to exclude.
- `topics` are Google News sections: top stories, world, nation, business, technology, entertainment, sports, science and health.
- `country` and `language` pick the edition, for example `DE` with `de` for the German edition or `IN` with `en` for India.
- `timeRange` limits searches to the past hour, 12 hours, day, week or month.

### Output

```json
{
    "source": "electric cars",
    "sourceType": "search",
    "position": 2,
    "title": "High-mileage electric cars are more reliable than petrol ones",
    "publisher": "The Guardian",
    "publisherUrl": "https://www.theguardian.com",
    "articleUrl": "https://www.theguardian.com/environment/2026/sep/22/high-mileage-used-electric-cars-reliable-petrol-ev-mot",
    "googleNewsUrl": "https://news.google.com/rss/articles/CBMi...",
    "publishedAt": "2026-09-22T19:01:00.000Z"
}
```

### Pricing

$0.001 per article, so 1,000 articles cost $1. A search or topic that fails is an error row that costs nothing. Apify adds $0.00005 per run for starting the Actor.

### Limits

- Google News returns at most 100 articles per search or topic. For more, split a search into narrower ones or run it on a schedule.
- If Google doesn't answer a link lookup, the article still comes back with its Google News link and `articleUrl` empty.
- Topics always show current news; `timeRange` applies to searches only.
- Related coverage comes with sections like Top stories or Technology, where Google groups a story's outlets together. Search results arrive one article at a time, so for searches that list is empty.
- Google News gives headlines and links, not article text. For the text, run the `articleUrl` list through a page scraper.

### Changelog

- 2026-09-27: first version.

# Actor input Schema

## `queries` (type: `array`):

What to search Google News for, one per line. Google News operators work too, like site:reuters.com or "exact phrase". Up to 50 per run.

## `topics` (type: `array`):

Google News sections to collect, in addition to or instead of searches.

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

Two-letter code of the Google News edition: US, GB, DE, IN...

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

Language of the edition, like en, de, es or fr.

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

For searches only. Topics always show current news.

## `maxArticlesPerSource` (type: `integer`):

Google News returns up to 100 per search or topic.

## `decodeUrls` (type: `boolean`):

Google News links point to news.google.com. This turns each one into the publisher's own article URL. Off is faster and keeps only the Google link.

## `includeRelatedArticles` (type: `boolean`):

Other outlets' headlines that Google groups with the story. Google only groups stories in sections (topics), so search results don't have them.

## Actor input object example

```json
{
  "queries": [
    "electric cars"
  ],
  "country": "US",
  "language": "en",
  "timeRange": "any",
  "maxArticlesPerSource": 100,
  "decodeUrls": true,
  "includeRelatedArticles": true
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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 = {
    "queries": [
        "electric cars"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dektionstudio/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 = { "queries": ["electric cars"] }

# Run the Actor and wait for it to finish
run = client.actor("dektionstudio/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 '{
  "queries": [
    "electric cars"
  ]
}' |
apify call dektionstudio/google-news-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dektionstudio/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/d4A3Y82je8UBg6tGn/builds/TF3eIC7lzR0ueqGOj/openapi.json
