John Cole

Jul 12, 2026 • 4 min read

How to Monitor Brand Mentions in Google News with One API

Track every article about your brand or a competitor in Google News and get title, source, link, and date back as clean JSON.

The first time a competitor got a wave of press and I found out days late from a colleague, I decided I never wanted to be the last to know again. Setting up a real media monitor sounded like a project though: scrapers, proxies, a database, a cron job. It turned out I needed one API call.

The Google News API searches Google News by keyword and returns every matching article as structured JSON, so brand monitoring becomes a query instead of an engineering effort.

What it returns

Each run gives you one clean row per article, with these fields:

  • Title of the article

  • Source or publisher, like BBC, Reuters, or Forbes

  • Direct link to the full story

  • Snippet, a short excerpt

  • Publication date, relative like "2 hours ago"

  • Position in the results

[[

IMG1]]

Run it in three steps

Open the Actor page, click Try for free, and enter your brand name as the query. Add a location or language if you only care about one market. Run it, and the matching articles land in the dataset as JSON, CSV, or Excel. To monitor several names at once, save one task per keyword and point a single schedule at all of them.

Use it as a REST API

Once you know the shape of the data, wire it into your own code. The Apify API and the apify-client package for Python and Node.js run the Actor and pull the dataset. A minimal call looks like this:

POST /v2/acts/johnvc~GoogleNewsAPI/runs
{ "q": "your brand name", "max_pages": 2 }

Every article comes back as a flat JSON row, so it drops straight into a spreadsheet, a database, or a BI dashboard with no extra parsing.

Wire it into Claude with MCP

The Actor runs over the hosted Apify MCP server, so AI clients like Claude and Cursor can call it as a tool. Ask "any new articles mentioning my company in the last day, with sources and links?" and the agent runs the search and answers with live results. No scraping code, no glue.

[[

IMG2]]

What people build with it

Beyond a PR alert, teams use it to measure share of coverage over time, watch competitor announcements, feed live headlines into an LLM for grounded answers, and archive news for later analysis. There are six runnable examples on the project, including the brand mention monitor for PR and a single-company headline tracker. Browse them all on the examples page or the Google News API project.

FAQ About Scraping Google News

How fresh is the data this Google News scraper returns?

It returns what Google News is showing right now for your query, including stories published minutes ago, each with a relative date like "2 hours ago". Google News groups articles by recency, so a scheduled run every few hours catches breaking coverage as it appears. Deep pagination is naturally limited, so for wide coverage run several targeted keywords rather than paging endlessly through one.

How do I call this Google News scraper as a REST API?

Send a POST to the Actor's run endpoint with a JSON body containing your query and page count, then fetch the resulting dataset. The apify-client package for Python and Node.js wraps this in a couple of lines, and results come back as flat JSON rows, or as CSV or Excel from the console. Pricing is pay as you go: a small setup fee plus about a cent per page, with no subscription.

Can I use this Google News scraper from Claude or another AI agent with MCP?

Yes. Add it through the hosted Apify MCP server and it shows up as a named tool inside Claude, Cursor, and other MCP clients. An agent can then pull live headlines on demand just by being asked, which makes it a clean way to ground AI answers in current news with no code.

Have a question or hit a snag? File an issue on the Actor and I usually reply within a day.

Join John on Peerlist!

Join amazing folks like John and thousands of other builders on Peerlist.

peerlist.io/

It’s available... this username is available! 😃

Claim your username before it's too late!

This username is already taken, you’re a little late.😐

0

0

0