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

\[$1.50/1K articles] Google News headlines for any query, topic or publisher in any language and country: title, source, published time, related coverage, and the publisher's real article URL instead of the Google redirect. Search operators and date filters work. No fee per run, no browser.

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

## Pricing

from $1.10 / 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.
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 headlines for any search query, topic or publisher, in any of Google's language and country editions, one row per article — with the publisher's **real article URL** instead of the Google redirect. Search operators and date filters work as on the site. **$1.50 per 1,000 articles (plus $1 per 1,000 for resolved URLs), no fee per run, no fee per query, error rows free.**

### What is Google News Scraper?

Google News Scraper reads Google News feeds — search results, topic sections, publisher filters — and returns the headlines as a flat table you can download as JSON, CSV or Excel or pull through the API. Every Google News link is a redirect through news.google.com; this Actor resolves it to the article's own URL, so your rows point at the publisher, carry the publisher's domain, and can be fetched or deduplicated like any other link. No browser, no login, no API key.

It is built for people who watch the news in volume: media-monitoring and PR teams, brand and competitor tracking, financial and political research, and anyone feeding a news stream into a model or a dashboard.

### What data can Google News Scraper extract?

| Field | What it holds |
|---|---|
| `title` | The headline, without the " - Source" suffix Google appends |
| `source`, `sourceUrl` | The publisher as Google News names it, and its site |
| `publishedAt` | Publication time, ISO |
| `articleUrl`, `articleDomain` ($) | The publisher's own URL and domain, resolved from the Google redirect |
| `googleUrl`, `articleId` | The Google News link and id |
| `relatedArticles` | Other outlets' coverage of the same story: title, source, Google link |
| `snippet` | The text Google News shows under a headline, when there is one |
| `query`, `scrapedAt` | What you asked for and when the row was taken |

Every row carries `type: "article"`. A query that returns nothing produces one `type: "error"` row that says what to try; error rows cost nothing.

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

Two events: **$0.0015 per article** on the free plan (down to $0.0009 on the highest plans), and **$0.001 per resolved URL** — on by default, off for a headline-only feed. No fee per run, no fee per query, no fee per page, no proxy charge.

| Plan | Per article | Per article with resolved URL | Articles per $1 (resolved) |
|---|---|---|---|
| Free | $0.0015 | $0.0025 | 400 |
| Bronze | $0.0014 | $0.0023 | 434 |
| Silver | $0.0012 | $0.002 | 500 |
| Gold | $0.0011 | $0.0018 | 555 |
| Platinum, Diamond | $0.0009 | $0.0015 | 666 |

The $5 of free monthly credit on Apify's free plan buys 2,000 resolved headlines — a daily brand watch of 60 headlines for a month.

#### Bulk export: what 50,000 headlines actually cost

This Actor is built for volume — hundreds of queries on a schedule. Because there is no fee per run and no fee per query, the bill is the number of headlines you keep and nothing else.

| Job | This Actor | Most-used Actor in this category |
|---|---|---|
| 50,000 articles across 100 runs | **$125** (with resolved URLs) | $200 |

Checked on the Apify Store on 23 September 2026 against the Actor with the most monthly users for "google news"; its per-run fee is counted in, as ours would be if we charged one. Some Actors here ask less per row — this table compares against the one buyers actually use most.

### How to scrape Google News

1. Type queries as you would on news.google.com: `Bali`, `"Bank Indonesia" rate`, `site:reuters.com Indonesia`, `Tesla when:7d`. Or pick topic sections.
2. Choose the edition — language and country — and, if needed, a date window.
3. Set **Articles per query** (Google serves up to 100 per feed; split by date windows to go deeper).
4. Leave **Resolve the real article URL** on unless you only need headlines.
5. Press **Start**. Download the table, or read it through the API.

### ⬇️ Input

#### The latest 10 headlines for two queries, with real URLs (the form's default — about 20 seconds)

```json
{
  "queries": ["Bali", "Indonesia visa"],
  "maxArticlesPerQuery": 10,
  "resolveUrls": true
}
```

#### Everything Reuters and Bloomberg wrote about a company last month, in one table

```json
{
  "queries": ["site:reuters.com Nvidia", "site:bloomberg.com Nvidia"],
  "dateFrom": "2026-08-23",
  "dateTo": "2026-09-23",
  "maxArticlesPerQuery": 100
}
```

#### German technology front page, headlines only, every hour

```json
{
  "topics": ["TECHNOLOGY"],
  "language": "de",
  "country": "DE",
  "maxArticlesPerQuery": 100,
  "resolveUrls": false
}
```

### ⬆️ Output

```json
{
  "type": "article",
  "query": "Bali visa",
  "title": "Bali cracks down on visa rules for influencers and content creators",
  "source": "New York Post",
  "sourceUrl": "https://nypost.com",
  "publishedAt": "2026-07-06T07:00:00.000Z",
  "googleUrl": "https://news.google.com/rss/articles/CBMigAFBVV95cUxOZUtxM2VtTlhfZmtvaFJTQy1tZ29PUV9…?oc=5",
  "articleId": "CBMigAFBVV95cUxOZUtxM2VtTlhfZmtvaFJTQy1tZ29PUV9…",
  "articleUrl": "https://nypost.com/2026/07/06/world-news/bali-cracks-down-on-visa-rules-for-influencers-and-content-creators/",
  "articleDomain": "nypost.com",
  "snippet": null,
  "relatedArticles": [],
  "scrapedAt": "2026-09-23T07:55:02.000Z"
}
```

Export as JSON, CSV, Excel, XML or RSS from the **Dataset** tab, or fetch the same rows with one API call.

### Use cases for Google News data

#### Media monitoring and PR

Every mention of a brand, an executive or a campaign across every outlet Google indexes, hourly, with the link that opens the story.

#### Competitive and market intelligence

Who is writing about your competitors, how often, and where the coverage clusters (`relatedArticles`).

#### Finance and research

Headline streams per ticker or policy topic with publication timestamps — event data for backtests and dashboards.

#### AI and RAG

Fresh, deduplicated URLs by topic to fetch and index; `articleDomain` makes source filtering one line.

### Integrations and Google News API

Run the Actor from your own code with the [Apify API](https://docs.apify.com/api/v2) or the Python and JavaScript clients, from n8n, Make and Zapier through the Apify nodes, straight into Google Sheets, or on a schedule with a webhook when the run finishes:

```
https://api.apify.com/v2/acts/lergassy~google-news-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN
```

#### Use it from Claude, Cursor or any MCP agent

Every Apify Actor is available as a tool through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp). Add the server and an agent can ask "what happened with Indonesia's visa rules this week" and get sourced headlines back.

### 🤖 For AI Agents & LLM Apps

- One row type, flat fields; `relatedArticles` is the only array.
- `articleUrl` is a fetchable publisher link; `googleUrl` is not (it is a redirect page).
- `publishedAt` is ISO; `articleDomain` is normalised without `www.`.
- Error rows carry `type: "error"` with a plain-English `error` string and cost nothing.

### Troubleshooting

- **Fewer than 100 articles** — Google News caps each feed at 100 and returns fewer for narrow queries; split the query by date windows (`dateFrom`/`dateTo`) or by outlet (`site:`).
- **`resolveError` on a row** — Google's resolver refused that link; the row still carries `googleUrl` and `sourceUrl`, and only the resolution is not billed.
- **Results in the wrong language** — set both `language` and `country`; Google News editions are pairs.

### ❓ FAQ

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

The Actor reads public feeds and headlines — the same data any reader sees, without logging in. Headlines and links are public facts about published articles. How you use the data is subject to the laws of your country; article bodies belong to their publishers.

#### Does Google have a news API?

Google discontinued the News API; the feeds this Actor reads are what remains public. This Actor is the practical alternative, with the redirect resolved.

#### How far back can I go?

Google News search covers years; use `dateFrom`/`dateTo` to walk through history 100 headlines at a time.

#### Do I need proxies?

No. Apify datacenter proxies are included and enough.

#### What happens on an error?

You get an error row that explains the problem in plain words. Error rows are never billed.

### Your feedback

If a field is missing or a query behaves oddly, open an issue on the Actor page with the query — it is usually fixed within a day. If the Actor saved you time, a review on the Store helps other buyers find it.

### You might also like

| Actor | What it does |
|---|---|
| [Google Ads Transparency Scraper](https://apify.com/lergassy/google-ads-transparency-scraper) | Every ad an advertiser runs on Google, with dates and previews |
| [Threads Scraper](https://apify.com/lergassy/threads-scraper) | Posts, profiles and replies from Threads |
| [YouTube Comments Scraper](https://apify.com/lergassy/youtube-comments-scraper) | Comments and replies of any YouTube video |
| [Website Contacts API](https://apify.com/lergassy/website-contacts-api) | E-mails, phones and social profiles from any website |
| [Eventbrite Scraper](https://apify.com/lergassy/eventbrite-scraper) | Events for any city or keyword with prices and organizers |

# Actor input Schema

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

One per line, as you would type into Google News. Operators work: <code>"exact phrase"</code>, <code>site:reuters.com</code> for one publisher, <code>when:7d</code> for the last week, <code>Tesla -SpaceX</code>. Hundreds per run are fine.

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

Google News front sections, in addition to or instead of queries.

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

Google News serves up to 100 per query or topic. Use several narrower queries or date windows to go deeper.

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

Google News links point at news.google.com redirects. On, the Actor resolves each to the publisher's own URL (<code>articleUrl</code>, <code>articleDomain</code>) — two extra requests per article. Off for the fastest, cheapest headline feed.

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

Two-letter code: <code>en</code>, <code>de</code>, <code>fr</code>, <code>es</code>, <code>id</code>, <code>ru</code>…

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

Two-letter code: <code>US</code>, <code>GB</code>, <code>DE</code>, <code>ID</code>, <code>AU</code>…

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

<code>YYYY-MM-DD</code>. Added to every query as <code>after:</code>.

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

<code>YYYY-MM-DD</code>. Added to every query as <code>before:</code>.

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

Apify datacenter proxies by default; Google News feeds answer them without a captcha.

## Actor input object example

```json
{
  "queries": [
    "Bali",
    "Indonesia visa"
  ],
  "maxArticlesPerQuery": 10,
  "resolveUrls": true,
  "language": "en",
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `articles` (type: `string`):

One flat row per headline: query, title, source name and site, published time (ISO), Google News link, resolved article URL and domain, related coverage of the same story.

# 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": [
        "Bali",
        "Indonesia visa"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/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": [
        "Bali",
        "Indonesia visa",
    ] }

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

```

## MCP server setup

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