Google News Scraper | $1.49 / 1k | avatar

Google News Scraper | $1.49 / 1k |

Pricing

from $1.49 / 1,000 results

Go to Apify Store
Google News Scraper | $1.49 / 1k |

Google News Scraper | $1.49 / 1k |

Turn Google News into structured rows. Search any keyword, topic or publication and get headline, publisher, publish time, snippet and link. Metadata only, never article text. Export to CSV, JSON or Excel.

Pricing

from $1.49 / 1,000 results

Rating

0.0

(0)

Developer

Raffy

Raffy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

What does Google News Scraper do?

Get a clean, deduplicated table of news headlines for any keyword, topic or publication — headline, publisher, publication time, snippet and link, one row per article. PR and comms teams use it to catch brand mentions the day they appear, analysts use it to measure share of coverage, and AI engineers use it to keep an agent supplied with fresh, structured news.

Use it to scrape Google News headlines by search term, by topic section (Technology, Business, Health...), by publication, or from any Google News URL you copied from your browser. It works as a Google News API alternative: no key to request, no quota to negotiate, no browser to drive. One feed request returns up to about 100 articles, so a run finishes in seconds and costs a fraction of a cent.

Try it: press Start with the prefilled input. Twenty articles land in under 10 seconds.

⚠️ Read this before you buy: only the headline, snippet, link and metadata that Google News itself publishes in its feed are returned — never the body text of an article. If you need full article text, follow the link yourself under the publisher's own terms.

Use cases: brand monitoring, market research, news datasets for AI agents

  • 📣 PR and comms teams monitoring a brand. Schedule an hourly run on your company, your executives and your competitors, and push every new headline into Slack or a spreadsheet so nobody finds out about coverage from a customer.
  • 📊 Market researchers and analysts. Pull the last few weeks of coverage for an industry or a company, then count articles per publisher, per week or per country to show where a story is actually landing.
  • 🤖 AI engineers building a news dataset for an agent or RAG pipeline. Hand an LLM a fresh, deduplicated list of headlines with publisher names and ISO timestamps instead of raw HTML — every row carries a stable guid so a scheduled run only adds what is new.
  • 💹 Investment and risk teams watching events. Track a ticker, a commodity or a regulator across country editions and flag the first mention of a keyword such as a recall, a lawsuit or a leadership change.
  • ✍️ Editorial and SEO teams planning content. Watch a topic section or a single publication to see what is being covered right now, and which angles are saturated before you commission a piece.
  • 🏢 Agencies reporting to clients. Run one job per client domain or brand name, export to Excel, and drop the coverage list straight into a monthly report.

The Actor does not log in, does not read paywalled content and does not download article pages.

What data you get

One row per article. The Articles view shows the first block; the All fields view adds feed context and identifiers.

The article itself

FieldTypeWhat it tells you
titlestringHeadline exactly as Google News publishes it. Google usually appends - Publisher.
sourcestringPublisher name, e.g. Reuters.
publishedAtstringPublication time in ISO 8601 UTC, converted from the feed's RFC-822 pubDate.
linkstringGoogle News article link. Opening it forwards to the publisher's article. Same value as url.
snippetstringPlain-text description from the feed. Never article body text.
imageUrlstringImage URL when the feed carries one. Search and topic feeds usually carry none.

Identifiers and publisher

FieldTypeWhat it tells you
guidstringGoogle News item identifier; stable across runs, so it is the right key for deduplication.
sourceUrlstringPublisher home page, from the feed's source element.
publisherUrlstringArticle URL on the publisher's own site. Only filled when Resolve publisher URL is on and the link uses Google's older, decodable format (see Limitations).

Feed context and run metadata

FieldTypeWhat it tells you
languagestringTwo-letter language code of the feed edition, e.g. en.
countrystringTwo-letter country code of the feed edition, e.g. US.
feedTitlestringTitle of the feed the row came from, e.g. "apify" - Google News.
feedUrlstringURL of the feed the row came from, so you can tell rows apart when one run scrapes several feeds.
positioninteger1-based position of the article inside its feed, in Google's own order.
urlstringThe article's Google News link; present on every row, including error rows.
statusstringok, not_found or error (see below).
errorstringReason when status is not ok.
scrapedAtstringISO 8601 time of extraction.

A missing optional field is honest: it means Google News did not publish that value in the feed, never a guess.

Result status (tri-state output)

statusMeaningBilled?
okThe article was found and extracted.Yes
not_foundGoogle News answered with a valid feed that contains no articles (a search nothing matches, or a topic with no current items).No
errorThe feed could not be read after retries (network error, HTTP error, or an unexpected response). error says why.No

Output

Export the dataset as JSON, CSV, Excel, XML or HTML, or read it from the API. This is a real row from the default run (2026-09-08), followed by a free not_found row:

[
{
"url": "https://news.google.com/rss/articles/CBMigAFBVV95cUxPZkh6d3hkX2RaWUpjSGtmeEJjS0NLTXNzWkk4eF9CQWJxYTRFVGFhY2VlLVJIRFRaeE5nWnlVZ0trVy1NNVpENkRZUWxVRUoxRkFMR2FaLWZMeV9aVTlYZGtqaVJZcjBjd2xZNjV5dG12dERmWnhDS3E1dldhNm9IdA?oc=5",
"status": "ok",
"scrapedAt": "2026-09-08T11:42:49.977Z",
"title": "Early Data Indicates an A.I.-Generated Drug Could Slow Aging - The New York Times",
"link": "https://news.google.com/rss/articles/CBMigAFBVV95cUxPZkh6d3hkX2RaWUpjSGtmeEJjS0NLTXNzWkk4eF9CQWJxYTRFVGFhY2VlLVJIRFRaeE5nWnlVZ0trVy1NNVpENkRZUWxVRUoxRkFMR2FaLWZMeV9aVTlYZGtqaVJZcjBjd2xZNjV5dG12dERmWnhDS3E1dldhNm9IdA?oc=5",
"source": "The New York Times",
"sourceUrl": "https://www.nytimes.com",
"publishedAt": "2026-09-07T09:04:03.000Z",
"snippet": "Early Data Indicates an A.I.-Generated Drug Could Slow Aging The New York Times",
"guid": "CBMigAFBVV95cUxPZkh6d3hkX2RaWUpjSGtmeEJjS0NLTXNzWkk4eF9CQWJxYTRFVGFhY2VlLVJIRFRaeE5nWnlVZ0trVy1NNVpENkRZUWxVRUoxRkFMR2FaLWZMeV9aVTlYZGtqaVJZcjBjd2xZNjV5dG12dERmWnhDS3E1dldhNm9IdA",
"language": "en",
"country": "US",
"feedTitle": "\"artificial intelligence\" - Google News",
"feedUrl": "https://news.google.com/rss/search?q=artificial%20intelligence&hl=en-US&gl=US&ceid=US:en",
"position": 1
},
{
"url": "https://news.google.com/rss/search?q=zzqx9v7wkjmqp4rtl2bnvx8yq&hl=en-US&gl=US&ceid=US:en",
"status": "not_found",
"error": "No results on this page",
"scrapedAt": "2026-09-08T11:42:50.104Z"
}
]

The Articles dataset view shows title, source, publishedAt, link, snippet, status, error and scrapedAt; the All fields view shows every column.

How to scrape Google News headlines by keyword, topic or publication

  1. Open the Actor in Apify Console and click Try for free.
  2. Choose what to scrape: paste a Google News URL into Google News URLs or RSS feeds, type a Search query, or pick a Topic section. Precedence is URLs, then query, then topic.
  3. Optionally set Language and Country edition (defaults en / US) and Maximum results (default 20).
  4. Click Start. The default input takes a few seconds and rows appear in the dataset in real time.
  5. Open the Output tab or Export the dataset as JSON, CSV, Excel, XML or HTML.

To automate it, use the API tab (Node.js, Python, curl examples) or add a Schedule and run it hourly.

Input

Every field, its default and when you would change it:

FieldTypeDefaultWhen to change it
startUrlsarray of stringsone sample search feedUse it when you already have a Google News search, topic, publication or /rss/ URL — browser URLs are rewritten to the matching feed automatically. Pass several to cover several beats in one run.
querystringThe simplest way to start: type a keyword or phrase instead of a URL. Google News operators such as when:7d, site:reuters.com or intitle: work here. Used only when startUrls is empty.
topicstringPick a headline section (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH) when you want general coverage rather than a search. Used only when startUrls and query are both empty.
languagestringenChange it to scrape a non-English edition (de, es, fr, pt, ja, ...). Applies to query and topic; a pasted Start URL keeps its own edition.
countrystringUSChange it to scrape another country edition (GB, DE, IN, BR, ...), or run the same query across several countries to compare coverage.
maxItemsinteger20Raise it for production runs. One feed holds roughly 100 articles, so go above 100 only when you pass several feeds. It is also your hard cap on spend.
resolvePublisherUrlbooleanfalseTurn it on when you want the publisher's own URL where it can be decoded locally. It costs no extra request, but it only works for Google's older link format (see Limitations).
proxyConfigurationobjectApify Proxy offLeave it off. Enable Apify Proxy (datacenter group) only if a run starts producing error rows; residential proxies are not needed.

Example input (this is the whole thing):

{
"startUrls": ["https://news.google.com/rss/search?q=artificial%20intelligence&hl=en-US&gl=US&ceid=US:en"],
"language": "en",
"country": "US",
"maxItems": 20,
"resolvePublisherUrl": false
}

Search a keyword instead of a URL:

{ "query": "electric vehicles when:7d", "language": "en", "country": "GB", "maxItems": 50 }

Scrape a topic section:

{ "topic": "TECHNOLOGY", "language": "de", "country": "DE", "maxItems": 100 }

How much does it cost to scrape Google News?

This Actor uses pay-per-event pricing. The table below is the whole price list:

EventCharged whenPrice
Actor startOnce per run, by the Apify platform (one event per GB of memory; the default is 1 GB).$0.005 per run
ArticleOne article with status: ok is saved to the dataset.$0.00149 per article
  • 1,000 articles cost about $1.50 ($0.005 start + 1,000 × $0.00149).
  • Rows with status not_found or error are never charged — a query that matches nothing costs you the start fee only.
  • The Actor stops gracefully when your run's maximum charge is reached. Cap spending with Maximum results and with the run's Max total charge option.
  • The free Apify plan's $5 of monthly credit covers about 3,350 articles in a single run.

Speed and request budget

Measured on the default input (one search feed, maxItems: 20), 1 GB memory, no proxy, across three consecutive staging runs:

MetricValue
HTTP requests1
Articles parsed from that request100
Rows saved (maxItems cap)20
Run duration2.3 – 3.8 s

One request covers a whole feed, so the request budget is roughly 0.01 requests per article — the reason this Actor is priced below the category median.

How it compares

This Actor is the cheap, fast, headline-level option. Its strengths are breadth and cost: one request per feed, up to ~100 articles from it, a stable guid for deduplication, every language and country edition Google News publishes, and a tri-state status so a scheduled job can tell "nothing matched" apart from "the fetch failed".

It is not for you if you need full article text, paywalled content, historical archives going back years, or per-article sentiment and entity extraction — none of that is in the feed, and this Actor deliberately does not fetch publisher pages to get it. It is also not a general web crawler: the input is a Google News query, topic or URL, not an arbitrary site. Pair it with a separate article-extraction Actor if you need bodies, and use the link column as the hand-off.

Integrations, API and AI agents

Results export to CSV, JSON, Excel, XML and HTML, and can be pushed to Google Sheets, Airtable, Slack or a CRM through Apify integrations and webhooks (n8n, Make and Zapier included). Add a Schedule to run it hourly and deduplicate downstream on guid.

The Actor can be called from the Apify API (Node.js, Python or curl — see the API tab), from the Apify MCP server, or from any AI agent: inputs are plain strings and every row is self-describing thanks to status and error, so an agent never has to guess why a run returned nothing.

FAQ

Do I get the full article text? No, and that is deliberate. Article bodies are copyrighted by the publishers. You get the headline, snippet, publisher, timestamp and link; follow the link yourself if you need more, under the publisher's own terms.

Is it legal to scrape Google News? Reading a publicly available RSS feed is generally lawful, but you are responsible for how you use the output. Google's feed terms restrict redistribution of the feed itself, and headlines and snippets remain the publishers' content. Read the legal notice below, and consult your lawyers if you are unsure.

Why is link a news.google.com URL and not the publisher's URL? Google publishes redirect links in its feeds and encrypts the destination inside the article token. The link opens the article in any browser. See Limitations for what resolvePublisherUrl can and cannot do.

How do I get more than 100 articles on a topic? Run several narrower queries (by keyword, by site:, or by a when:/after:/before: time window), or scrape several country editions, and pass them as multiple Start URLs in one run — you pay the start fee once.

Can I use this Actor from an AI agent or MCP client? Yes. Every row is self-describing (status plus error), inputs are plain strings, and results can be fetched via the dataset API or the Apify MCP server.

Which languages and countries work? Any edition Google News publishes. Set language to a two-letter code (en, de, es, fr, pt, ja, ...) and country to a two-letter code (US, GB, DE, IN, BR, ...). A pasted Start URL keeps the edition it already carries.

Why did I get fewer rows than maxItems? The feed contained fewer articles, or the run hit your Max total charge limit. Check the run log for "Stopping gracefully".

How do I run brand monitoring on a schedule? Add a Schedule in Apify Console with your brand names as the query, keep maxItems at what one feed returns, deduplicate on guid, and send new rows to Slack or a sheet with a webhook.

Limitations

  • No full article text. By design the Actor stores only what the feed publishes: headline, snippet, link and metadata. Article bodies are the publishers' copyrighted content and are never fetched or stored.
  • Google News caps each feed at roughly 100 articles, and there is no pagination. To get more, split the work: several narrower queries, several topic sections, several country editions, or a when: operator per time window. Setting maxItems above ~100 with one feed will simply return what the feed contains.
  • Links are Google News redirect URLs. Google encrypts the destination inside the article token, so the publisher URL is not present in the feed. resolvePublisherUrl decodes it locally for Google's older link format only; for the format Google issues today it stays empty and link remains the Google News URL, which still resolves to the article in a browser. This Actor deliberately does not spend an extra request per article trying to unwrap the redirect.
  • imageUrl is usually empty for search and topic feeds, because Google does not include media items in them.
  • snippet often repeats the headline and publisher in search and topic feeds; on "full coverage" items it lists the related headlines instead. That is what Google puts in the feed's description.
  • No historical archive. A feed returns what Google News currently ranks for that query or topic. For older coverage use search operators such as after:2026-01-01 before:2026-02-01 in the query.
  • Google News may change its feed format, in which case rows come back as error and the Actor is updated quickly (report it in the Issues tab).

Troubleshooting

SymptomFix
One not_found row and nothing elseThe query matched no articles. Broaden it, drop a when: operator, or check the language/country edition.
Fewer rows than maxItemsThe feed contained fewer articles (see the ~100 cap), or the run hit your Max total charge. Look for "Stopping gracefully" in the log.
error rows mentioning HTTP failuresRare from Apify's datacenter IPs. Re-run, or enable Apify Proxy (datacenter group) in Proxy configuration.
Duplicate articles across scheduled runsDeduplicate on guid, which is stable for a given article.
A pasted browser URL returns nothingMake sure it is a Google News URL (news.google.com). The Actor rewrites /search, /topics/... and /publications/... to their feeds automatically.

Privacy and responsible use

  • Only publicly available Google News feed data is read; no login, no account, no access controls are circumvented.
  • Only headline, snippet, link and metadata are stored. Article bodies are never fetched or stored.
  • Journalist and author names may appear incidentally inside a headline or snippet, exactly as Google News publishes them. No contact details, no e-mail addresses and no phone numbers are collected or added.
  • Publisher and headline data is business information, not personal profiling data; use it for lawful purposes such as monitoring, research and analytics.
  • You are responsible for how you use, store and republish the output.

This Actor reads only data that Google News publishes publicly in its RSS feeds; it does not extract private user data such as e-mail addresses, phone numbers, gender or precise location, it does not log in, and it does not circumvent access controls. It stores no article body text. However, your results could still contain personal data, for example a journalist's name inside a headline. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult your lawyers. You are responsible for complying with Google's terms of service, with the publishers' terms, and with applicable law when using the extracted data.

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Google LLC or any publisher whose articles appear in the output. All trademarks belong to their respective owners.