# Google News RSS Topic Scraper (`snappytools/google-news-rss-scraper`) Actor

This Actor reads the public Google News RSS feeds (news.google.com/rss) for keyword searches and standard topic sections, in the country and language you choose.

- **URL**: https://apify.com/snappytools/google-news-rss-scraper.md
- **Developed by:** [Snappy](https://apify.com/snappytools) (community)
- **Categories:** News, SEO tools
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.10 / 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.

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 RSS Topic Scraper – news headlines export by keyword or topic

Give it a list of keywords, or standard Google News topics like BUSINESS or TECHNOLOGY, and pick a country and language. You get back one row per article, with the headline, publisher, publisher site, publish time and link.

Each row also records which search or topic matched it and the feed it came from. Turn on **De-duplicate across runs** and schedule it, and each run saves only headlines you haven't already seen.

### Why this one

- **Keywords and topics in one run.** Add search keywords, topic sections, or both, and every feed is read in the same run.
- **Your country and language.** Set **Country code** and **Language code** to read the edition you care about, such as US and en.
- **Only fresh articles.** **Max article age (hours)** drops anything older than the window you set. Use 0 to switch the filter off.
- **Only new headlines on repeat runs.** **De-duplicate across runs** remembers article ids in a named key-value store and skips ones already saved.
- **Clean, structured rows.** Each article has a stable `id`, publisher name and site, and an ISO timestamp.
- **Pay per result.** $2.10 per 1,000 results, with no start fee. Runs with no results cost nothing.

### Quick start

```json
{"queries":["artificial intelligence"],"topics":[],"country":"US","language":"en","maxItemsPerFeed":5,"maxAgeHours":0,"dedupeAcrossRuns":false}
```

In a test run on 5 Nov 2026 this returned 5 articles, one row each, for the keyword "artificial intelligence".

### What you can use it for

| Who | What for |
|---|---|
| PR and comms teams | Track mentions of a brand, product or executive. |
| Analysts and investors | Follow a sector, company or theme with a fresh headline list. |
| Competitive intelligence | Watch competitor names and see which publishers cover them. |
| Newsletter and dashboard builders | Feed headlines into a newsletter, dashboard or Slack alert. |
| Researchers | Collect news coverage of a subject over time. |

### How to use it

1. Click **Try for free**.
2. In **Search keywords**, add one search per line, for example `artificial intelligence`.
3. In **Topics** (optional), add topic names such as `BUSINESS`, `TECHNOLOGY` or `SCIENCE`.
4. Set **Country code** (for example `US`) and **Language code** (for example `en`).
5. Set **Max items per feed**, from 1 to 100.
6. Optionally set **Max article age (hours)**, for example `24` for the last day.
7. Optionally turn on **De-duplicate across runs** to get only new headlines.
8. Click **Start**.

To get a steady stream of new headlines, turn on de-duplication and schedule the Actor from **Schedules**.

### What data you get

Each row is one article from one feed.

| Field | What it is | Example |
|---|---|---|
| `id` | Stable article id | `b25b1b71b0ff78d5` |
| `title` | Headline | `Google will cut off search access for students at schools that reject AI tools` |
| `url` | Google News link to the article | `https://news.google.com/rss/articles/CBMipgFBVV95...` |
| `publisher` | Publisher name | `ABC7 Bay Area` |
| `publisherUrl` | Publisher website | `https://abc7news.com` |
| `publishedAt` | Publish time (ISO) | `2026-11-04T16:33:53.000Z` |
| `scrapedAt` | When it was collected | `2026-11-05T01:27:14.770Z` |
| `sourceType` | Whether it came from a `query` or a topic | `query` |
| `sourceValue` | The keyword or topic that matched | `artificial intelligence` |
| `country` | Country code used | `US` |
| `language` | Language code used | `en` |
| `feedUrl` | The RSS feed it was read from | `https://news.google.com/rss/search?q=artificial%20intelligence&hl=en&gl=US&ceid=US:en` |

### Pricing

| Event | Price |
|---|---|
| Result (one article saved to the dataset) | $0.0021 |

There is no start fee. Runs with no results cost nothing.

| Run | Cost |
|---|---|
| 100 results | $0.21 |
| 1,000 results | $2.10 |
| 10,000 results | $21.00 |

### Good to know

- **Limits.** Each feed saves 1 to 100 articles. The input is bounded to 20 queries and 10 topics.
- **Broad queries get cut off.** Google News RSS returns up to about 100 items per feed, so use narrower keywords or more queries.
- **Data source.** It reads the public Google News RSS feeds (news.google.com/rss). No login or API key is needed.
- **Links.** Article links are Google News links that point to the publishers. Full article text is not copied.
- **Freshness.** Feed content, ordering and availability are controlled by Google and may change.
- **Copyright.** Respect publisher copyright when you reuse headlines.
- **Not affiliated.** This tool isn't affiliated with or endorsed by Google.

### FAQ

**Can I use search operators?** Yes. Google News operators such as quotes and `when:7d` work in **Search keywords**.

**Which topics can I use?** WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE and HEALTH.

**How do I get only new articles on each run?** Turn on **De-duplicate across runs** and schedule the Actor. Articles saved in earlier runs are skipped.

### Getting the data out

Download the results as Excel, CSV or JSON from the Output tab. Send them to Google Sheets, Slack, Zapier, Make or webhooks from the **Integrations** tab. Every run is also available through the Apify API, and you can schedule runs from **Schedules**.

### Questions or problems

Open an issue on the **Issues** tab and include the run link. I reply within one business day.

### Related tools

- [Public RSS Feed Monitor](https://apify.com/snappytools/rss-feed-monitor): watch any public RSS feed for new items
- [Sitemap News Article Extractor](https://apify.com/snappytools/smart-sitemap-article-extractor): pull news articles from site sitemaps
- [Hacker News Search and Who-is-Hiring Extractor](https://apify.com/snappytools/hackernews-algolia-scraper): search Hacker News stories and hiring threads

# Actor input Schema

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

List of keyword searches to run against the public Google News RSS search feed.

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

Optional Google News topic names such as WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH.

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

Two-letter country code used for the gl and ceid parameters, e.g. US.

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

Language code used for the hl parameter, e.g. en or en-US.

## `maxItemsPerFeed` (type: `integer`):

Maximum number of articles saved per query or topic feed (1-100).

## `maxAgeHours` (type: `integer`):

Only keep articles published within this many hours. Use 0 to disable the time filter.

## `dedupeAcrossRuns` (type: `boolean`):

Remember article ids in a named key-value store and skip ones already saved in previous runs.

## Actor input object example

```json
{
  "queries": [
    "artificial intelligence"
  ],
  "topics": [],
  "country": "US",
  "language": "en",
  "maxItemsPerFeed": 10,
  "maxAgeHours": 0,
  "dedupeAcrossRuns": 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 = {
    "queries": [
        "artificial intelligence"
    ],
    "topics": [],
    "country": "US",
    "language": "en",
    "maxItemsPerFeed": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("snappytools/google-news-rss-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"],
    "topics": [],
    "country": "US",
    "language": "en",
    "maxItemsPerFeed": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("snappytools/google-news-rss-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"
  ],
  "topics": [],
  "country": "US",
  "language": "en",
  "maxItemsPerFeed": 10
}' |
apify call snappytools/google-news-rss-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,snappytools/google-news-rss-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/TPYyxdFNkOd6yDJyY/builds/5CcsviZyUcnN0btdN/openapi.json
