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

Scrape Google News by keyword or topic. Get title, source, date, resolved URL, thumbnail, related articles. Filter by recency. 40+ languages and country targeting. Fast RSS-based extraction, no browser needed.

- **URL**: https://apify.com/junipr/google-news-scraper.md
- **Developed by:** [junipr](https://apify.com/junipr) (community)
- **Categories:** News, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.90 / 1,000 article scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

### What does Google News Scraper do?

Google News Scraper extracts news articles from Google News using public RSS feeds. Search by keyword or browse predefined topic categories including World, Business, Technology, Science, Health, Sports, and Entertainment. For each article, the actor returns the headline, resolved article URL (following Google's redirect), publication source name, publish date, description snippet, thumbnail image, and related articles grouped with the same story.

Because it uses Google News RSS feeds rather than scraping web pages, the actor is fast, reliable, and does not require a proxy. It resolves Google News redirect URLs to the actual article URLs automatically, so you get direct links to the original content.

### Features

- **Keyword search** — find news articles matching any search query
- **Topic browsing** — browse curated Google News topics: World, Business, Technology, Science, Health, Sports, Entertainment
- **URL resolution** — automatically follows Google News redirects to return the actual article URL
- **Related articles** — extracts related articles grouped with each story
- **Localization** — configure language and country codes for region-specific news coverage
- **Age filtering** — filter articles by recency (1h, 12h, 1d, 3d, 7d, 30d)
- **Thumbnail extraction** — captures article thumbnail images from the RSS feed description
- **No proxy required** — uses public RSS feeds, works on any Apify plan including free
- **Pay-per-result pricing** — only pay for articles successfully extracted

### Input Configuration

```json
{
  "searchQuery": "technology news",
  "topic": "TECHNOLOGY",
  "language": "en",
  "country": "US",
  "maxResults": 100,
  "maxAge": "7d",
  "requestDelay": 1000
}
````

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQuery` | string | `"technology news"` | Search query for finding news articles. Leave empty to use topic feed. |
| `topic` | string | `"TECHNOLOGY"` | Predefined topic: WORLD, BUSINESS, TECHNOLOGY, SCIENCE, HEALTH, SPORTS, ENTERTAINMENT. Used when searchQuery is empty. |
| `language` | string | `"en"` | Language code for results (e.g., en, es, fr, de, ja) |
| `country` | string | `"US"` | Country code for results (e.g., US, GB, CA, AU, DE) |
| `maxResults` | integer | `100` | Maximum number of articles to return (1-500) |
| `maxAge` | string | `"7d"` | Only return articles within this time period: 1h, 12h, 1d, 3d, 7d, 30d |
| `requestDelay` | integer | `1000` | Delay between HTTP requests in ms (0-30000) |

### Output Format

Each article is saved as a dataset item:

```json
{
  "title": "Apple announces new AI features for iPhone",
  "url": "https://www.reuters.com/technology/apple-announces-new-ai-features-2026-03-11",
  "source": "Reuters",
  "publishedAt": "2026-03-11T08:30:00.000Z",
  "description": "Apple unveiled a suite of new artificial intelligence features coming to iPhone later this year, including...",
  "thumbnailUrl": "https://www.reuters.com/resizer/...",
  "relatedArticles": [
    {
      "title": "Apple's AI push signals new strategy",
      "url": "https://www.theverge.com/2026/3/11/apple-ai-strategy",
      "source": null
    }
  ],
  "scrapedAt": "2026-03-11T12:00:00.000Z"
}
```

### Usage Examples / Use Cases

- **Media monitoring** — track news coverage of your brand, competitors, or industry topics with scheduled runs
- **Content curation** — aggregate articles from multiple topics to power news aggregator apps or newsletters
- **Trend analysis** — monitor breaking stories and trending topics across categories over time
- **Research** — collect news data for academic research, sentiment analysis, or NLP pipelines
- **Competitive intelligence** — track competitor mentions and product announcements in the press
- **Market signals** — monitor business and financial news for investment research and market analysis

### Pricing

This actor uses Pay-Per-Event (PPE) pricing: **$3.90 per 1,000 articles scraped** ($0.0039 per event).

Pricing includes all platform compute costs — no hidden fees.

### FAQ

#### Does this actor need a proxy?

No. Google News Scraper uses public RSS feeds provided by Google News, not web scraping. It works on any Apify plan including the free tier without any proxy configuration.

#### How does URL resolution work?

Google News RSS feeds contain redirect URLs that pass through Google servers before reaching the actual article. The actor automatically follows these redirects using HEAD and GET requests to resolve the final article URL, so you get direct links to the original source.

#### Can I get news in languages other than English?

Yes. Set the `language` parameter to any supported language code (e.g., `es` for Spanish, `fr` for French, `de` for German, `ja` for Japanese) and the `country` parameter to match. Google News serves localized content based on these codes.

#### What is the difference between searchQuery and topic?

`searchQuery` performs a keyword search across all Google News content. `topic` browses a curated category feed (Technology, Business, World, etc.). If `searchQuery` is provided, it takes priority and the topic is ignored. Leave `searchQuery` empty to use the topic feed.

#### How many articles can I extract per run?

Up to 500 articles per run. Google News RSS feeds typically contain 50-100 recent articles per query or topic. For broader coverage, run the actor multiple times with different search terms or topics.

### Related Actors

- [Reddit Scraper](https://apify.com/junipr/reddit-scraper) — scrape posts and comments from Reddit for social media monitoring
- [Hacker News Scraper](https://apify.com/junipr/hacker-news-scraper) — extract stories and comments from Hacker News
- [SEO Audit Tool](https://apify.com/junipr/seo-audit-tool) — audit websites for SEO issues and optimization opportunities
- [RAG Web Extractor](https://apify.com/junipr/rag-web-extractor) — extract clean content from article URLs for AI and LLM pipelines
- [JSON to CSV Converter](https://apify.com/junipr/json-to-csv-converter) — convert scraped news data to CSV for spreadsheet analysis

# Actor input Schema

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

Search query to find news articles. Leave empty to use a topic feed instead.

## `topic` (type: `string`):

Predefined Google News topic to browse. Only used when searchQuery is empty. Options: WORLD, BUSINESS, TECHNOLOGY, SCIENCE, HEALTH, SPORTS, ENTERTAINMENT.

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

Language code for results (e.g., en, es, fr, de, ja).

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

Country code for results (e.g., US, GB, CA, AU, DE).

## `maxResults` (type: `integer`):

Maximum number of articles to return.

## `maxAge` (type: `string`):

Only return articles published within this time period. Examples: 1h, 12h, 1d, 3d, 7d, 30d. Leave empty for no age filter.

## `requestDelay` (type: `integer`):

Delay between HTTP requests in milliseconds. Increase if you get rate-limited.

## Actor input object example

```json
{
  "searchQuery": "technology news",
  "topic": "TECHNOLOGY",
  "language": "en",
  "country": "US",
  "maxResults": 100,
  "maxAge": "7d",
  "requestDelay": 1000
}
```

# Actor output Schema

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

Google News articles with titles, resolved article URLs, publication sources, timestamps, descriptions, thumbnails, and related articles.

# 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 = {};

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

# Run the Actor and wait for it to finish
run = client.actor("junipr/google-news-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call junipr/google-news-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=junipr/google-news-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google News Scraper",
        "description": "Scrape Google News by keyword or topic. Get title, source, date, resolved URL, thumbnail, related articles. Filter by recency. 40+ languages and country targeting. Fast RSS-based extraction, no browser needed.",
        "version": "1.0",
        "x-build-id": "KZtOpjrZuKhcX9JuP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/junipr~google-news-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-junipr-google-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/junipr~google-news-scraper/runs": {
            "post": {
                "operationId": "runs-sync-junipr-google-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/junipr~google-news-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-junipr-google-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search query to find news articles. Leave empty to use a topic feed instead.",
                        "default": "technology news"
                    },
                    "topic": {
                        "title": "Topic",
                        "enum": [
                            "WORLD",
                            "BUSINESS",
                            "TECHNOLOGY",
                            "SCIENCE",
                            "HEALTH",
                            "SPORTS",
                            "ENTERTAINMENT"
                        ],
                        "type": "string",
                        "description": "Predefined Google News topic to browse. Only used when searchQuery is empty. Options: WORLD, BUSINESS, TECHNOLOGY, SCIENCE, HEALTH, SPORTS, ENTERTAINMENT.",
                        "default": "TECHNOLOGY"
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language code for results (e.g., en, es, fr, de, ja).",
                        "default": "en"
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Country code for results (e.g., US, GB, CA, AU, DE).",
                        "default": "US"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of articles to return.",
                        "default": 100
                    },
                    "maxAge": {
                        "title": "Max Age",
                        "type": "string",
                        "description": "Only return articles published within this time period. Examples: 1h, 12h, 1d, 3d, 7d, 30d. Leave empty for no age filter.",
                        "default": "7d"
                    },
                    "requestDelay": {
                        "title": "Request Delay (ms)",
                        "minimum": 0,
                        "maximum": 30000,
                        "type": "integer",
                        "description": "Delay between HTTP requests in milliseconds. Increase if you get rate-limited.",
                        "default": 1000
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
