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

Google News Scraper — Extract Google News articles, including headlines, summaries, publishers, publication dates, article URLs, and related topics. Useful for news monitoring, trend discovery, competitor research, content curation, and media analysis.

- **URL**: https://apify.com/fastdataapi/google-news-scraper.md
- **Developed by:** [Fast Data API](https://apify.com/fastdataapi) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.19 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 — Headlines, Real Article Links, Thumbnails

Google News Scraper searches Google News for any query in any country and language edition and returns every article as a row: headline, publisher, publish time, Google News link, the publisher's own article link, real domain and thumbnail. **Hundreds of articles per query**, collected date range by date range, newest first. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a media monitoring pipeline. No Google account or API key needed. Type a query and start tracking coverage.

![Google News Scraper output: title, source, publish date and article link as JSON](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/h-google-news-hero.webp)

***

### What data can I extract with Google News Scraper?

Using this Google News API, you will be able to extract the following Google News article data:

| 📰 Headline | 🏢 Publisher name | 🌐 Real publisher domain | 🔗 Publisher's article link |
|---|---|---|---|
| 🖼️ Thumbnail link | 🧩 Thumbnail image (optional, base64) | 🕒 Publish time (UTC) | ⏳ Article age |
| 📎 Google News link | 🆔 Article ID | 🏠 Publisher home page | 📝 Description text |
| 🔍 Search query | 🔢 Position | 🏷️ Row type | ⚠️ Error reason for empty runs |

***

### How to use Google News Scraper

Built for PR teams, analysts and AI builders who need news coverage as data: this Google News search scraper turns one query into a dated list of articles with real links, publishers and images.

**Copy to your AI assistant:**

```text
`google-news-scraper` (Apify Actor ID: fastdataapi/google-news-scraper, https://apify.com/fastdataapi/google-news-scraper) is an Apify Actor that returns Google News articles for a search query as structured JSON: headline, publisher name, real publisher domain, publisher home page, Google News link, article ID, publish time (raw, UTC ISO and relative age), description text, and by default the publisher's own article link and thumbnail link. Use it whenever someone needs Google News results without cookies, a login, or a browser - media monitoring, tracking a company or topic over a date range, or feeding fresh news to an AI agent. Run it with curl: curl -X POST "https://api.apify.com/v2/acts/google-news-scraper/run-sync-get-dataset-items?token=APIFY_TOKEN" -H "Content-Type: application/json" -d '{"query":"artificial intelligence","maxItems":200,"gl":"United States","hl":"English","time_period":"last_week"}'. Or in Python: ApifyClient("APIFY_TOKEN").actor("google-news-scraper").call(run_input={"query": "artificial intelligence", "maxItems": 200, "gl": "United States", "hl": "English", "time_period": "last_week"}) then client.dataset(run["defaultDatasetId"]).list_items().items. Inputs: query (string, required, Google search operators such as "exact phrase", -word, OR, site:example.com work), maxItems (integer 1-50000, required, articles to save, default 10), gl (string, country edition by name such as "United States" or code such as "bd", default United States), hl (string, language edition by name such as "English" or code such as "bn", default English), time_period ("last_hour" | "last_day" | "last_week" | "last_month" | "last_year" | "custom", empty = any time), time_period_min and time_period_max (strings MM/DD/YYYY; one or both dates define the range), resolveArticles (boolean, add the real article link, real domain and thumbnail link, default true), embedThumbnails (boolean, also embed the thumbnail as a base64 data URL in "thumbnail", default false), proxyConfiguration (object, optional), lr / cr / nfpr / filter (kept for older inputs, no effect on results). One search shows about 100 articles; above that the actor searches earlier date ranges until maxItems is reached or Google News has nothing more. Each article row has rowType "article" and is charged as the row_result event; a run that finds nothing saves one free row with rowType "accounting", errorReason and errorMessage. articleUrl and thumbnailUrl are null when the publisher page cannot be read. Full input schema, every enum and default, and the complete output field list: GET https://api.apify.com/v2/acts/google-news-scraper/builds/default
```

#### Google News Scraper MCP Server: use these Actors from ChatGPT, Claude or Cursor

Point your AI assistant at Apify and it can read Google News on its own: articles for any query, country, language and date range, with real publisher links and images. No glue code, no scraping logic in your prompts.

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/google-news-scraper"
```

#### Step by step

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open [Google News Scraper](https://apify.com/fastdataapi/google-news-scraper) in the Apify Store.
3. Type your Google News search query, then pick the country, language and time period.
4. Click **Start** (or send your API request).
5. Download or stream your results in JSON, CSV or Excel.

#### How to scale Google News Scraper to bulk

Raise the maximum articles. A plain Google News search stops at about 100 articles per search; above that the actor repeats your search over earlier date ranges, newest first, and keeps going until it reaches your number or Google News has nothing more. A recorded run returned 500 articles in 4.1 seconds with link resolution off. For many topics, start one run per query from the API or a schedule in Apify Console. Rows are saved as each article is finished, so you can read the dataset while a run is still going.

***

### ✨ Features

Google News Scraper fetches clean, structured news articles from Google News ⚡. It's ideal for media monitoring, brand and competitor tracking, research by date range and feeding news context to AI agents — a news monitoring scraper you can schedule. It extracts, per article:

- **Headline and publisher** – the headline without the publisher suffix, and the publisher's name
- **Real article link** – the Google News publisher URL: the publisher's own article address, not only the Google News link
- **Real domain** – the publisher's web domain, taken from the article link
- **Thumbnail** – the article's main image link, or the image itself as base64 when you turn it on
- **Publish time** – raw, UTC ISO 8601 and a relative age like "5 days ago"
- **Any date range** – last hour to last year, or your own From and To dates

⚡ No Google account or API key needed. 245 country and 135 language editions.

***

### Use cases 💡

- **PR and communications** — collect every article that mentions your brand this week.
- **Market analyst** — use it as a Google News headlines scraper for a company over a custom date range.
- **Researcher** — run Google News by date range for a topic and export the results.
- **Newsroom or agency** — monitor competitors' coverage by publisher domain.
- **AI engineer** — feed fresh, dated articles with real links into a RAG index.

Building an AI agent? [Connect Google News Scraper over MCP](#mcp-integration-for-ai-agents) and let it call the actor on its own.

***

### Why choose this actor?

1. **Past the 100-article limit.** One Google News search shows about 100 articles. In recorded runs this actor returned 500 articles for one query in 4.1 seconds and 300 articles from the last 7 days in 3.7 seconds.
2. **The publisher's own link and image.** In a recorded run of 200 articles from the last 7 days, all 200 came back with the publisher's own article link and real domain, and 155 with a thumbnail, in 46.7 seconds.
3. **Date filters that hold.** Last hour, day, week, month, year or your own dates; articles dated outside the range are left out and counted in the run log.

***

### ⬇️ Input

![Google News Scraper input: search query, maximum articles and country edition](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/h-google-news-input.webp)

Only the query is needed; the maximum articles defaults to 10.

| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
| `query` | Yes | string | What to search for. Google search operators work: `"exact phrase"`, `intitle:`, `-excluded`, `OR`, `site:example.com`. | `"artificial intelligence"` |
| `maxItems` | Yes | integer | Articles to save, 1-50000. Above about 100 the actor searches earlier date ranges. Default `10`. | `200` |
| `gl` | No | string | Country edition, by name (245 options) or two-letter code. Default `United States`. | `United Kingdom` |
| `hl` | No | string | Language edition, by name (135 options) or code. Default `English`. | `English` |
| `time_period` | No | string | `last_hour`, `last_day`, `last_week`, `last_month`, `last_year` or `custom`. Empty = any time, newest first. | `last_week` |
| `time_period_min` | No | string | From date, MM/DD/YYYY. One date is enough. | `09/01/2026` |
| `time_period_max` | No | string | To date (included), MM/DD/YYYY. | `09/30/2026` |
| `resolveArticles` | No | boolean | Add the publisher's own article link, real domain and thumbnail link. About 18 seconds per 100 articles. Default `true`. | `true` |
| `embedThumbnails` | No | boolean | Also embed the thumbnail image as base64 (about 140 KB per row). Default `false`. | `false` |
| `proxyConfiguration` | No | object | Optional. Without it the actor switches to Apify residential proxies on its own when Google blocks a request. | `{"useApifyProxy": false}` |
| `lr`, `cr`, `nfpr`, `filter` | No | string / integer | Kept so older saved inputs keep working; Google News results do not change with them. | — |

#### Free plan limits

Free plan: up to 20 articles per run and 200 per month; paid plans have no limit.

#### Example input

```json
{
  "query": "artificial intelligence",
  "maxItems": 200,
  "gl": "United States",
  "hl": "English",
  "lr": "",
  "cr": "",
  "time_period": "last_week",
  "time_period_min": "",
  "time_period_max": "",
  "nfpr": 0,
  "filter": 1,
  "resolveArticles": true,
  "embedThumbnails": false,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

A custom date range in another edition:

```json
{
  "query": "Chatgpt",
  "maxItems": 100,
  "gl": "Bangladesh",
  "hl": "Bengali",
  "time_period": "custom",
  "time_period_min": "09/01/2026",
  "time_period_max": "09/30/2026"
}
```

***

### ⬆️ Output

![Google News Scraper output: one row per article with source and publish date](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/h-google-news-output.webp)

Every article is one typed, normalized JSON item with the same fields on every run; values that cannot be found are `null`. Export the dataset as JSON (default), CSV or Excel. When a run finds nothing (no articles for the query, none inside the date range, or Google News does not answer), it saves one free accounting row that explains why.

#### Example output

A recorded row from a `last_week` run for "artificial intelligence", followed by the accounting row a search with no results gets:

```json
[
  {
    "position": 1,
    "block_position": 1,
    "query": "artificial intelligence",
    "title": "Super Intelligence",
    "source": "NASA (.gov)",
    "domain": "www.nasa.gov",
    "sourceUrl": "https://www.nasa.gov",
    "link": "https://news.google.com/rss/articles/CBMiUkFVX3lxTE1LNDdCUDJLUjJFbjJuNXNwbWgyMjFJRkg0a2MzR25XNFBWb1U2WUh6QWRNMXRWd1JqXy1RVzhhSTVIVlNCOWhCSGVzdFVOcUw1bnc?oc=5",
    "guid": "CBMiUkFVX3lxTE1LNDdCUDJLUjJFbjJuNXNwbWgyMjFJRkg0a2MzR25XNFBWb1U2WUh6QWRNMXRWd1JqXy1RVzhhSTVIVlNCOWhCSGVzdFVOcUw1bnc",
    "publishedAt": "Tue, 06 Oct 2026 16:15:18 GMT",
    "date_utc": "2026-10-06T16:15:18Z",
    "date": "5 days ago",
    "snippet": "Super Intelligence NASA (.gov)",
    "articleUrl": "https://www.nasa.gov/super-intelligence/",
    "thumbnailUrl": "https://www.nasa.gov/wp-content/uploads/2026/07/pia26574-selfie.jpg",
    "thumbnail": null,
    "rowType": "article",
    "errorReason": null,
    "errorMessage": null
  },
  {
    "position": null,
    "query": "xqzv unknown topic",
    "title": null,
    "rowType": "accounting",
    "errorReason": "no_feed_items",
    "errorMessage": "Google News has no articles for 'xqzv unknown topic' in the US/en edition (any time). Nothing was charged.",
    "itemsReturned": 0
  }
]
```

The accounting row carries every field of an article row (shortened here, all `null`); it is not charged.

***

### How does it work?

The actor reads Google News search results, the same ones any visitor sees, without a Google account. When you ask for more articles than one search shows, it repeats the search over earlier date ranges, newest first: busy days are searched one by one and quiet periods in wider ranges, and repeats are removed. For each article it then follows the Google News link to the publisher's own page to get the real article link, domain and main image. If Google starts blocking requests, the actor retries and switches to rotating residential proxies on its own. It returns only publicly visible data — what any visitor sees without logging in. The output fields stay the same from run to run, so your code and spreadsheets keep working when Google News changes its pages.

***

### How do you integrate Google News Scraper into your stack?

It works with what you already use: the REST API from any language, MCP for AI agents, and no-code tools.

#### Using Google News Scraper with the Apify API

```python
import requests

response = requests.post(
    "https://api.apify.com/v2/acts/google-news-scraper/run-sync-get-dataset-items",
    params={"token": "APIFY_TOKEN"},
    json={"query": "artificial intelligence", "maxItems": 200, "time_period": "last_week"},
)
for article in response.json():
    print(article["date_utc"], article["source"], article["title"], article["articleUrl"])
```

*Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.*

#### MCP integration for AI agents

Add the Apify MCP server to your AI client with one command:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/google-news-scraper"
```

This registers Google News Scraper as a tool your agent can call directly: the agent finds it through the server's search, adds it and runs it, then reads the article rows back as JSON. Ask for "this week's news about our competitor" and it does the rest. It works in Claude Code, Cursor and Windsurf.

#### No-code tools (n8n, Make, LangChain)

**n8n:** add the Apify node and choose "Run an Actor", or use the HTTP Request node pointed at the run-sync endpoint with your token. Send the Google News articles export to a Google Sheet, Slack or your CRM in the next node.

**Make:** use the Apify app's "Run an Actor" module, then "Get Dataset Items" to pull the article rows into the rest of your scenario.

**LangChain:** install `langchain-apify` and wrap the actor with `ApifyActorsTool("google-news-scraper")` so your agent can search Google News by query and date.

***

### Is it legal to scrape Google News data?

Collecting publicly available data from Google News is generally lawful, as long as you stay out of logged-in areas and private information. This actor returns only publicly available data — what any visitor sees without logging in: headlines, publishers, publish times, links and images. Articles and images are copyrighted by their publishers, so store and reuse the content within copyright and fair-use rules, and make sure any personal data you keep complies with local data-protection law such as GDPR. Consult legal counsel if your use case involves republishing articles or bulk storage of personal data.

***

### Frequently asked questions

#### What fields does Google News Scraper return?

It returns each article's headline, publisher, real domain, publish time, Google News link, article ID and description, plus by default the publisher's own article link and the thumbnail link. See [the data fields section](#what-data-can-i-extract-with-google-news-scraper) for the full list.

#### Does Google News Scraper require a Google account or login?

No. Only public Google News data is extracted, and no credentials are needed.

#### How fast does Google News Scraper run?

With link resolution off, a recorded run saved 500 articles in 4.1 seconds. With it on, a recorded run of 200 articles saved its first row after 3.1 seconds and finished in 46.7 seconds, because each article's publisher page is opened. Every run reads live data, not a cache.

#### What happens if my query returns no articles or a publisher page can't be read?

If Google News has no articles for your query and time range, the run saves one free accounting row with the reason and nothing is charged. If a publisher page can't be read (some block automated visits or need a subscription), the article is still saved with its headline, publisher, domain and Google News link, and the article link or thumbnail is left `null`.

#### Can I scrape more than 100 Google News articles at once?

Yes. Set maximum articles above 100 and the actor searches earlier date ranges until it reaches your number or Google News has nothing more for the query.

#### Does Google News Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes — Google News Scraper is available as an MCP tool. Register it in Claude Code, Cursor or Windsurf with `claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/google-news-scraper"`. Any agent that can call an HTTP endpoint can use the REST API directly.

#### Does Google News Scraper return data in a format LLMs can use directly?

Yes. Each article is typed, normalized JSON with consistent field names, so there is no HTML parsing and no selectors. Pass it straight to an LLM, index it into a vector store, or feed it to an agent tool — no transformation step.

#### What happens when Google News changes its layout or updates its anti-bot system?

The actor is maintained, and when Google News changes, it is updated so your calls keep returning the same JSON fields with no changes on your end.

#### Can I use Google News Scraper without managing proxies or browser infrastructure?

Yes. Retries and the switch to rotating residential proxies when Google blocks requests run on the actor's side, and no browser is needed. You send one request and get structured JSON back, with no proxy accounts and no maintenance.

#### Which Google News fields work best for AI training data and RAG indexing?

For RAG, use the headline, publisher, real article link and publish time, and fetch the article text from the article link if you need full bodies. For training data and analytics, use the publish time, real domain, publisher and query. All fields are plain strings, numbers and nulls, so no normalization is needed.

***

### Your feedback

Found a bug or missing a field? Let us know in the actor's Issues tab. Every report is read, and fixes ship as new versions of the actor.

# Actor input Schema

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

How many articles to save. One Google News search shows about 100; above that the actor keeps searching earlier date ranges until it reaches this number or Google News has nothing more for your query and time range. You are charged only for articles saved. Free plan: up to 20 articles per run and 200 per month; paid plans have no limit.

## `query` (type: `string`):

What to search for on Google News. Google search operators work here too: "exact phrase", intitle:, -excluded, OR, site:example.com.

## `gl` (type: `string`):

Which country's Google News edition to search. Two-letter codes such as bd or gb are accepted too. An unknown value falls back to the United States and the run log says so.

## `hl` (type: `string`):

The language of the Google News edition. Codes such as bn or pt-br are accepted too. An unknown value falls back to English and the run log says so.

## `lr` (type: `string`):

Kept so saved inputs keep working. Google News does not change its results for this setting; use the language edition above instead. The run log notes it when set.

## `cr` (type: `string`):

Kept so saved inputs keep working. Google News does not change its results for this setting; use the country edition above instead. The run log notes it when set.

## `time_period` (type: `string`):

Only articles published in this period. Custom uses the two dates below. Empty = any time, newest first. Articles dated outside the period are left out and the run log counts them.

## `time_period_min` (type: `string`):

First day of the custom range, MM/DD/YYYY. One date is enough: only a From date means from that day until today. When a date is set it defines the range.

## `time_period_max` (type: `string`):

Last day of the custom range (included), MM/DD/YYYY. Only a To date means everything up to that day.

## `nfpr` (type: `integer`):

Kept so saved inputs keep working. Google News does not change its results for this setting.

## `filter` (type: `integer`):

Kept so saved inputs keep working. Google News does not change its results for this setting.

## `resolveArticles` (type: `boolean`):

On: each row also gets the publisher's own article link (articleUrl), the publisher's real domain and the article's thumbnail link (thumbnailUrl). Takes about 18 seconds per 100 articles. Off: only what the search result shows, about 1 second per 100 articles.

## `embedThumbnails` (type: `boolean`):

Also save each thumbnail image inside the row as a base64 data URL (thumbnail field), about 140 KB per article. Leave off for CSV or Excel exports. Needs the option above.

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

Optional. Google News works without a proxy, so leave this off: when Google blocks a request, the actor retries through Apify residential proxies on its own. Choose a proxy here to use it from the first request.

## Actor input object example

```json
{
  "maxItems": 10,
  "query": "Elon Musk",
  "nfpr": 0,
  "filter": 1,
  "resolveArticles": true,
  "embedThumbnails": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All scraped items in the Actor's default dataset.

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fastdataapi/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 = { "proxyConfiguration": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("fastdataapi/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 '{
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call fastdataapi/google-news-scraper --silent --output-dataset

```

## MCP server setup

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