How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
apifyin Search queries. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Google News Scraper searches Google News by keyword, topic or Top stories and returns one row per article: title, publisher, publish date and the real article URL on the publisher's site, not the Google News redirect. It reads the public Google News RSS feeds, so you need no Google login and no API key. A run with the default input (apify, 20 articles) usually takes 5–20 seconds and costs about $0.075.
- You add keywords, topics or both, and choose a language and a country (a Google News "edition").
- The Actor reads the matching Google News RSS feeds: search, topic sections or the Top stories front page.
- For each article it decodes the Google News link (
news.google.com/rss/articles/…) into the original publisher URL. - It saves one Dataset row per article. Topic and Top stories rows also list other outlets that cover the same story (
relatedArticles). - Google returns at most 100 articles per feed. When you ask for more, the Actor searches one day at a time (Google's
after:andbefore:operators) and removes duplicates.
Good for
- Daily or hourly news monitoring for brands, people, companies or topics.
- Media lists for PR: who wrote about a subject, when, and the link to the story.
- News in many languages:
defor Germany,pt-BRfor Brazil,jafor Japan,zh-TWfor Taiwan. - A clean news list for an AI agent, a spreadsheet or a BI tool.
Not a good fit
- No full article text, images or summaries. Google News RSS gives only the title and publisher. For article text, send
articleUrlto an article extractor. - Up to 1,000 articles per query, and up to 20 queries and topics per run. Our largest test run saved 5,000 articles (5 queries × 1,000) in about 34 minutes. A run stops after about 50 minutes and keeps what it saved (
RUN_SUMMARY.status: "CAPPED"), so split bigger jobs into several runs. Topics and Top stories read one feed each, so they return only what Google shows in that section (at most about 100 articles). - Google decides which articles it shows. Two runs a few minutes apart can return a slightly different set or order.
- Google News RSS is for personal, non-commercial use under Google's terms. You are responsible for how you use the data.
Who uses it
PR teams
Build media lists: who wrote about a topic and when.
Brand managers
Watch news about your brand or competitors every day.
AI builders
Give an AI agent fresh news links for a topic.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.0025 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| News article | $0.0036 (from $0.0009 on paid Apify plans) | One complete or partial article row saved in the Dataset, with the decoded publisher URL included. Not-found and error rows are free. |
Examples
- One result: about $0.0061.
- 1,000 results: about $3.60.
- Every day 100 results, for 30 days: about $10.88 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 1,300 results.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Is there an official Google News API?
No. Google has no public Google News API. This tool reads the public RSS feeds.
Do I get the article text?
No. Google News RSS has no snippet. Send the article link to an article text tool.
Can I get more than 100 articles for a keyword?
Yes, up to 1,000. The tool searches one day at a time and removes duplicates.
Why are the links not news.google.com links?
The tool decodes Google's redirect links into the publisher's own URL.
Do I need a Google account or API key?
No. The Actor reads public Google News RSS feeds without login, cookies or keys.
Why are the titles shorter than in Google News?
Google adds " - Publisher" to each title in the feed. The Actor removes it and puts the publisher into sourceName.
Why is the order or set of articles different between runs?
Google decides which articles each feed shows, and this changes during the day. Rows keep Google's order in position. Use articleId to compare runs.
Details
Step by step on Apify
- Open the Input tab.
- In Search queries (
queries), keepapifyor add your own keyword, for exampleelectric cars. - Keep Language
en, CountryUSand Max articles per query or topic20, or change them. - Click Start.
- Open the Output tab. The Articles table shows
title,sourceName,publishedAtandarticleUrl.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Brand and competitor monitoring | queries + since: "24h" on a schedule | Article | query, title, sourceName, articleUrl, publishedAt | Slack, email or Google Sheets through Apify integrations |
| PR media list | queries like "your company" + since: "30d" | Article | sourceName, sourceUrl, articleUrl | CSV or Excel export |
| Country news overview | topics: ["BUSINESS"], country: "DE", language: "de" | Article with related coverage | title, sourceName, relatedArticles | Dashboard or newsletter |
| News context for an AI agent | queries + small maxArticles | Article | title, articleUrl, publishedAt | Apify MCP server |
Tips for better results
- Use the published-since filter for daily or hourly checks.
- Pick a country and language to get local news editions.
- Use the article ID to compare results between runs.
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"status": "complete",
"statusReason": null,
"errorCode": null,
"feedType": "topic",
"query": null,
"topic": "BUSINESS",
"position": 1,
"title": "Waren bei Galeria in Regensburg plötzlich hinter Absperrband – Ein Hersteller spricht Klartext",
"sourceName": "Mittelbayerische Zeitung",
"sourceUrl": "https://www.mittelbayerische.de/",
"articleUrl": "https://www.mittelbayerische.de/lokales/stadt-regensburg/waren-bei-galeria-in-regensburg-ploetzlich-hinter-absperrband-ein-hersteller-spricht-klartext-22206179",
"googleNewsUrl": "https://news.google.com/rss/articles/CBMi8AFBVV95cUxPWnVHaWd…?oc=5",
"articleId": "CBMi8AFBVV95cUxPWnVHaWd…",
"publishedAt": "2026-10-14T17:01:36.000Z",
"relatedArticles": [
{
"title": "Flatterband im Kaufhaus: Was hinter den gesperrten Galeria-Regalen steckt",
"sourceName": "WDR",
"googleNewsUrl": "https://news.google.com/rss/articles/CBMifkFVX3lx…?oc=5"
}
],
"language": "de",
"country": "DE",
"feedUrl": "https://news.google.com/rss/headlines/section/topic/BUSINESS?hl=de&gl=DE&ceid=DE%3Ade",
"fetchedAt": "2026-10-15T04:22:36.577Z"
}Use it from code
Actor ID: cliqtomedia/google-news-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/google-news-scraper").call(run_input={
"queries": [
"apify"
],
"country": "US"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~google-news-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["apify"], "country": "US"}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/google-news-scraper")
result = tool.invoke({"run_input": {"queries": ["apify"], "country": "US"}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (19)
| Field | Type | Meaning |
|---|---|---|
status | string | Row result: complete, partial (article found but the publisher URL could not be decoded), not_found (no articles for this query or topic) or error. Only complete and partial rows are charged. |
statusReason | string | Plain-English reason for partial, not_found or error rows; null when complete. |
errorCode | string | Machine code for error rows, e.g. SOURCE_BLOCKED, RATE_LIMITED, DEADLINE_REACHED; null otherwise. |
feedType | string | Where the row came from: a search query, a topic section or Top stories. |
query | string | Your search query as given; null for topic rows. |
topic | string | Topic section (BUSINESS, TECHNOLOGY…); null for search rows. |
position | integer | 1-based order of the article within its query or topic (newest first for deep search). |
title | string | Article headline, without the publisher suffix Google adds. |
sourceName | string | Publisher name, e.g. Reuters. |
sourceUrl | string | Publisher home page as Google News lists it, e.g. https://www.reuters.com. |
articleUrl | string | Original article URL on the publisher's site, decoded from the Google News link. null when resolveSourceUrl is off (the row stays complete) or decoding failed (the row is partial). |
googleNewsUrl | string | Google News link to the article (news.google.com/rss/articles/…). |
articleId | string | Google News article ID. |
publishedAt | string | Publish time, ISO 8601 UTC, as Google News reports it. |
relatedArticles | array | Other outlets covering the same story (topic and Top stories rows): title, sourceName, googleNewsUrl. Empty for most search rows. |
language | string | Edition language code used for this run, e.g. en. |
country | string | Edition country code used for this run, e.g. US. |
feedUrl | string | The Google News RSS feed this row came from (provenance). |
fetchedAt | string | When the Actor fetched this row, ISO 8601 UTC. |
Input settings (8)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Search queries | queries | array | ["apify"] |
| Topics | topics | array | |
| Country | country | string | "US" |
| Language | language | string | "en" |
| Max articles per query or topic | maxArticles | integer | 20 |
| Published since | since | string | |
| Decode real article URLs | resolveSourceUrl | boolean | true |
| Proxy | proxyConfiguration | object | {"useApifyProxy": true} |
Use cases with this tool
Each guide shows all the steps and the other tools.