# Google News Scraper (Original URLs) (`uxz7/google-news-scraper`) Actor

Google News articles for any search query or topic in any country and language: title, publisher, date, the publisher's original URL instead of the Google redirect, and related coverage. Time filters and de-duplication included.

- **URL**: https://apify.com/uxz7/google-news-scraper.md
- **Developed by:** [uxz7](https://apify.com/uxz7) (community)
- **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

## Google News Scraper (Original URLs)

Get Google News articles for any search query or topic, in any country and language, as clean structured data. Every article comes with its **title, publisher, publication date and the publisher's original URL**. Google News only gives you `news.google.com` redirect links, and this Actor resolves them for you at no extra cost.

Use it for media monitoring, brand and competitor tracking, PR clipping, market research, finance news feeds or as a news source for AI agents and RAG pipelines.

### What you get

- **Search any query** with Google News operators (`"exact phrase"`, `site:reuters.com`, `intitle:`, `-exclude`).
- **Topic headlines**: Top stories, World, Nation, Business, Technology, Entertainment, Sports, Science, Health.
- **Any edition**: United States, United Kingdom, Germany, Switzerland (German or French), France, India, Mexico, Brazil, Japan and every other country and language Google News supports.
- **Time filters**: past hour, 24 hours, 7 days, 30 days, past year, or an exact date range.
- **Original article URLs** instead of Google redirects.
- **Related coverage** where Google News lists other outlets covering the same story.
- **De-duplication** across queries, topics and editions, so you pay for each article only once.
- Automatic retries with fresh sessions when Google rate-limits. Proxy costs are included in the price.

### Example output

```json
{
  "type": "article",
  "feedType": "search",
  "query": "artificial intelligence",
  "topic": null,
  "edition": "US:en",
  "position": 1,
  "title": "Chipmaker beats estimates and raises outlook",
  "source": "Reuters",
  "sourceUrl": "https://www.reuters.com",
  "sourceDomain": "reuters.com",
  "publishedAt": "2026-10-27T14:05:00.000Z",
  "googleNewsUrl": "https://news.google.com/rss/articles/CBMi...?oc=5",
  "originalUrl": "https://www.reuters.com/technology/chipmaker-beats-estimates-2026-10-27/",
  "articleId": "CBMi...",
  "related": [
    { "title": "Chip stocks rally", "source": "Bloomberg", "googleNewsUrl": "https://news.google.com/rss/articles/CBMi...?oc=5" }
  ],
  "scrapedAt": "2026-10-28T20:15:00.000Z"
}
```

The table view in the Apify Console shows title, publisher, date and original URL at a glance. Export as JSON, CSV, Excel or via API.

### Input

| Field | Description |
|---|---|
| Search queries | One query per line. Operators like `site:` or quotes work. |
| Topic headlines | Current headlines of whole sections, e.g. Business or Technology. |
| Editions | `COUNTRY:language`, e.g. `US:en`, `GB:en`, `DE:de`, `CH:fr`, `MX:es-419`. Every query and topic runs in every edition. |
| Published within | Any time, past hour, 24 hours, 7 days, 30 days or year (search queries only). |
| Published after / before | Exact date range in `YYYY-MM-DD`, overrides "Published within". |
| Max articles per query or topic | Up to 100, Google News' own limit per feed. |
| Max articles in total | Hard cap for the run. |
| Remove duplicates | On by default. |
| Resolve original article URLs | On by default, same price. |
| Include related coverage | On by default. |

Want more than 100 articles for one subject? Split it: several related queries, several editions, or consecutive date ranges.

### Pricing

**$0.002 per article** ($2 per 1,000 articles), proxy included. Duplicates removed by the Actor are not charged, and feeds that fail are not charged. If an original URL cannot be resolved, the article is still delivered with its Google News link. Set a maximum cost per run and the Actor only fetches what fits into it.

### Limits

- Google News returns at most about 100 articles per query, topic and edition.
- The Actor reads public Google News feeds only. It does not download article texts behind publisher sites or paywalls.
- Publication dates and publisher names come from Google News as they are.

### Support

Missing an edition, a field or a filter? Open an issue on the Actor page.

# Actor input Schema

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

One query per line. Google News operators work too, for example "site:reuters.com", "intitle:apple" or quotes for exact phrases.

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

Current headlines of whole sections, independent of the queries.

## `editions` (type: `array`):

Google News edition as COUNTRY:language, for example US:en, GB:en, DE:de, FR:fr, CH:de, IN:en, MX:es-419. Every query and topic runs in every edition.

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

Only for search queries. Ignored when a date range is set.

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

Only for search queries. Format YYYY-MM-DD.

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

Only for search queries. Format YYYY-MM-DD.

## `maxArticlesPerFeed` (type: `integer`):

Google News returns up to about 100 articles per feed.

## `maxArticles` (type: `integer`):

Hard cap for the whole run, useful to control cost.

## `dedupe` (type: `boolean`):

Deliver an article only once, even if several queries, topics or editions return it.

## `resolveOriginalUrls` (type: `boolean`):

Google News links are redirects. With this option every article also gets the publisher's own URL (originalUrl). Slightly slower, same price.

## `includeRelated` (type: `boolean`):

Other outlets covering the same story, as listed by Google News.

## `maxRetries` (type: `integer`):

Blocked or failed requests are retried with a new session and IP.

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

US datacenter proxies work well and keep Google's consent screen away. Proxy costs are included in the price.

## Actor input object example

```json
{
  "queries": [
    "artificial intelligence"
  ],
  "editions": [
    "US:en"
  ],
  "timeRange": "any",
  "maxArticlesPerFeed": 100,
  "maxArticles": 1000,
  "dedupe": true,
  "resolveOriginalUrls": true,
  "includeRelated": true,
  "maxRetries": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}
```

# 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": [
        "artificial intelligence"
    ],
    "editions": [
        "US:en"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("uxz7/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"],
    "editions": ["US:en"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("uxz7/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"
  ],
  "editions": [
    "US:en"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}' |
apify call uxz7/google-news-scraper --silent --output-dataset

```

## MCP server setup

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