News Monitoring: Brand and Topic Watch From Google News
Turn Google News into a monitoring feed. Poll one query per watchlist term on a schedule, dedupe what you have already seen, and deliver only the new articles as alerts, a digest, or rows in a database.
When to use this skill
- The user wants news monitoring or media monitoring for a brand, product, executive, or competitor.
- They want brand mentions from news sources as a feed, digest, or alert.
- They want to track a market, industry, regulation, or crisis as it develops.
- They ask for "google news tracking", "google news monitoring", or "news alerts by API".
Not for: one-off bulk exports of a single search (use the google-news-api skill), full article text (the feed carries title, snippet, link, source, and date), or social media mentions (news outlets only).
What each poll returns (one dataset item per page)
news_results: articles with position, title, link, source, snippet, date (relative, such as "2 hours ago")
search_metadata: total_results, news_count, pages_processed, pagination_limit_reached
search_information: query_displayed, news_results_state
search_parameters, search_timestamp, page_number
link is the dedupe key; date plus search_timestamp is the freshness signal.
Prerequisites
The Actor
Run it with the Apify CLI
One watchlist poll, bounded to one page with duplicate coverage collapsed:
apify actors call "johnvc/GoogleNewsAPI" -i '{"q":"Acme Robotics","filter":"1","max_pages":1}' \
--json \
--user-agent apify-awesome-skills/apify-news-monitoring \
2>/dev/null
Read a run's items later, for example from a scheduled run:
apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-news-monitoring 2>/dev/null
Every call carries the three flags this repo expects: --json (or --format json), --user-agent apify-awesome-skills/apify-news-monitoring, and 2>/dev/null.
Run it from Claude or another AI agent (MCP)
The Actor is MCP-ready. Add the hosted server URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI
Then ask, for example: "Check Google News for new coverage of our company since yesterday and summarize anything negative." MCP setup docs: https://docs.apify.com/platform/integrations/mcp
Workflow
- Define the watchlist. One query per term: brand names, product names, executives, competitors, or topics. Quote exact phrases inside
q for precise brand matching. Each term is its own Actor run.
- Bound each poll. Keep
max_pages at 1 or 2 per term; new coverage almost always surfaces on page one. Set filter: "1" so one story does not arrive once per outlet.
- Localize per market. Use
gl, hl (base codes), and google_domain for non-US watch terms; add location for regional brands.
- Estimate cost per poll and per month, then confirm with the user. See
references/gotchas.md.
- Poll, then post-process: flatten
news_results, dedupe against your seen-links store on link, and convert relative date strings ("2 hours ago") to timestamps using search_timestamp as the reference.
- Deliver only what is new: an alert per article, a daily digest grouped by term, or rows appended to a database. For recurring polls, wrap the same input in an Apify Schedule or a cron job.
Inputs
q (string, required): one watchlist term per run
filter (enum string "0" or "1"): collapse duplicate coverage, recommended "1" for monitoring
gl, hl, google_domain, location: per-market localization
safe (enum: active or off), nfpr (enum string): content and autocorrect controls
max_pages (integer, default 1): the per-poll cost bound
Cost
Each poll costs a per-run setup fee plus a per-page fee: a one-page poll is about three cents. A daily one-page poll on one term is roughly a dollar a month; a five-term watchlist polled daily is roughly four to five dollars a month. Estimate with the live prices in references/gotchas.md before scheduling.
Honest limits
- This is a polled feed, not a push API: freshness is your poll interval.
date is a relative string; the workflow converts it client-side. There is no server-side date-range filter, so dedupe by link does the real work.
- No article body or author; fetch full text downstream from
link when an alert needs context.
- One query per run: a watchlist of N terms is N runs per poll, each with its own setup fee.
- Some polls legitimately return nothing new; quiet brands have quiet news cycles.
Troubleshooting
- Same story arrives repeatedly: dedupe on
link across polls; within a poll, set filter: "1".
- Too much noise for a generic brand name: quote the exact phrase in
q and add a qualifier, such as "Acme Robotics" funding.
- Nothing new for days: normal for narrow terms; widen the term or slow the poll instead of raising
max_pages.
- Missed a story you saw on Google News: inventory and ranking vary by
gl and google_domain; align them with the market where the story ran.
See references/gotchas.md for cost guardrails and error recovery, and references/actor-index.md for the Actor routing table.
Related monitoring Actors
1---2name: apify-news-monitoring3description: Monitor news coverage of a brand, competitor, or topic with the Apify Google News API Actor (johnvc/GoogleNewsAPI). Poll a watchlist of queries on a schedule and get fresh articles with title, link, source, snippet, and relative date, ready to dedupe by link and turn into alerts, digests, or a mentions feed. Use when the user wants news monitoring or media monitoring, brand mentions from news, competitor news tracking, google news tracking or google news monitoring, crisis or reputation watch, or a recurring news digest for a market, industry, or portfolio. Pay-per-page billing, MCP-ready for Claude and other AI agents.4license: MIT5---67# News Monitoring: Brand and Topic Watch From Google News89Turn Google News into a monitoring feed. Poll one query per watchlist term on a schedule, dedupe what you have already seen, and deliver only the new articles as alerts, a digest, or rows in a database.1011## When to use this skill1213- The user wants news monitoring or media monitoring for a brand, product, executive, or competitor.14- They want brand mentions from news sources as a feed, digest, or alert.15- They want to track a market, industry, regulation, or crisis as it develops.16- They ask for "google news tracking", "google news monitoring", or "news alerts by API".1718Not for: one-off bulk exports of a single search (use the google-news-api skill), full article text (the feed carries title, snippet, link, source, and date), or social media mentions (news outlets only).1920## What each poll returns (one dataset item per page)2122- `news_results`: articles with `position`, `title`, `link`, `source`, `snippet`, `date` (relative, such as "2 hours ago")23- `search_metadata`: `total_results`, `news_count`, `pages_processed`, `pagination_limit_reached`24- `search_information`: `query_displayed`, `news_results_state`25- `search_parameters`, `search_timestamp`, `page_number`2627`link` is the dedupe key; `date` plus `search_timestamp` is the freshness signal.2829## Prerequisites3031- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).32- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).3334## The Actor3536- Store page: https://apify.com/johnvc/GoogleNewsAPI?fpr=9n7kx3&fp_sid=skillrepo37- Actor ID: `johnvc/GoogleNewsAPI`38- Pricing: pay per page of results processed, plus a small per-run setup fee (see `references/gotchas.md`).3940## Run it with the Apify CLI4142One watchlist poll, bounded to one page with duplicate coverage collapsed:4344```bash45apify actors call "johnvc/GoogleNewsAPI" -i '{"q":"Acme Robotics","filter":"1","max_pages":1}' \46 --json \47 --user-agent apify-awesome-skills/apify-news-monitoring \48 2>/dev/null49```5051Read a run's items later, for example from a scheduled run:5253```bash54apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-news-monitoring 2>/dev/null55```5657Every call carries the three flags this repo expects: `--json` (or `--format json`), `--user-agent apify-awesome-skills/apify-news-monitoring`, and `2>/dev/null`.5859## Run it from Claude or another AI agent (MCP)6061The Actor is MCP-ready. Add the hosted server URL:6263`https://mcp.apify.com/?tools=actors,docs,johnvc/GoogleNewsAPI`6465Then ask, for example: "Check Google News for new coverage of our company since yesterday and summarize anything negative." MCP setup docs: https://docs.apify.com/platform/integrations/mcp6667## Workflow68691. Define the watchlist. One query per term: brand names, product names, executives, competitors, or topics. Quote exact phrases inside `q` for precise brand matching. Each term is its own Actor run.702. Bound each poll. Keep `max_pages` at 1 or 2 per term; new coverage almost always surfaces on page one. Set `filter: "1"` so one story does not arrive once per outlet.713. Localize per market. Use `gl`, `hl` (base codes), and `google_domain` for non-US watch terms; add `location` for regional brands.724. Estimate cost per poll and per month, then confirm with the user. See `references/gotchas.md`.735. Poll, then post-process: flatten `news_results`, dedupe against your seen-links store on `link`, and convert relative `date` strings ("2 hours ago") to timestamps using `search_timestamp` as the reference.746. Deliver only what is new: an alert per article, a daily digest grouped by term, or rows appended to a database. For recurring polls, wrap the same input in an Apify Schedule or a cron job.7576## Inputs7778- `q` (string, required): one watchlist term per run79- `filter` (enum string `"0"` or `"1"`): collapse duplicate coverage, recommended `"1"` for monitoring80- `gl`, `hl`, `google_domain`, `location`: per-market localization81- `safe` (enum: `active` or `off`), `nfpr` (enum string): content and autocorrect controls82- `max_pages` (integer, default 1): the per-poll cost bound8384## Cost8586Each poll costs a per-run setup fee plus a per-page fee: a one-page poll is about three cents. A daily one-page poll on one term is roughly a dollar a month; a five-term watchlist polled daily is roughly four to five dollars a month. Estimate with the live prices in `references/gotchas.md` before scheduling.8788## Honest limits8990- This is a polled feed, not a push API: freshness is your poll interval.91- `date` is a relative string; the workflow converts it client-side. There is no server-side date-range filter, so dedupe by `link` does the real work.92- No article body or author; fetch full text downstream from `link` when an alert needs context.93- One query per run: a watchlist of N terms is N runs per poll, each with its own setup fee.94- Some polls legitimately return nothing new; quiet brands have quiet news cycles.9596## Troubleshooting9798- Same story arrives repeatedly: dedupe on `link` across polls; within a poll, set `filter: "1"`.99- Too much noise for a generic brand name: quote the exact phrase in `q` and add a qualifier, such as "Acme Robotics" funding.100- Nothing new for days: normal for narrow terms; widen the term or slow the poll instead of raising `max_pages`.101- Missed a story you saw on Google News: inventory and ranking vary by `gl` and `google_domain`; align them with the market where the story ran.102103See `references/gotchas.md` for cost guardrails and error recovery, and `references/actor-index.md` for the Actor routing table.104105## Related monitoring Actors106107- Google Forums Search API, community chatter about the same brand: https://apify.com/johnvc/google-forums-search-api?fpr=9n7kx3&fp_sid=skillrepo108- Google AI Overview API, how AI answers describe the brand: https://apify.com/johnvc/Google-AI-Overview-API?fpr=9n7kx3&fp_sid=skillrepo109- Google Finance API, market data for public companies on the watchlist: https://apify.com/johnvc/google-finance-api?fpr=9n7kx3&fp_sid=skillrepo