Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Google News Scraper icon

Google News Scraper

Track Google News by keyword or topic. Get real publisher URLs, source, date and snippet. $3.00 per 1,000 articles.

5 from 1 review on Apify 454 runs on Apify $0.003 per article ($3 / 1,000)
Run this in the cloudRun on Apify →

News & Finance Data

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust query, topic, freshness (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.003 per article = $3 per 1,000

You are charged forWhenPrice
Article returnedPer article.$0.003

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-11, and they are what you are actually charged.

Inputs

FieldWhat it doesType
queryKeywords to search Google News for (e.g. "electric vehicles", or advanced: "tesla OR rivian site:reuters.com"). Leave empty if using a Topic instead.string
topicUse a Google News topic feed instead of a search query.string
freshnessOnly return articles newer than this (applied to query searches).string
languageInterface/article language code, e.g. en-US, en-GB, fr, de, es-419.string
countryEdition country code, e.g. US, GB, CA, DE, FR, IN.string
maxItemsMaximum number of articles to return (Google News feeds cap around 100 per query).integer
resolveUrlsDecode Google's redirect links into the actual article URL (e.g. reuters.com/...). Best-effort; falls back to the Google link with urlResolved=false if a link can't be decoded. Check urlResolved per row to know whether url is the real publisher link or the Google redirect.boolean
fetchArticleTextDownload each resolved article and extract its main body text. Slower; requires Resolve URLs. Some sites block scraping or have no extractable body, those rows come back with articleText=null and are flagged ok:false and NOT charged, so you only pay for articles whose text was actually fetched.boolean
aiSummaryGenerate a 1-2 sentence summary and a sentiment label per article using OpenAI. Needs an OpenAI API key. Best-effort: if the OpenAI call fails for an article, the aiSummary and sentiment fields are simply omitted/null for that row (the article itself is still returned).boolean
notionConnectorOptional. Write each article as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default), results are always saved to the dataset regardless.string
notionParentIdOptional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead.string
openaiApiKeyOnly needed when AI summary is on. Kept private.string

What you get

A structured dataset — each result includes fields like:

articleTextgoogleUrlpublishedAtquerysnippetsourcesourceUrltitletopicurlurlResolved

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

22 ready-to-run use cases

Stock News Sentiment for Apple and Microsoft Earnings

Yesterday's Apple and Microsoft earnings coverage as rows. The sentiment label is an OpenAI step, so bring your own key or the run returns nothing.

Mergers and Acquisitions News Feed for Deal Tracking

Acquisition, merger and takeover-bid stories from the last day. The AI field that pulls out acquirer and target needs your own OpenAI key.

Startup Funding News: Seed to Series B Rounds Daily

Yesterday's raise announcements as rows, ready to route to a CRM. The AI extract of amount and investors runs on your own OpenAI key.

CEO Changes News: Track Executive Moves Weekly

Finds appointment, resignation and CFO-named stories across a week of news. Add your own OpenAI key for the summary column, or the run returns nothing.

Adverse Media Screening for Supplier Due Diligence

Watches news for lawsuits, pollution findings and labour cases naming your suppliers. Headline, outlet, date, link. AI summaries need your own OpenAI key.

Crypto News API: Bitcoin, ETF and SEC Headlines

A day of Bitcoin, Ethereum, ETF and stablecoin regulation coverage as rows. The sentiment column is an OpenAI step and needs your own key.

FDA Recall List and Class Action News, Daily

Recalls, FDA warning letters, contamination and class-action stories from the last 24 hours. AI summaries need your own OpenAI key to run.

Google News RSS Feed to JSON for Headline Tracking

Turns a Google News query into clean rows: headline, outlet, publish time and the real article URL after the redirect. Runs with no key at all.

Real Time News API for AI Agents and RAG Grounding

Fresh headlines plus article text for grounding an agent's answers. The AI summary field runs on your own OpenAI key; leave it off and you still get rows.

Business News API: Daily Headlines Feed as JSON

Google News business section as 80 rows a day, each with headline, outlet, timestamp and the resolved article link. No API key, no quota to manage.

Country Risk Monitoring from Daily News Headlines

Sanctions, conflict, trade war and election coverage from the UK edition of Google News. The AI risk note is an OpenAI step and needs your own key.

Brand Monitoring for Negative Press and Crisis Alerts

Catches lawsuits, boycotts, outages and layoff stories about one company the day they run. AI severity notes need your own OpenAI key.

Layoff Tracker: Job Cuts and Restructuring News Feed

A week of layoff, job-cut and workforce-reduction stories as rows you can filter by company. The AI summary column needs your own OpenAI key.

Clinical Trial News and FDA Approval Headlines Feed

Phase 3 readouts, FDA approvals and breakthrough designations from the last day. The plain-English summary is an OpenAI step needing your own key.

Local Business News by City: Openings and Closings

Swap the city name and get a week of openings, expansions, relocations and closures for that market. The AI summary needs your own OpenAI key.

Partnership Announcements and Integration News Feed

Finds the week's partnership, alliance and integration press across every outlet Google indexes. The AI summary column needs your own OpenAI key.

Tesla News Today, Scraped from Google News as JSON

The last 24 hours of Tesla coverage, newest first, with the publisher URL resolved out of Google's redirect. Schedule it and you have a daily feed.

Top Technology News Today from Google News as JSON

The whole technology section, 50 stories, each row carrying headline, outlet, publish time and the article URL after Google's redirect is followed.

EV News: Rivian and Lucid Headlines Side by Side

A month of Rivian and Lucid coverage in one table, so you can see which one the press is actually writing about. Runs with no API key.

News API for AI Regulation Headlines, Updated Daily

AI policy and regulation stories from the last week as JSON rows. Sentiment labels only appear if you add your own OpenAI key; without one the run stops.

Company News Alerts: Watch One Brand on Google News

Type a company name, get its 50 newest stories with outlet, timestamp and the article URL Google hides behind a redirect. No key needed.

AI News Today from Google News, Newest First

Fifty artificial-intelligence stories from the past day: headline, outlet, timestamp and the real article link. No key, no quota, no signup.

Related tools in News & Finance Data

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GDELT Worldwide News Scraper iconNews & Finance Data

GDELT Worldwide News Scraper

Search worldwide news via GDELT 2.0: headline, URL, domain, country, language and date. 250 articles per query. $2.00 per 1,000.

2 use cases

Yahoo Finance Scraper iconNews & Finance Data

Yahoo Finance Scraper

Get Yahoo Finance quotes and OHLCV history with no API key. Ticker search, current quote with change % and the 52-week range. $1.00 per 1,000 rows.

3 use cases

CoinGecko Crypto Market Scraper iconNews & Finance Data

CoinGecko Crypto Market Scraper

Scrape CoinGecko crypto market data with no API key. Get top coins, price, volume, 24h and 7d change, supply, ATH and ATL. $2.00 per 1,000 coins.

3 use cases

SEC EDGAR Filings Scraper iconNews & Finance Data

SEC EDGAR Filings Scraper

Search all SEC EDGAR filings by keyword, ticker or CIK. Get form, company, CIK, date and document link. $2.00 per 1,000.

2 use cases

Google Maps Scraper iconMaps & Local Lead Generation

Google Maps Scraper

Scrape Google Maps places and reviews. Business name, category, address, rating, GPS coordinates and place ID. $0.27 per 1,000 rows.

28 use cases

Google Reviews Monitor — Multi-Location Alerts & Reports iconMaps & Local Lead Generation

Google Reviews Monitor — Multi-Location Alerts & Reports

Watch Google reviews for every location on a schedule. Get only the new ones, rating-drop alerts in Slack and AI reply drafts. $1.00 per 1,000 reviews.

4 use cases

See all News & Finance Data →

Google News Scraper: articles by keyword or topic, with the publisher's real link

Give it a keyword or pick one of Google News's topic feeds, and get one row per article: headline, publisher, date, snippet and a link. Optionally the full body text, and a short summary with a sentiment label if you bring your own OpenAI key.

Here is the part that decides whether you need this. Every link in a Google News feed is a redirect blob, https://news.google.com/rss/articles/CBMi..., and the publisher's actual address has to be decoded out of it. That decoding is best effort. When a link will not decode, the row still arrives with the Google link in url and urlResolved: false, so you always know which one you are holding.

InputA keyword search, or one of eight Google News topic feeds
OutputOne row per article
Ceiling100 articles per run, and Google's feeds hold about 100 anyway
Account neededNone. An OpenAI key only if you want the summaries
Price$3.00 per 1,000 articles, flat on every plan

📰 What Google News Scraper does

It reads a Google News feed and writes a row per article: title, source, sourceUrl, publishedAt, snippet, the decoded url, and the original googleUrl in case you want it.

Search or topic. A query takes Google operators, so tesla OR rivian, site:reuters.com and intitle:layoffs all work. A topic instead gives you the edition feed for World, Nation, Business, Technology, Entertainment, Sports, Science or Health.

Full text, if you ask. With fetchArticleText on, each resolved article is downloaded and its body pulled out, up to 20,000 characters. Plenty of publishers will not give that up to a plain request, and those rows come back with articleText: null and are not charged.

Summaries, on your key. aiSummary adds a one or two sentence summary and a sentiment label, using the OpenAI key you supply. OpenAI bills you for those calls directly. This actor adds nothing for them.

📥 What you give it

{
  "query": "openai funding",
  "freshness": "7d",
  "language": "en-US",
  "country": "US",
  "maxItems": 30,
  "resolveUrls": true
}
FieldDefaultWhat it is
querybox starts at artificial intelligenceKeywords, with Google operators. Leave empty if you are using a topic.
topicnoneA topic feed instead of a search: World, Nation, Business, Technology, Entertainment, Sports, Science, Health.
freshnessany time1h, 1d, 7d, 30d or 1y. It narrows a query search. A topic feed returns whatever the feed holds.
languageen-USGoogle's hl. en-GB, fr, de, es-419 and the rest.
countryUSGoogle's gl. GB, CA, DE, IN and so on.
maxItems50Articles to return, up to 100.
resolveUrlsonDecode the Google redirect into the publisher's own link.
fetchArticleTextoffDownload each article and pull out the body. Needs resolveUrls on.
aiSummaryoffSummary and sentiment per article. Needs your own key in openaiApiKey.
openaiApiKeynoneRead only when aiSummary is on. Stored as a secret.
notionConnectornoneOptional. Write each article into your Notion when the run finishes.
notionParentIdnoneOptional. The Notion data source to write into.
proxyConfigurationoffOptional, and a normal run does not want it.

Send neither a query nor a topic and you get one uncharged BAD_INPUT row telling you which is missing. Same if aiSummary is on without a key.

📤 What you get back

A real row from a recent run, with the long Google link cut short:

{
  "ok": true,
  "title": "Kapolri Dorong Pekerja Tingkatkan Kompetensi dan Penguasaan Teknologi - Tribratanews Polda Metro Jaya",
  "publishedAt": "2026-09-16T07:04:36.000Z",
  "source": "Tribratanews Polda Metro Jaya",
  "sourceUrl": "https://tribratanews.metro.polri.go.id",
  "snippet": "Kapolri Dorong Pekerja Tingkatkan Kompetensi dan Penguasaan Teknologi Tribratanews Polda Metro Jaya",
  "url": "https://tribratanews.metro.polri.go.id/kapolri-dorong-pekerja-tingkatkan-kompetensi-dan-penguasaan-teknologi/",
  "urlResolved": true,
  "articleText": null,
  "googleUrl": "https://news.google.com/rss/articles/CBMirgFBVV95cUxNbUp3aDlPMFNNNG5Qa3A3QlV0WFVKVjJHLU5GWExSal9qdEcz..."
}
FieldWhat it is
urlThe publisher's own link once decoded, or the Google link when it would not decode.
urlResolvedtrue means url is the publisher's address. false means it is still the Google redirect. Check it per row.
googleUrlThe original redirect link, always present.
source, sourceUrlPublisher name and homepage, as Google's feed gives them. null when the feed leaves them out.
publishedAtISO timestamp from the feed.
articleTextOnly with fetchArticleText on, and only when the body could be pulled out. Capped at 20,000 characters.
aiSummary, sentimentOnly with aiSummary on and the call came back. A failed call leaves them empty and the article row still ships.

🧾 Reading the output

RowHow to spot itCharged
A complete articleok: trueyes
An article missing the text or summary you asked forok: false, with articleText nullno
A diagnosticok: false and an errorCodeno

There is no sample row on this one. An empty input goes straight to BAD_INPUT.

CodeWhat it means
BAD_INPUTNo query and no topic, or aiSummary on with no key.
NO_RESULTSThe feed came back empty. Widen freshness, or try the keyword without operators.
NOT_FOUNDThat feed address does not exist. Usually a bad language or country pairing.
BLOCKEDGoogle would not serve the feed for that request.
RATE_LIMITEDToo many requests in a short window. Wait and re-run.
SERVER_ERRORGoogle answered with an error of its own.
NETWORKGoogle was unreachable or the response never finished.

The Overview table hides urlResolved, ok, articleText and aiSummary, which are exactly the fields you want to check. Switch the dataset to JSON to see them.

▶️ How to run it

1. Open Google News Scraper and click Try for free. 2. Put keywords into Search query, or leave it empty and pick a Topic instead. 3. Set Max articles, and Freshness if you only want recent pieces. 4. Tick Fetch full article text only if you need bodies, then click Start. 5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost?

$3.00 per 1,000 articles, which is $0.003 each. The same rate on every Apify plan, no volume tiers.

Resolving links, fetching article text and the AI summary all cost nothing extra here. The OpenAI calls behind aiSummary are billed to you by OpenAI, on your own key.

What is not charged: a row where you asked for the body and nothing could be extracted, every diagnostic row, and a search that finds nothing.

💡 What people use it for

  • Watching a brand, a competitor's product name or a ticker across publishers, on a daily schedule.
  • Building a reading list for one topic feed in one country, with real links you can open.
  • Pulling headline, date and publisher into a sheet for a weekly roundup, skipping the body entirely.
  • Feeding resolved article URLs into your own pipeline, since googleUrl is useless to most tools.

🚧 What it does not do

  • About 100 articles per feed. That is Google's cap, not ours. Split a bigger job by keyword, by

site:, or by freshness window.

  • Full text is a gamble per article. Paywalls and pages that build themselves in the browser give

a plain request nothing. Those rows are flagged and not charged, so do not budget on getting the body for every article.

  • Some links never decode. You get the Google link and urlResolved: false rather than a

dropped row.

  • freshness narrows a search, not a topic feed. Pick a topic and you get what that feed holds.
  • No archive. Google News feeds carry what is current. There is no way to ask for last March.
  • The Notion connector receives every row, including the incomplete ones. Filter on ok if you

only want complete articles in there.

  • One query or one topic per run. Use a schedule or several runs for a list of keywords.

🧭 Which Google scraper do you need?

If you wantUse
News articles by keyword or topicThis one
The ordinary web results page for a keywordGoogle Search Results Scraper
Images and the pages hosting themGoogle Images Scraper
Job postings from the jobs boxGoogle Jobs Scraper
Businesses, places and their reviewsGoogle Maps Scraper

❓ Questions people ask

Do I need a Google API key? No. Nothing to apply for, nothing to log into.

Do I need an OpenAI key? Only for aiSummary. Leave that off and the actor never touches OpenAI.

Why is url sometimes still a news.google.com address? Because that particular link would not decode. urlResolved tells you, per row, and googleUrl always holds the original.

Can I search several keywords at once? Not in one run. Put your operators in a single query, or schedule a run per keyword.

Why did I get fewer than maxItems? The feed ran out. A narrow keyword with a tight freshness window often returns a handful.

Is scraping Google News legal? These are public news feeds, and the rows point back at the publishers. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the query or topic and the run ID. The errorCode on the diagnostic row usually names the problem on its own.