# Brand Mention News Monitor (`codeclouds/brand-mention-news-monitor`) Actor

Monitor news mentions of any brand, company, or keyword via Google News RSS. Returns title, source, publish date, link, snippet, and optional sentiment per mention.

- **URL**: https://apify.com/codeclouds/brand-mention-news-monitor.md
- **Developed by:** [Dennis](https://apify.com/codeclouds) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 news mentions

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

## Brand Mention News Monitor

Monitor news mentions of any brand, company, or keyword via Google News RSS. A pay-per-use alternative to expensive media-monitoring SaaS tools like Meltwater, Mention, and Brand24 — no monthly subscription required.

### What it does

This actor continuously monitors Google News for mentions of your specified brands, companies, or keywords. For each mention, it returns the article title, source, publish date, direct link, a text snippet, and an optional sentiment classification (positive / neutral / negative).

**Key features:**

- **Multi-term monitoring** — track up to 20 brands or keywords in a single run
- **Only-new mode** — `onlyNew: true` remembers what previous runs already returned, so scheduled runs deliver only fresh mentions instead of the same articles every time
- **Date filter** — return only mentions published on or after a given date
- **Sentiment filter** — return only positive, neutral, or negative mentions (e.g. crisis watch)
- **Language & region targeting** — monitor news in any Google News locale (`en-US`, `nl-NL`, `de-DE`, `fr-FR`, …)
- **Sentiment analysis** — keyword-based classification in English, Dutch, German, and French
- **Deduplication** — automatic within-run dedup across search terms, plus optional cross-run dedup
- **Structured output** — clean JSON per mention, ISO-8601 timestamps, ready for dashboards, alerts, or AI-agent pipelines

### Why use this instead of Meltwater/Mention/Brand24?

| | Meltwater | Mention | Brand24 | This actor |
|---|---|---|---|---|
| Price | $15K–60K/year | $49+/month | $99+/month | Pay-per-use (~$0.005/mention) |
| Commitment | Annual | Monthly | Monthly | None |
| Scheduled "new mentions only" | Enterprise | Limited | Limited | Yes, built in |
| API access | Enterprise only | Limited | Limited | Full dataset access |
| AI-agent ready | No | No | No | Yes (structured JSON) |

### Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `searchTerms` | string\[] | Yes | — | Brand names, company names, or keywords to monitor (max 20) |
| `language` | string | No | `"en-US"` | Language/region code for Google News (e.g. `en-US`, `nl-NL`, `de-DE`, `fr-FR`) |
| `maxResultsPerTerm` | integer | No | `50` | Maximum mentions per search term (1–100) |
| `includeSentiment` | boolean | No | `true` | Add sentiment classification to each mention |
| `onlyNew` | boolean | No | `false` | Skip mentions already returned by a previous run (persisted in a key-value store) |
| `publishedAfter` | string | No | — | Only mentions published on or after this date (ISO 8601, e.g. `2026-09-21`) |
| `sentimentFilter` | string | No | — | Only mentions with this sentiment: `positive`, `neutral`, or `negative` |

#### Example input

```json
{
  "searchTerms": ["Tesla", "Elon Musk"],
  "language": "en-US",
  "maxResultsPerTerm": 50,
  "includeSentiment": true,
  "onlyNew": true
}
```

### Output

Each result is a structured JSON object:

```json
{
  "searchTerm": "Tesla",
  "title": "Tesla Reports Record Quarterly Deliveries",
  "url": "https://news.google.com/rss/articles/CBMi...",
  "source": "Reuters",
  "sourceUrl": "https://www.reuters.com",
  "publishedAt": "2026-09-28T10:00:00.000Z",
  "snippet": "Tesla reported record quarterly deliveries on Monday...",
  "sentiment": "positive"
}
```

| Field | Type | Description |
|---|---|---|
| `searchTerm` | string | The search term that matched this mention |
| `title` | string | Article headline |
| `url` | string | Direct link to the article (Google News redirect) |
| `source` | string | News source name (e.g. "Reuters", "GetLatka") |
| `sourceUrl` | string | URL of the news source |
| `publishedAt` | string | Publication date, ISO 8601 in UTC |
| `snippet` | string | Article snippet / summary text |
| `sentiment` | string | null | `"positive"`, `"neutral"`, `"negative"`, or `null` when `includeSentiment` is false |

### Use Cases

- **PR & communications teams** — track brand coverage across news media in real time
- **Competitive intelligence** — monitor competitor mentions alongside your own brand
- **Crisis monitoring** — `sentimentFilter: "negative"` returns only adverse coverage
- **Investor relations** — track news sentiment around publicly traded companies
- **AI-agent pipelines** — feed structured mention data into LLM-based alerting or summarization workflows
- **SEO & content strategy** — identify which news outlets cover your brand most frequently

### Scheduling tip

For a daily "what's new about my brand" report, use `onlyNew: true` together with an Apify schedule:

```json
{ "searchTerms": ["YourBrand"], "onlyNew": true, "maxResultsPerTerm": 50 }
```

The actor stores hashes of up to 5000 previously returned articles in a key-value store, so each scheduled run only delivers mentions you have not seen before. Without `onlyNew`, every run returns the full current result window.

### Pricing

| Event | Price | Description |
|---|---|---|
| `news-mention` | $0.005 | Per news mention delivered |

**Example cost:** monitoring 3 brands with 50 results each = 150 mentions ≈ $0.75 per run.

### Legal

This actor uses the public Google News RSS feed. It only stores article titles, snippets, and links — no full article text, no personal data. Google News RSS is intended for personal, non-commercial use in feed readers; commercial redistribution of the raw feed may be subject to Google's terms. The sentiment analysis is a lightweight keyword heuristic, not a professional NLP model.

### FAQ

**Q: How often should I run this actor?**
A: For active brand monitoring, run it daily or every few hours via Apify's scheduler. Combine with `onlyNew: true` so each run only returns fresh mentions. Google News returns roughly the 100 most recent items per query.

**Q: Does it support non-English news?**
A: Yes — set the `language` parameter to any Google News locale (e.g. `nl-NL` for Dutch, `de-DE` for German, `fr-FR` for French). Sentiment analysis supports English, Dutch, German, and French; for other languages it falls back to the English word lists.

**Q: What is the sentiment analysis based on?**
A: A keyword-based heuristic using curated positive/negative word lists. It is intentionally lightweight and transparent — for production-grade sentiment, pipe the output through a dedicated NLP service. The `sentiment` field is advisory, not a measurement.

**Q: Are the article links direct?**
A: Links are Google News redirect URLs (`news.google.com/rss/articles/...`) that resolve to the original article when opened. Google does not expose the publisher URL directly in the feed.

**Q: Why do I sometimes get fewer results than `maxResultsPerTerm`?**
A: The feed returns a limited and shifting window per query, and filters (`publishedAfter`, `sentimentFilter`, `onlyNew`) reduce the result further. A term with little recent coverage legitimately returns fewer items.

**Q: How is this different from the Apify Store's existing brand-mention actors?**
A: Existing actors focus on social platforms (Reddit, Xiaohongshu) or generic web mentions with negligible traction. This actor specifically targets **news media** via Google News RSS — the core use case of Meltwater/Mention/Brand24 — with scheduled "new mentions only" mode and structured output.

### When should an AI agent use this?

1. "Monitor news mentions of \[brand] and return the latest 20 articles with sentiment."
2. "Track competitor news for \[competitor1], \[competitor2], and \[competitor3] in Dutch media."
3. "Fetch the latest news about \[company] and classify each mention as positive, neutral, or negative."
4. "Return only negative news mentions about \[brand] from the past week."
5. "Compare news sentiment for \[brand A] vs \[brand B] over the latest articles."
6. "Give me all mentions of \[product] since 2026-09-01 in German-language news."

### Related Actors

- **[Google Trends Search Interest Monitor](https://apify.com/codeclouds/google-trends-search-interest-monitor)** — track search-interest trends for the same brand or keyword. Combine it with this actor to see whether news coverage and public search interest move together.
- **[Universal Price Monitor](https://apify.com/codeclouds/universal-price-monitor)** — monitor competitor product prices and stock. Useful alongside brand-mention monitoring for competitive-intelligence workflows.

### Keywords

brand monitoring, news monitor, media monitoring, sentiment analysis, Google News, PR tool, Meltwater alternative, Mention alternative, Brand24 alternative, keyword tracking, news alerts, brand mentions, media mentions, news tracking, competitive intelligence

### Changelog

- **2026-09-28** — Initial release. Google News RSS integration, multi-term monitoring, language/region targeting, EN/NL/DE/FR sentiment heuristic, ISO-8601 timestamps, within-run dedup, optional cross-run dedup (`onlyNew`), `publishedAfter` date filter, `sentimentFilter`, retry with backoff.

# Actor input Schema

## `searchTerms` (type: `array`):

Merknamen, bedrijfsnamen of trefwoorden om te monitoren (max 20).

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

Taal/regio-code voor Google News, bv. 'en-US', 'nl-NL', 'de-DE' of 'fr-FR'.

## `maxResultsPerTerm` (type: `integer`):

Maximum aantal nieuwsvermeldingen per zoekterm (1-100).

## `includeSentiment` (type: `boolean`):

Voeg een eenvoudige sentiment-classificatie (positive/neutral/negative) toe per vermelding. Wordt automatisch aangezet wanneer 'Sentiment filter' is ingesteld.

## `onlyNew` (type: `boolean`):

Sla vermeldingen over die in een eerdere run al zijn geleverd (bewaard in een key-value store, rolling window van 5000 artikelen). Bedoeld voor geplande runs. Bij een losse ad-hoc aanroep zonder eerdere runs levert dit dezelfde resultaatset als normaal.

## `publishedAfter` (type: `string`):

Alleen vermeldingen gepubliceerd op of na deze datum (ISO 8601, bv. 2026-09-21).

## `sentimentFilter` (type: `string`):

Alleen vermeldingen met dit sentiment. Zet 'Sentiment analyseren' automatisch aan.

## Actor input object example

```json
{
  "language": "en-US",
  "maxResultsPerTerm": 50,
  "includeSentiment": true,
  "onlyNew": false
}
```

# Actor output Schema

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

Results stored in the default dataset.

# 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("codeclouds/brand-mention-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("codeclouds/brand-mention-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 '{}' |
apify call codeclouds/brand-mention-news-monitor --silent --output-dataset

```

## MCP server setup

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