# Google News Monitor & AI Digest: Brand Alerts (`olliolli/google-news-monitor`) Actor

Monitor Google News for brands, competitors and topics in any EU country. Only new articles per run, AI sentiment and topic per headline, and a daily digest per search. No API key needed.

- **URL**: https://apify.com/olliolli/google-news-monitor.md
- **Developed by:** [Tom J](https://apify.com/olliolli) (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 Monitor & AI Digest: Brand Alerts

Follow what the news says about **your brand, your competitors or your market** in any European country. Add a list of searches, schedule the Actor daily, and get **only the new articles** since the last run, each with **AI sentiment and topic**, plus **one short digest per search** you can forward by email or Slack.

No API key, no login: it reads the public Google News feed.

### What can you use it for?

- **Brand and reputation monitoring**: see negative coverage the morning it appears.
- **Competitor tracking**: store openings, price changes, lawsuits, new products, leadership changes.
- **PR and agencies**: one monitor name per client, a ready digest every morning.
- **Market and sector news**: follow "energieprijzen", "e-commerce Belgium" or "Peppol" in Dutch, French or German.

### How to use it

1. Enter your **searches**, e.g. `Coolblue`, `Proximus`, `"Colruyt" -vacature`.
2. Pick the **country edition** (and language for Belgium: nl or fr) and the **period**.
3. For a daily monitor choose **Only new articles since the previous run** and give it a **Monitor name**.
4. Add a schedule (*Schedules* → daily). Connect the run to Slack, email or a webhook via *Integrations*.

### Output example

```json
{
  "query": "Coolblue",
  "country": "BE",
  "title": "Coolblue opent nieuwe winkel in Gent",
  "source": "De Tijd",
  "sourceDomain": "tijd.be",
  "publishedAt": "2026-10-25T08:00:00Z",
  "googleNewsUrl": "https://news.google.com/rss/articles/...",
  "relatedCoverage": 1,
  "sentiment": "neutral",
  "topic": "expansion",
  "aboutSearch": true
}
```

The digest (Output tab → *Digest (Markdown)*) per search: a 2–4 sentence summary, highlights, things worth watching and the top articles with links.

### Pricing

| Event | Price |
|---|---|
| New article (headline, outlet, date, link) | **$0.002** |
| New article with AI sentiment, topic and relevance check | **$0.003** (instead of the above) |
| AI digest per search | **$0.03** |

**Example:** 5 brands, ~6 new articles each per day, with AI and a daily digest = 30 × $0.003 + 5 × $0.03 = **$0.24 per day**.

**Not charged:** articles the same monitor already delivered, duplicates, excluded sources or words, side mentions (when *Only headlines about the search* is on), and failed feeds.

### Good to know

- Google News returns up to **100 articles per search**; narrow broad searches with operators (`"exact name"`, `-word`, `OR`).
- `googleNewsUrl` opens the article via Google News; the outlet's own domain is in `sourceDomain`.
- `relatedCoverage` = how many other outlets Google groups under the same story (a rough reach signal).
- AI runs on Cloudflare Workers AI (Llama 3.3 70B); only headlines and outlet names are sent. Check samples before acting on sentiment.
- Free Apify plan: at most 50 articles per run.
- `aboutSearch` separates headlines about your search from side mentions (e.g. deal lists that link to a shop). The digest only summarises headlines about the search.
- Headlines and links only: no article bodies, no personal data.

### FAQ

**Which countries?** Belgium, the Netherlands, France, Germany, Austria, Switzerland, Luxembourg, Italy, Spain, Portugal, Ireland, the UK, the US, Poland, Sweden and Denmark.

**Can I get alerts only for negative news?** Filter the dataset on `sentiment = negative` in your integration, or read the digest's *Worth watching* section.

**How often should I run it?** Daily for brands, hourly (`Last hour` + Only new) for crisis monitoring.

### Support

Open an issue on the *Issues* tab with the run ID.

# Actor input Schema

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

Brands, companies, products or topics, one per line. Google News operators work, e.g. "Coolblue" -vacature or Proximus OR Orange.

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

Google News edition (country). The language follows the country unless you set one below.

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

Optional. For Belgium choose nl or fr; leave empty for the country's default language.

## `timeframe` (type: `string`):

Only articles from this period.

## `mode` (type: `string`):

All articles in the period, or only articles this monitor has not delivered before (ideal for a daily schedule: you only pay for new articles).

## `stateName` (type: `string`):

Only for 'Only new articles'. Runs with the same name share their memory. Use one name per client or watch list.

## `aiTagging` (type: `boolean`):

Adds sentiment toward the search (positive, neutral, negative), a topic label and 'aboutSearch': true when the headline is about the search itself, false for side mentions (e.g. deal lists linking to a shop).

## `dropIrrelevant` (type: `boolean`):

With AI tagging on: skip side mentions (aboutSearch = false); they are not charged. Off: they are kept and marked, and the digest still only summarises headlines about the search.

## `aiDigest` (type: `boolean`):

One short summary per search with highlights and things worth watching. Saved as DIGEST (Markdown) for email or Slack.

## `digestLanguage` (type: `string`):

Language of the digest.

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

Google News returns up to 100 articles per search.

## `excludeSources` (type: `array`):

Domains to skip, e.g. press-release sites or your own website.

## `excludeWords` (type: `array`):

Headlines containing any of these words are skipped, e.g. 'vacature' or 'job'.

## Actor input object example

```json
{
  "queries": [
    "Coolblue",
    "Proximus"
  ],
  "country": "BE",
  "timeframe": "7d",
  "mode": "all",
  "stateName": "default",
  "aiTagging": true,
  "dropIrrelevant": false,
  "aiDigest": true,
  "digestLanguage": "en",
  "maxArticlesPerQuery": 100
}
```

# Actor output Schema

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

Each new article with outlet, date, sentiment and topic.

## `digestMarkdown` (type: `string`):

Ready to paste into an email or Slack.

## `digests` (type: `string`):

Summary, highlights and things worth watching per search.

## `summary` (type: `string`):

Feeds read, articles found and charged events.

# 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": [
        "Coolblue",
        "Proximus"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("olliolli/google-news-monitor").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": [
        "Coolblue",
        "Proximus",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("olliolli/google-news-monitor").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": [
    "Coolblue",
    "Proximus"
  ]
}' |
apify call olliolli/google-news-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,olliolli/google-news-monitor"
        }
    }
}
```

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/N134SUvOIlLBF4Px3/builds/76ivRTeibsrnWcXAd/openapi.json
