# Google News Scraper - LLM-Ready Articles by Keyword & Topic (`get_anything/google-news-scraper`) Actor

Scrape Google News by keyword, topic or top headlines for any country and language. Resolves real publisher URLs and optionally extracts clean, LLM-ready article text. From official RSS feeds - no API key, no browser. Export to JSON, CSV or Excel for news monitoring, sentiment and RAG.

- **URL**: https://apify.com/get\_anything/google-news-scraper.md
- **Developed by:** [Get Anything](https://apify.com/get_anything) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 — LLM-Ready Articles by Keyword & Topic

Scrape **Google News** for any keyword, topic section, or the day's top headlines — in **any country and language** — and get clean, structured articles: title, source, publish date, snippet, and the **real publisher URL**. Optionally pull the **full article text**, ready to drop into ChatGPT, Claude, or a RAG pipeline.

Everything comes from Google News's **official RSS feeds** — the same feeds Google publishes for anyone to consume. No API key, no headless browser, no proxies. That keeps runs fast, cheap, and reliable.

### Why this one

Most Google News scrapers hand you the raw feed and stop. Two things here don't:

- **Real publisher URLs.** Google News links are opaque redirects like `news.google.com/rss/articles/CBMi…`. This Actor resolves each one to the actual article URL on the publisher's site, so the data is usable in a database or a citation — not a dead-end redirect.
- **LLM-ready full text.** Turn on *Extract full article text* and each article is followed and cleaned into plain body text for summaries, sentiment analysis, and retrieval pipelines.

### What it does

- Search Google News with **multiple queries at once**, including Google operators (`site:reuters.com`, `"exact phrase"`, `intitle:`, `when:7d`).
- Pull **topic sections**: World, Nation, Business, Technology, Entertainment, Sports, Science, Health.
- Fetch the country's **Top headlines** feed.
- Any **country + language** edition (US, GB, AE, IN, ES, FR, DE, and more).
- **Recency filter** — past hour / day / week / month / year.
- **Deduplicate** stories that surface across several feeds.
- Export to **JSON, CSV, or Excel**, or pull via the Apify API.

### Input

| Field | Description |
|-------|-------------|
| `queries` | Search queries. Supports Google News operators. |
| `topics` | Topic sections to include (Business, Technology, …). |
| `topHeadlines` | Also fetch the main "Top stories" feed. |
| `country` / `language` | Two-letter codes for the edition, e.g. `US` / `en`, `AE` / `ar`. |
| `dateFilter` | Restrict search results to a recent window. |
| `maxArticlesPerQuery` | Cap per feed (Google News RSS returns up to ~100). |
| `decodeUrls` | Resolve real publisher URLs (default **on**). |
| `extractFullText` | Follow each article and extract clean body text. |
| `fullTextMaxChars` | Truncate extracted text. |
| `deduplicate` | Drop repeats (same title + source). |

#### Example

```json
{
  "queries": ["artificial intelligence regulation", "\"interest rates\" site:reuters.com"],
  "topics": ["BUSINESS", "TECHNOLOGY"],
  "country": "US",
  "language": "en",
  "dateFilter": "7d",
  "maxArticlesPerQuery": 50,
  "decodeUrls": true,
  "extractFullText": true
}
```

### Output

Each article is one dataset record:

```json
{
  "title": "Designing physics experiments with artificial intelligence",
  "source": "Nature",
  "publishedAt": "2026-07-12T06:35:18+00:00",
  "url": "https://www.nature.com/articles/...",
  "googleNewsUrl": "https://news.google.com/rss/articles/CBMiX0FV...",
  "snippet": "Researchers used machine learning to...",
  "query": "artificial intelligence regulation",
  "topic": null,
  "feedType": "search",
  "language": "en-US",
  "country": "US",
  "fullText": "Full cleaned article body text..."
}
```

### Common uses

- **Brand & competitor monitoring** — schedule a query per brand and get a daily feed.
- **Market & sentiment research** — full-text articles into an LLM for tone and theme extraction.
- **RAG / knowledge bases** — keep an index fresh with clean, deduplicated news text.
- **Newsletters & dashboards** — topic and headline feeds, normalized and export-ready.

### Notes

- Full-text extraction depends on each publisher's page and works best on standard article pages; paywalled or heavily scripted sites may return little or no body text (the article is still included with its metadata).
- URL decoding is best-effort — if Google changes its redirect scheme for a given item, the record keeps the original `googleNewsUrl` so you never lose the article.
- This Actor reads only public RSS feeds and public article pages.

# Actor input Schema

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

One or more search queries. Supports Google News operators, e.g. 'Tesla', '"interest rates" site:reuters.com', 'AI regulation when:7d'. Leave empty if you only want topics or top headlines.

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

Optional Google News topic sections to pull headlines from, in addition to your search queries.

## `topHeadlines` (type: `boolean`):

Also fetch the country's main 'Top stories' feed.

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

Two-letter country code for the edition, e.g. 'US', 'GB', 'AE', 'IN', 'AU'.

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

Two-letter language code, e.g. 'en', 'ar', 'es', 'fr', 'de'.

## `dateFilter` (type: `string`):

Restrict search-query results to a recent window (applied as Google's when: operator).

## `maxArticlesPerQuery` (type: `integer`):

Cap on articles taken from each query, topic and the headlines feed. Google News RSS returns up to ~100 per feed.

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

Google News links are opaque redirects. When on, each is resolved to the real article URL on the publisher's site. Adds a request per article.

## `extractFullText` (type: `boolean`):

Follow each resolved article and extract clean body text for summaries, RAG and sentiment. Slower and requires 'Resolve real publisher URLs'.

## `fullTextMaxChars` (type: `integer`):

Truncate extracted article text to this many characters.

## `deduplicate` (type: `boolean`):

The same story surfaces in more than one feed. When on, duplicates (same title + source) are kept only once.

## Actor input object example

```json
{
  "queries": [
    "artificial intelligence"
  ],
  "topics": [],
  "topHeadlines": false,
  "country": "US",
  "language": "en",
  "dateFilter": "",
  "maxArticlesPerQuery": 50,
  "decodeUrls": true,
  "extractFullText": false,
  "fullTextMaxChars": 8000,
  "deduplicate": true
}
```

# Actor output Schema

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

Structured results in the default dataset, 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 = {
    "queries": [
        "artificial intelligence"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("get_anything/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": ["artificial intelligence"] }

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

```

## MCP server setup

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