# Google News Scraper(Full text) - Cheap (`codetr/apify-google-news-scraper`) Actor

Scrape Google News with 100% success. Automatically resolves encrypted JS redirects & extracts clean article text without ads. Perfect for AI/RAG, market monitoring, and sentiment analysis.

- **URL**: https://apify.com/codetr/apify-google-news-scraper.md
- **Developed by:** [Yusuf Barış](https://apify.com/codetr) (community)
- **Categories:** Automation, News
- **Stats:** 52 total users, 5 monthly users, 99.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.65 / 1,000 results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google News Scraper & Full-Text Extractor

Scrape Google News results by keyword, country, language, and time period, then optionally visit each source article to extract clean full article text, final publisher URLs, snippets, publication dates, source names, and main images.

This Actor is built for AI/RAG pipelines, media monitoring, market research, competitor tracking, brand monitoring, and automated news workflows.

### What does this Actor do?

This Actor searches Google News RSS, resolves Google News redirect links, and returns structured news article data in an Apify dataset. When `extractFullText` is enabled, it visits each resolved publisher URL and extracts readable article body text with Mozilla Readability.

The results can be exported as JSON, CSV, Excel, XML, RSS, HTML, or consumed through the Apify API.

### Features

- Search Google News by keyword, phrase, company, person, brand, or topic
- Localize Google News results by country and interface language
- Filter article results by language and source country
- Filter news by time period, including past hour, past day, past week, past month, past year, or a custom date range
- Resolve Google News redirect URLs to original publisher URLs
- Extract full article text when available
- Extract the main article image URL when detected
- Save clean structured dataset items
- Supports residential proxy configuration for more reliable extraction
- API-ready output for automation, dashboards, newsletters, AI workflows, and data pipelines

### Use cases

- Build fresh news datasets for AI, RAG, and LLM workflows
- Monitor brand, company, product, competitor, or executive mentions
- Track market, finance, policy, technology, or industry news
- Create automated news alerts, feeds, newsletters, or dashboards
- Collect article text for sentiment analysis, topic classification, and research
- Enrich internal monitoring systems with publisher URLs, snippets, dates, and article text
- Compare coverage across countries, languages, and sources

### Input

Configure the Actor with a search query, localization settings, result filters, extraction options, and proxy settings.

| Field | Type | Required | Default | Description |
|---|---|---:|---|---|
| `searchQuery` | string | Yes | `technology` | Keyword, phrase, company, person, brand, or topic to search on Google News. |
| `maxItems` | integer | No | `5` | Maximum number of Google News items to parse from the RSS feed. Google News may return fewer results than requested. |
| `googleCountry` | string | Yes | `US` | Google News country used for localized search context. Examples: `US`, `TR`, `GB`, `DE`, `FR`. |
| `uiLanguage` | string | Yes | `en` | Google News interface language. Examples: `en`, `tr`, `de`, `fr`, `es`. |
| `resultsLanguage` | string | No | `all` | Filter results to a specific article language. Use `all` to allow any language. |
| `resultsCountry` | string | No | `all` | Filter results to sources associated with a specific country. Use `all` to allow any country. |
| `timePeriod` | string | No | `all` | Filter news by relative or custom time period. Supported values: `all`, `1h`, `1d`, `7d`, `30d`, `1y`, `custom`. |
| `customTimePeriodMin` | string | No | empty | Start date for a custom time period in `YYYY-MM-DD` format. Used with `timePeriod: custom`. |
| `customTimePeriodMax` | string | No | empty | End date for a custom time period in `YYYY-MM-DD` format. Used with `timePeriod: custom`. |
| `noAutocorrect` | boolean | No | `false` | Disable Google's automatic query correction. |
| `filter` | boolean | No | `true` | Enable Google's duplicate and similar-result filtering. |
| `extractFullText` | boolean | No | `false` | Visit each article URL and extract readable article body text. Enable this when you need full article content. |
| `proxyConfiguration` | object | No | disabled | Proxy settings for full-text extraction. Residential proxies are recommended when `extractFullText` is enabled. |

### Example input

```json
{
  "searchQuery": "artificial intelligence startups",
  "maxItems": 5,
  "googleCountry": "US",
  "uiLanguage": "en",
  "resultsLanguage": "en",
  "resultsCountry": "US",
  "timePeriod": "7d",
  "noAutocorrect": false,
  "filter": true,
  "extractFullText": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

### Output

Each dataset item represents one Google News result. If full-text extraction is enabled, the Actor attempts to resolve the publisher URL and extract article body text.

| Field | Type | Description |
|---|---|---|
| `title` | string | Article headline from Google News. |
| `link` | string | Final publisher article URL when resolved, or the best available source URL. |
| `source` | string | Publisher or source name. |
| `date` | string | Publication date in ISO 8601 format when available. |
| `snippet` | string | Short Google News summary. |
| `searchQuery` | string | Search query used for the run. |
| `fullText` | string or null | Extracted article body text. `null` when extraction is disabled, blocked, or unsuccessful. |
| `topImage` | string or null | Main article image URL when detected. |
| `extractionStatus` | string | Extraction result: `success`, `failed`, `skipped`, or `blocked`. |
| `statusCode` | integer | Optional publisher HTTP status code when the page response is available, for example `401`, `403`, or `429`. |
| `error` | string | Optional error details when extraction fails or a URL cannot be resolved. |

### Example output

```json
{
  "title": "OpenAI announces new model for enterprise AI workflows",
  "link": "https://example-news-site.com/technology/openai-enterprise-ai-model",
  "source": "Example News",
  "date": "2026-02-05T14:30:00.000Z",
  "snippet": "OpenAI introduced a new model focused on business automation and reasoning...",
  "searchQuery": "artificial intelligence startups",
  "fullText": "OpenAI introduced a new model designed for enterprise AI workflows...",
  "topImage": "https://example-news-site.com/images/openai-model.jpg",
  "extractionStatus": "success"
}
```

### How to use

1. Enter a keyword, phrase, brand, company, person, or topic in `searchQuery`.
2. Set `maxItems` to control how many Google News items to collect.
3. Choose `googleCountry` and `uiLanguage` for localized Google News results.
4. Optionally set `resultsLanguage` and `resultsCountry` to filter returned articles.
5. Choose `timePeriod`, or use `customTimePeriodMin` and `customTimePeriodMax` for a custom range.
6. Enable `extractFullText` when you need full article body text.
7. Run the Actor.
8. Export the dataset as JSON, CSV, Excel, XML, RSS, HTML, or use the Apify API.

### Configuration options

#### Full-text extraction

Use `extractFullText: true` when you need article body text for AI, RAG, sentiment analysis, summarization, or research. This mode is more useful but may take longer because the Actor visits publisher websites.

Use `extractFullText: false` when you only need headlines, snippets, dates, sources, and URLs. This is faster and better for lightweight monitoring jobs.

#### Time filtering

Use `timePeriod` for relative filters:

- `all` - any time
- `1h` - past hour
- `1d` - past 24 hours
- `7d` - past week
- `30d` - past month
- `1y` - past year
- `custom` - custom date range

For custom date ranges, set:

- `customTimePeriodMin` - start date, for example `2026-01-01`
- `customTimePeriodMax` - end date, for example `2026-01-31`

#### Localization and result filters

Use `googleCountry` and `uiLanguage` to control Google News localization. Use `resultsLanguage` and `resultsCountry` when you need stricter filtering by article language or source country.

#### Proxies

Residential proxies are recommended for full-text extraction because publisher websites may block datacenter traffic or automated requests.

### Supported countries

The input schema supports these Google News country options:

`US`, `TR`, `GB`, `DE`, `FR`, `ES`, `IT`, `NL`, `BR`, `IN`, `AU`, `CA`, `JP`, `KR`, `RU`, `CN`

### Supported languages

The input schema supports these language options:

`en`, `tr`, `de`, `fr`, `es`, `it`, `nl`, `pt`, `hi`, `ja`, `ko`, `ru`, `zh-CN`, `ar`

### Pricing

Costs depend on the pricing model shown on the Actor page and your Apify platform usage.

In general:

- Larger `maxItems` values can increase runtime.
- `extractFullText: true` can increase runtime because publisher websites are visited.
- Residential proxy usage may increase platform usage.
- Failed, blocked, or empty article extraction can still consume runtime because the Actor has to request and process the page.

Check the Actor page and your Apify run details for the exact charging model and usage breakdown.

### Limitations

- Google News may return fewer results than requested.
- Some publisher websites block automated requests.
- Blocked publisher pages are saved as dataset items with `extractionStatus: blocked` instead of failing the run.
- Paywalled content is not guaranteed to be extracted.
- Some articles may return `fullText: null` if the source page blocks access or does not expose readable article content.
- `topImage` may be missing if the page does not provide a detectable main image.
- Results can vary by country, language, time period, and Google News availability.
- Full-text extraction quality depends on the publisher page structure.
- Very large runs may take longer depending on result count, publisher response times, and proxy conditions.

### FAQ

#### Why is `fullText` sometimes `null`?

The publisher website may block access, return a paywall, use unsupported page markup, or fail to expose meaningful article text.

#### Can I use this Actor only for headlines?

Yes. Set `extractFullText` to `false` to return metadata such as title, source, date, snippet, and URL without visiting each publisher page for full text.

#### Can I filter by country and language?

Yes. Use `googleCountry` and `uiLanguage` for Google News localization. Use `resultsLanguage` and `resultsCountry` for stricter result filtering.

#### Can I use a custom date range?

Yes. Set `timePeriod` to `custom`, then provide `customTimePeriodMin` and/or `customTimePeriodMax` in `YYYY-MM-DD` format.

#### Can I use proxies?

Yes. `proxyConfiguration` is supported. Residential proxies are recommended for reliable full-text extraction.

#### Can I export the data?

Yes. Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, HTML, or accessed programmatically through the Apify API.

#### Does this Actor support API usage?

Yes. You can run the Actor through the Apify API and consume the default dataset URL from the run output.

### Troubleshooting

#### I received fewer results than `maxItems`

Google News may not return enough results for the selected query, country, language, and time period. Try broadening the query or using `timePeriod: all`.

#### Many articles are marked as `blocked`

Some publishers block automated access. Use residential proxies and consider reducing concurrency through platform settings if needed.

#### The Actor is slower than expected

Full-text extraction depends on publisher website response times. Disable `extractFullText` for faster headline-only runs.

### Support

If you have questions, feature requests, or find a bug, open an issue on the Actor page.

# Actor input Schema

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

Maximum number of Google News items to parse from the RSS feed. Google News may return fewer results than requested.

## `searchQuery` (type: `string`):

Keyword, phrase, company, person, or topic to search on Google News.

## `googleCountry` (type: `string`):

Google News country used for localized search context.

## `uiLanguage` (type: `string`):

Google News interface language.

## `resultsLanguage` (type: `string`):

Filter results to a specific article language.

## `resultsCountry` (type: `string`):

Filter results to sources associated with a specific country.

## `timePeriod` (type: `string`):

Filter news by relative or custom time period.

## `customTimePeriodMin` (type: `string`):

Start date for custom time period in YYYY-MM-DD format.

## `customTimePeriodMax` (type: `string`):

End date for custom time period in YYYY-MM-DD format.

## `noAutocorrect` (type: `boolean`):

Disable Google's automatic query correction.

## `filter` (type: `boolean`):

Enable Google's duplicate and similar-result filtering.

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

Visit each article URL and extract readable article body text. Enable this when you need full article content; it can increase runtime.

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

Proxy settings for full-text extraction. Residential proxies are recommended when Extract Full Text is enabled.

## Actor input object example

```json
{
  "maxItems": 5,
  "searchQuery": "technology",
  "googleCountry": "US",
  "uiLanguage": "en",
  "resultsLanguage": "all",
  "resultsCountry": "all",
  "timePeriod": "all",
  "noAutocorrect": false,
  "filter": true,
  "extractFullText": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "maxItems": 5,
    "searchQuery": "technology",
    "customTimePeriodMin": "",
    "customTimePeriodMax": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("codetr/apify-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 = {
    "maxItems": 5,
    "searchQuery": "technology",
    "customTimePeriodMin": "",
    "customTimePeriodMax": "",
}

# Run the Actor and wait for it to finish
run = client.actor("codetr/apify-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 '{
  "maxItems": 5,
  "searchQuery": "technology",
  "customTimePeriodMin": "",
  "customTimePeriodMax": ""
}' |
apify call codetr/apify-google-news-scraper --silent --output-dataset

```

## MCP server setup

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