# Google News Scraper + Full Article Text (Markdown for AI) (`fguiraud/google-news-scraper`) Actor

Google News search, top stories and topics in any country and language, with the real article URL and the full article text as clean Markdown for LLMs and RAG: title, source, date, author, image. Over 100 results per search, only-new-articles mode for schedules. Pay per article.

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

## Pricing

from $2.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

### What does Google News Scraper + Full Article Text do?

**Google News Scraper** collects news from **Google News searches, top stories and topics** (Business, Technology, Sports…) in **any country and language**, and goes one step further than other Google News tools: it **decodes each Google News link to the real article URL** and **extracts the full article text as clean Markdown**, ready for **LLMs, RAG pipelines, summaries and sentiment analysis**. You also get the title, publisher, publication date, author, main image and description.

Google limits each search to 100 results; this Actor **automatically splits long periods into date windows** to collect **up to 5,000 articles per query**, removes duplicates across queries, and can return **only articles that are new since the last run**. No API key needed, and you **pay per article**.

It runs on the Apify platform, so you also get an API, **scheduling** (e.g. an hourly news feed), integrations (Google Sheets, Slack, Make, Zapier, n8n) and access for **AI agents through the [Apify MCP server](https://mcp.apify.com)**.

### Why use it?

- 📰 **Media monitoring**: track your brand, competitors, executives or industry across thousands of publishers.
- 🤖 **AI pipelines and RAG**: full article text in Markdown, not just headlines, so an LLM can actually read and summarize the news.
- 📊 **Market and financial research**: collect everything written about a company, product or market over months.
- 🔔 **Alerts**: schedule it with **Only new articles** and send each new story to Slack, email or a spreadsheet.
- 🌍 **Any country and language**: US, UK, India, Germany, Brazil, Mexico, Japan and every other Google News edition.

### How to scrape Google News with full article text

1. Click **Try for free**.
2. Enter **search queries** (Google operators like `"exact phrase"`, `site:reuters.com` or `-exclude` work) and/or pick **topics** such as Top stories or Technology.
3. Choose the **time period**, **country** and **language**.
4. Click **Start**. About 20 articles with full text take 10 to 20 seconds.
5. Open the **Full text** view, or download the results as JSON, CSV or Excel.

### Input

| Field | Description | Default |
|---|---|---|
| `queries` | Google News searches, one per line | `queries` or `topics` required |
| `topics` | `TOP`, `WORLD`, `NATION`, `BUSINESS`, `TECHNOLOGY`, `ENTERTAINMENT`, `SPORTS`, `SCIENCE`, `HEALTH` | - |
| `timeRange` | Past hour, 24 hours, 7 days, 30 days, year, or any time | past 7 days |
| `dateFrom` / `dateTo` | Exact date range for searches (YYYY-MM-DD) | - |
| `maxArticlesPerQuery` | Up to 5,000; above 100 the search is split into date windows | 100 |
| `fullText` | Extract the full article text, author, image and description | `true` |
| `textFormat` | `markdown` or `txt` | `markdown` |
| `country` / `language` | Google News edition, e.g. `US`/`en`, `GB`/`en`, `MX`/`es-419`, `BR`/`pt-BR`, `DE`/`de` | `US` / `en` |
| `onlyNewArticles` | Scheduled runs: skip articles returned by previous runs | `false` |

```json
{
  "queries": ["solar energy", "\"artificial intelligence\" regulation site:reuters.com"],
  "topics": ["BUSINESS"],
  "timeRange": "7d",
  "country": "US",
  "language": "en",
  "maxArticlesPerQuery": 100
}
```

### Output

One record per article. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
  "title": "Why some farmers are pairing crops and grazing sheep with solar panels",
  "source": "DW.com",
  "sourceUrl": "https://www.dw.com",
  "publishedAt": "2026-09-25T10:24:13Z",
  "url": "https://www.dw.com/en/why-farmers-are-pairing-crops-with-solar-panels/a-79233970",
  "googleNewsUrl": "https://news.google.com/rss/articles/CBMihwFBVV95cUxP…",
  "foundBy": ["search: solar energy"],
  "author": "Josh Axelrod",
  "image": "https://static.dw.com/image/79235972_6.jpg",
  "description": "From cooler soil to paid grazing land, farmers in the US are finding that solar panels can do more than generate power.",
  "text": "Traditionally, solar panel farms are quiet — save for the faint hum of the inverter. But on about one in 10 of American solar farms, there's a new sound reverberating through fields: baaaa. …",
  "wordCount": 1056,
  "fullTextStatus": "ok",
  "textFormat": "markdown"
}
```

### Data fields

| Field | Description |
|---|---|
| `title`, `source`, `publishedAt` | Headline, publisher and publication time from Google News |
| `url` | The real article URL on the publisher's site |
| `text`, `wordCount` | Full article text (Markdown or plain) and its length |
| `fullTextStatus` | `ok`, `partial` (free part of a paywalled article), `paywall`, `blocked` (the site refuses automated access), `not-found` or `failed` |
| `author`, `image`, `description`, `articleDate` | Metadata from the article page |
| `foundBy` | Which queries or topics found the article (duplicates are merged) |
| `googleNewsUrl` | The original news.google.com link |

### How much does it cost to scrape Google News?

| Event | Price |
|---|---|
| Run start (per GB of memory, default 512 MB) | $0.001 |
| Article (title, source, date, real URL) | **$0.002** |
| Full article text (only when extracted) | **$0.002** |

100 articles with full text cost about **$0.40**; headlines only, about **$0.20**. The full-text fee is **not charged** when a site blocks access, is paywalled or has no readable text. Set **Max cost per run** and the Actor stops cleanly at that limit.

### Use it with AI agents (MCP)

Add `https://mcp.apify.com?tools=fguiraud/google-news-scraper` to Claude, Cursor or any MCP client and ask:

- *"Find this week's news about Tesla's robotaxi and summarize what analysts say."*
- *"What are today's top business stories in the UK? Give me the key points of each."*

Smallest useful input for an agent: `{"queries": ["tesla robotaxi"], "timeRange": "7d", "maxArticlesPerQuery": 10}`.

### Tips

- **How many articles get full text?** In our tests about **80%**. Some large publishers (for example Reuters) block automated access; for those you still get the title, source, date and real URL.
- Use **Google operators** to focus searches: `"exact phrase"`, `site:bbc.co.uk`, `intitle:earnings`, `-sports`.
- For **alerts**, schedule the Actor every hour or day with **Only new articles** on: you pay only for new stories.
- Set **Extract full article text** off when you only need headlines: it is faster and costs half.
- Long runs are safe: if the platform restarts the run, finished articles are skipped and never charged twice.

### Related tools

- Want to measure how much interest a story creates? [Google Trends Scraper](https://apify.com/fguiraud/google-trends-scraper) returns search interest over time, by country and city, plus rising related searches and what is trending today.

### FAQ and limitations

- **Why not 100% full text?** Paywalls and bot protection on some news sites; those articles are marked `paywall` or `blocked` and the full-text fee is not charged.
- **Can I get articles older than a year?** Use `dateFrom` / `dateTo`; Google News coverage of older news varies by publisher.
- **Copyright**: article texts belong to their publishers. Use them for analysis, monitoring and internal research, and check each publisher's terms before republishing.
- Found a problem or need a feature? Open an issue on the **Issues** tab. Replies within 48 hours.

# Actor input Schema

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

What to search on Google News, one query per line. Google operators work: "exact phrase", OR, -exclude, site:reuters.com, intitle:tesla.

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

Google News sections: TOP (top stories) or WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH.

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

Only articles published in this period. Ignored when dates are set below.

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

Optional start date (YYYY-MM-DD) for searches.

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

Optional end date (YYYY-MM-DD) for searches.

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

Google returns up to 100 articles per search. Above 100, the search is automatically split into date windows to collect more (up to 5,000).

## `fullText` (type: `boolean`):

Download each article and extract its main text as clean Markdown (no menus, ads or comments), plus author, image and description. Billed only when the text is extracted.

## `textFormat` (type: `string`):

Markdown keeps headings, lists and tables (best for LLMs); plain text removes formatting.

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

Google News edition country: US, GB, IN, AU, CA, DE, FR, ES, MX, BR, JP...

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

Edition language: en, es, de, fr, pt-BR, es-419 (Latin America), ja...

## `onlyNewArticles` (type: `boolean`):

For scheduled runs: skip articles already returned by previous runs of the same query (remembered in a key-value store named 'google-news-monitor' in your account), so you only pay for new ones.

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

Optional. Spreads Google News requests over several IPs for very large runs. Articles are always fetched directly.

## `maxConcurrency` (type: `integer`):

How many articles are processed at the same time.

## Actor input object example

```json
{
  "queries": [
    "solar energy",
    "artificial intelligence regulation"
  ],
  "timeRange": "7d",
  "maxArticlesPerQuery": 100,
  "fullText": true,
  "textFormat": "markdown",
  "country": "US",
  "language": "en",
  "onlyNewArticles": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxConcurrency": 10
}
```

# Actor output Schema

## `results` (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": [
        "solar energy",
        "artificial intelligence regulation"
    ]
};

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

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

```

## MCP server setup

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