Google News Scraper With Full Article Text avatar

Google News Scraper With Full Article Text

Pricing

from $5.99 / 1,000 results

Go to Apify Store
Google News Scraper With Full Article Text

Google News Scraper With Full Article Text

Pull fresh news coverage from Google News with reliable scraping. Extract article metadata, summaries, sources, and URLs for trend analysis or reporting workflows. Designed for content teams, researchers, and automation pipelines.

Pricing

from $5.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapier

Scrapier

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

a day ago

Last modified

Share

Google News Scraper — Full Article Text & Extraction Status

Google News Scraper With Full Article Text searches Google News for any keyword and returns one row per article — headline, publisher, the real publisher URL behind every news.google.com redirect, the full article body, byline, publish time, language and an honest extractionStatus for every story it could not read. Every response is structured JSON, ready to pass to an LLM, index into a vector store, or feed a monitoring pipeline. Nothing is guessed when a page can't be read — the row says so.

What is Google News Scraper With Full Article Text?

Google News Scraper With Full Article Text is an Apify Actor that runs a keyword search against Google News' public RSS feed, decodes every news.google.com/rss/articles/... redirect back to the publisher's real URL, then downloads that page and extracts the full article body, byline, publish time and language. No Google account, login or API key is required to run a search — Google News' RSS surface is open to anyone. A provider API key is only needed if you turn on the optional AI enrichment step.

Key capabilities:

  • 🔍 Keyword search with real Google News query operators — "exact phrase", site:bbc.com, intitle:tesla, -exclude, when:1d, after:2026-01-01 before:2026-01-31
  • 🌍 Country edition and language targeting (gl, hl) across the full Google News locale list
  • ⏱️ Working date filteringtime_period is applied as a real when:/after:/before: query operator, not the legacy &tbs= parameter that Google's RSS surface silently drops
  • 🔗 Redirect resolution — every Google News link is decoded to the publisher's real URL via the same batchexecute endpoint Google News' own web client uses
  • 📄 Full article body extraction — JSON-LD articleBody when the publisher ships it, otherwise a paragraph-density readability heuristic
  • 🚦 Honest per-article statusextractionStatus is ok, paywalled, thin, blocked or unresolved, never a silently blank field

What data can you get with Google News Scraper With Full Article Text?

Every run produces two layers of data in the same row: the Google News search result itself (headline, publisher, date, snippet) and, when article resolution and extraction are enabled, the resolved publisher article (full text, byline, canonical URL, extraction status).

Result TypeExtracted FieldsPrimary Use Case
Search result (RSS feed)title, source, publisherDomain, date_utc, snippet, link, guid, rssLink, appliedQueryHeadline monitoring, coverage counting
Resolved publisher URLarticleUrl, articleUrlStatus, loadedUrl, canonicalUrlAttribution, cross-run deduping
Full article bodyarticleText, articleTextChars, articleWordCount, articleExtractionMethod, extractionStatus, extractionHttpStatus, extractionProxyRung, extractionErrorNLP corpora, sentiment models, RAG pipelines
Byline & page metadataarticleAuthor, articlePublishedAt, articleTitle, articleLang, image / imageUrlAttribution, source credibility checks
Optional AI enrichmentaiSentiment, aiSummary, aiEntities, aiErrorFast triage without a separate NLP step

Extraction Status

Most Google News scrapers either return a blank body or fail the whole item when a publisher page can't be read. This Actor classifies every attempted article into one of five states and pushes the row either way, so a paywalled article and a genuinely readable one never look the same in your dataset:

{
"extractionStatus": "paywalled",
"extractionHttpStatus": 200,
"extractionError": null,
"extractionProxyRung": "residential",
"articleTextChars": 412,
"articleText": null
}

ok means the body cleared minArticleChars. paywalled means a subscribe-to-read marker or a isAccessibleForFree: false JSON-LD flag was detected. thin means the page returned text but not enough of it, with no paywall marker. blocked means the fetch itself failed (HTTP error, non-HTML response, or a request exception). unresolved means the Google redirect never resolved to a publisher URL in the first place, so no fetch was even attempted. Each state is a real, queryable field — not an adjective in a README.

Full Article Text and Byline Metadata

articleText is the extracted body, capped at articleTextMaxChars (20,000 by default) and stripped of scripts, navigation, ads and captions. Alongside it, every readable page also returns articleAuthor (from JSON-LD author or an <meta name="author"> tag), articlePublishedAt (the publisher's own timestamp, separate from the feed's date_utc), articleLang (from the page's <html lang> attribute), and articleWordCount. This is the layer competitors' RSS-only output can't give you: the actual reporting, not a 200-character snippet.

Why not build this yourself?

Google shut down its public Google News search API years ago; there is no current, documented endpoint for programmatic Google News search. Building a replacement yourself means reverse-engineering an undocumented RSS surface, then replicating the redirect-resolution call by hand: scraping a data-n-a-id / data-n-a-ts / data-n-a-sg signature and Google's internal build id out of an interstitial page, and POSTing a batchexecute request whose shape can change without notice — which is exactly why this Actor harvests the build id at runtime instead of hardcoding it. On top of that you still need a full-text extraction pipeline that survives arbitrary publisher markup (JSON-LD when present, a readability fallback when not), a proxy escalation ladder for publishers that block a direct fetch, and an honest way to tell a paywall apart from a genuine error. Each of those pieces fails silently if you get it wrong; this Actor exists so you don't have to debug that yourself.

What's the difference between a Google News search result and a full-text article?

A Google News search result is a snippet — the headline, publisher name, and a roughly 200-character description pulled straight from the RSS feed. Full-text article extraction is the complete body of the story as published on the publisher's own site. The distinction matters because a snippet is enough for headline monitoring or coverage counting, but not enough to run sentiment analysis, pull direct quotes, or ground an LLM's answer in what a story actually says — Google News' snippet is deliberately short and was never meant to carry the reporting itself.

Getting from one to the other requires two extra steps most scrapers skip: resolving the Google redirect to the publisher's real URL, then fetching and parsing that page. Google News Scraper With Full Article Text returns both in the same row — the snippet arrives in snippet, the full body in articleText — governed by two independent toggles (resolveArticleUrl, fetchArticleText) so you can run headline-only for speed or full-text when you need the story itself.

How to scrape Google News with Google News Scraper With Full Article Text?

  1. Open the Actor's page on the Apify Store and click Try for free — it runs entirely on Apify, with no separate signup and no API key required for a search-only run.
  2. Enter your search term in query (required). Google News operators work here: "exact phrase", site:reuters.com, -exclude.
  3. Set gl and hl for country and language, time_period for freshness, and leave resolveArticleUrl and fetchArticleText on if you want full article bodies.
  4. Click Start. The Actor fetches the RSS feed, resolves redirects, and extracts article bodies in parallel, articleFetchConcurrency pages at a time (default 8, max 16).
  5. Open the run's dataset and export as JSON, CSV, Excel, XML, RSS or HTML from the Apify Console, or pull it through the Apify API / apify-client.
run_input = {"query": "Tesla earnings", "maxItems": 25, "time_period": "last_day"}
run = client.actor("<YOUR_USERNAME>/google-news-scraper-full-article-text").call(run_input=run_input)

How to run multiple queries in one job

The input schema takes a single query string per run — there is no array-of-queries field. To cover a keyword set, loop over your keywords with apify_client and start one run per keyword, create a separate Actor task per keyword, or drive it from a script that calls the Apify API in sequence. Concurrent runs are governed by your Apify plan's run-concurrency limit, not by anything in this Actor.

⬇️ Input

All 26 input fields, read directly from .actor/actor.json. maxItems and query are required; everything else has a default.

ParameterRequiredTypeDefaultConstraints
queryYesstring"Elon Musk"Free-text search term; Google News query operators supported
maxItemsYesinteger10min 1, max 50000 — the feed itself returns roughly 100 items per query regardless
glNostring (enum)United States*one of 245 country-edition names
hlNostring (enum)English*one of 135 language names
lrNostring (enum)noneone of 43 language names — legacy, no effect
crNostring (enum)noneone of 245 country names — legacy, no effect
time_periodNostring (enum)nonelast_hour, last_day, last_week, last_month, last_year, custom
time_period_minNostringnonepattern MM/DD/YYYY; used only when time_period is custom
time_period_maxNostringnonepattern MM/DD/YYYY; used only when time_period is custom
nfprNointeger0min 0, max 1legacy, no effect
filterNointeger1min 0, max 1legacy, no effect
proxyConfigurationNoobject{"useApifyProxy": false}Apify proxy configuration editor
resolveArticleUrlNobooleantruedecode the Google redirect into the publisher URL
fetchArticleTextNobooleantruedownload the publisher page and extract the body
minArticleCharsNointeger800min 100, max 50000 — minimum body length that counts as ok
articleTextMaxCharsNointeger20000min 500, max 200000 — truncation cap for articleText
skipUnreadableNobooleanfalsedrop rows whose body could not be extracted instead of pushing a null body — dropped rows are not charged
retryFailuresWithProxyNobooleantrueretry only the articles that failed the direct fetch, through a residential then a datacenter proxy rung
articleFetchConcurrencyNointeger8min 1, max 16 — parallel article downloads; the value is clamped into this range in code even if a caller sends something outside it
inlineThumbnailBase64Nobooleanfalseembed the lead image as a base64 data URL in every row (adds two requests per row)
enableAiEnrichmentNobooleanfalserun an LLM over successfully-extracted articles for sentiment, summary and entities
aiProviderNostring (enum)openaiopenai, anthropic, google, openrouter
aiApiKeyNostringnonemarked isSecret: true in the schema — masked in the Apify Console and never logged
aiModelNostringnonefree text; empty uses the provider default (gpt-4o-mini / claude-3-5-haiku-latest / gemini-2.0-flash)
aiTasksNoarray of string["sentiment", "summary"]items from sentiment, summary, entities
aiMaxCharsNointeger6000min 500, max 60000 — how much of the body is sent to the model per article

*gl and hl have no default declared in the schema itself; the Actor code falls back to United States / English only when the field is omitted entirely.

Example input

{
"query": "Tesla earnings",
"maxItems": 25,
"gl": "United States",
"hl": "English",
"time_period": "last_day",
"resolveArticleUrl": true,
"fetchArticleText": true,
"minArticleChars": 800,
"skipUnreadable": false,
"retryFailuresWithProxy": true,
"articleFetchConcurrency": 8
}

Common pitfall: fetchArticleText depends on resolveArticleUrl. If you turn resolveArticleUrl off but leave fetchArticleText on, every row comes back with extractionStatus: "unresolved" — there is no publisher URL to fetch, so nothing is attempted. Leave both on (the default) unless you only want headlines and snippets, in which case turn both off together. Also watch gl/hl/lr/cr — they take full country and language names exactly as they appear in the enum ("United States", "German"... actually "German" isn't valid, it's "Germany" for gl and "German" for hl), not ISO codes; passing "US" or "en" directly does not match the enum.

⬆️ Output

One typed JSON row per article, pushed to the Apify dataset. Export as JSON, CSV, Excel, XML, RSS or HTML from the Apify Console or the API. The dataset's default view surfaces only 14 of the 40 fields the Actor actually writes — title, source, publisherDomain, date_utc, articleUrl, extractionStatus, articleWordCount, articleAuthor, articlePublishedAt, articleLang, articleText, imageUrl, link, query. Every field below is present on the row regardless of which view you look at it through.

FieldDescription
position, block_position1-based index of the article in this run
titleHeadline, with the trailing " - Publisher" suffix stripped
linkThe news.google.com link exactly as it appeared in the feed
domainPublisher domain, read from the feed's <source url> element
sourcePublisher name as given by the feed
dateRelative age string, e.g. "3 hours ago"
date_utcISO-8601 UTC publish time parsed from the feed; null if the feed's date could not be parsed
snippetThe feed's own description text, HTML-stripped and capped at 200 characters
thumbnailBase64 data-URL image, populated only when inlineThumbnailBase64 is on; otherwise empty string
queryThe query value you supplied
appliedQueryThe exact query string sent to Google, including any when:/after:/before: operator that time_period added
guidGoogle News' per-article id from the feed
sourceUrlPublisher homepage URL from the feed's <source url>
publishedAtISO-8601 publish time (duplicate of date_utc, kept for compatibility)
rssLinkThe exact RSS feed URL that was requested for this run
publisherDomainPublisher domain (duplicate of domain)
publisherHomeUrlPublisher homepage URL (duplicate of sourceUrl)
articleUrlThe resolved publisher article URL, or null if resolution was off or failed
articleUrlStatusok, not_google, skipped, or a failure reason (signature_missing, rpc_no_url, http_403, error_<ExceptionType>, etc.)
loadedUrlThe URL actually downloaded, after HTTP redirects on the publisher's own server
extractionStatusok / paywalled / thin / blocked / unresolved / skipped
extractionHttpStatusHTTP status code of the article page fetch, or null
extractionProxyRungnone, residential, or datacenter — which rung actually produced the text
extractionErrorShort failure reason (e.g. http_403, content_type_application/pdf), or null when the page was read
articleTextThe extracted body text, or null when it could not be extracted
articleTextCharsLength of articleText in characters
articleWordCountLength of articleText in words
articleExtractionMethodldjson (JSON-LD articleBody won) or readability (the paragraph-density heuristic won)
articleLangLanguage code from the publisher page's <html lang> attribute
articleAuthorByline, from JSON-LD author or a <meta name="author"> tag
articlePublishedAtPublish time reported by the publisher page itself (separate source from date_utc)
articleTitleThe publisher's own og:title or <title>, which can differ from Google's title
canonicalUrlThe publisher's <link rel="canonical"> URL
imageLead image URL from og:image (duplicate of imageUrl)
imageUrlLead image URL from og:image
aiSentiment"positive" / "neutral" / "negative", populated only when AI enrichment is on and the article was readable
aiSummary1–2 sentence LLM summary, same condition
aiEntitiesArray of {name, type} objects, same condition
aiErrorThe LLM call's error string, or null

Scraped results

[
{
"position": 1,
"title": "Tesla's Q2 spending turns cash flow negative despite revenue surge",
"link": "https://news.google.com/rss/articles/CBMi...",
"domain": "wsj.com",
"source": "WSJ",
"date": "5 hours ago",
"date_utc": "2026-07-25T18:20:00+00:00",
"snippet": "Tesla reported second-quarter results that beat revenue estimates but showed accelerating cash burn...",
"thumbnail": "",
"query": "Tesla earnings",
"appliedQuery": "Tesla earnings when:1d",
"guid": "CBMi...",
"sourceUrl": "https://www.wsj.com",
"publishedAt": "2026-07-25T18:20:00+00:00",
"rssLink": "https://news.google.com/rss/search?q=Tesla%20earnings%20when%3A1d&hl=en&gl=us&ceid=US:en",
"publisherDomain": "wsj.com",
"publisherHomeUrl": "https://www.wsj.com",
"articleUrl": "https://www.wsj.com/business/autos/tesla-tsla-q2-earnings-report-2026",
"articleUrlStatus": "ok",
"loadedUrl": "https://www.wsj.com/business/autos/tesla-tsla-q2-earnings-report-2026",
"extractionStatus": "ok",
"extractionHttpStatus": 200,
"extractionProxyRung": "none",
"extractionError": null,
"articleText": "Tesla reported second-quarter results Wednesday that beat Wall Street's revenue estimate...",
"articleTextChars": 4218,
"articleWordCount": 712,
"articleExtractionMethod": "ldjson",
"articleLang": "en-us",
"articleAuthor": "Becky Peterson",
"articlePublishedAt": "2026-07-25T17:05:00Z",
"articleTitle": "Tesla's Cash Flow Turns Negative Even as Revenue Beats",
"canonicalUrl": "https://www.wsj.com/business/autos/tesla-tsla-q2-earnings-report-2026",
"image": "https://images.wsj.net/im-67307464/social",
"imageUrl": "https://images.wsj.net/im-67307464/social",
"aiSentiment": null,
"aiSummary": null,
"aiEntities": null,
"aiError": null
},
{
"position": 2,
"title": "Tesla shares slide after earnings call raises tariff concerns",
"link": "https://news.google.com/rss/articles/CBMi...",
"domain": "bloomberg.com",
"source": "Bloomberg",
"date": "6 hours ago",
"date_utc": "2026-07-25T17:40:00+00:00",
"snippet": "Tesla shares fell in after-hours trading following comments on tariff exposure during the earnings call...",
"thumbnail": "",
"query": "Tesla earnings",
"appliedQuery": "Tesla earnings when:1d",
"guid": "CBMi...",
"sourceUrl": "https://www.bloomberg.com",
"publishedAt": "2026-07-25T17:40:00+00:00",
"rssLink": "https://news.google.com/rss/search?q=Tesla%20earnings%20when%3A1d&hl=en&gl=us&ceid=US:en",
"publisherDomain": "bloomberg.com",
"publisherHomeUrl": "https://www.bloomberg.com",
"articleUrl": "https://www.bloomberg.com/news/articles/tesla-shares-slide-tariff",
"articleUrlStatus": "ok",
"loadedUrl": "https://www.bloomberg.com/news/articles/tesla-shares-slide-tariff",
"extractionStatus": "paywalled",
"extractionHttpStatus": 200,
"extractionProxyRung": "residential",
"extractionError": null,
"articleText": null,
"articleTextChars": 231,
"articleWordCount": 38,
"articleExtractionMethod": "readability",
"articleLang": "en",
"articleAuthor": null,
"articlePublishedAt": "2026-07-25T17:40:00Z",
"articleTitle": "Tesla Shares Slide After Earnings Call Raises Tariff Concerns",
"canonicalUrl": "https://www.bloomberg.com/news/articles/tesla-shares-slide-tariff",
"image": null,
"imageUrl": null,
"aiSentiment": null,
"aiSummary": null,
"aiEntities": null,
"aiError": null
},
{
"position": 3,
"title": "Tesla earnings recap: what analysts are saying",
"link": "https://news.google.com/rss/articles/CBMi...",
"domain": "example-news.com",
"source": "Example News",
"date": "7 hours ago",
"date_utc": "2026-07-25T16:55:00+00:00",
"snippet": "A roundup of analyst reactions to Tesla's second-quarter earnings report, with price-target changes...",
"thumbnail": "",
"query": "Tesla earnings",
"appliedQuery": "Tesla earnings when:1d",
"guid": "CBMi...",
"sourceUrl": "https://www.example-news.com",
"publishedAt": "2026-07-25T16:55:00+00:00",
"rssLink": "https://news.google.com/rss/search?q=Tesla%20earnings%20when%3A1d&hl=en&gl=us&ceid=US:en",
"publisherDomain": "example-news.com",
"publisherHomeUrl": "https://www.example-news.com",
"articleUrl": null,
"articleUrlStatus": "signature_missing",
"loadedUrl": null,
"extractionStatus": "unresolved",
"extractionHttpStatus": null,
"extractionProxyRung": null,
"extractionError": null,
"articleText": null,
"articleTextChars": 0,
"articleWordCount": null,
"articleExtractionMethod": null,
"articleLang": null,
"articleAuthor": null,
"articlePublishedAt": null,
"articleTitle": null,
"canonicalUrl": null,
"image": null,
"imageUrl": null,
"aiSentiment": null,
"aiSummary": null,
"aiEntities": null,
"aiError": null
}
]

How can I use the data extracted with Google News Scraper With Full Article Text?

  • 📰 Media monitoring and PR teams: search a brand or executive name, filter rows on extractionStatus: "ok", and run keyword matching against articleText instead of the 200-character snippet — you catch mentions the headline doesn't show.
  • 🤖 AI engineers and LLM developers: an agent issues a query, receives structured JSON back, and passes articleText plus articleAuthor/articlePublishedAt straight into a model's context window as grounded, sourced input for a RAG pipeline.
  • 📊 Market researchers: group rows by publisherDomain and date_utc to measure share-of-voice across outlets for a ticker or company, and use articleWordCount as a rough proxy for how deep the coverage went.
  • 🗂️ Content and newsroom teams: run the same query on a schedule and diff articleUrl sets between runs to see which publishers picked up a story and how fast.

📈 How do you monitor extraction status and coverage over time?

Coverage monitoring means watching which publishers stay readable and which new outlets start covering your topic — not just whether new headlines exist. Two scheduled runs of the same query, a day or a week apart, tell you both: diff extractionStatus per publisherDomain to see if a site that was ok last week is now paywalled or blocked (a sign the publisher tightened access), and diff the set of publisherDomain values themselves to see which outlets are newly covering your topic.

The fields worth diffing between runs are extractionStatus, publisherDomain, articleWordCount and articleAuthor — a jump from ok to blocked for the same domain across runs is a stronger signal than eyeballing headlines, and a domain appearing for the first time is a coverage-expansion signal. guid is stable per article, so you can also detect exactly which articles are new versus already seen.

This Actor has no built-in scheduler of its own; point-in-time diffing across runs is done outside the Actor. Apify's platform-level Schedules run this Actor on a recurring cron interval, and Webhooks can fire when a run finishes so a downstream job pulls the new dataset and computes the diff.

Integrate Google News Scraper With Full Article Text and automate your workflow

Google News Scraper With Full Article Text works with any language or tool that can send an HTTP request through the Apify API.

REST API with Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"query": "Tesla earnings",
"maxItems": 25,
"time_period": "last_day",
"resolveArticleUrl": True,
"fetchArticleText": True,
}
run = client.actor("<YOUR_USERNAME>/google-news-scraper-full-article-text").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["extractionStatus"] == "ok":
print(item["title"], "-", item["articleWordCount"], "words")

Scheduled monitoring and delivery

The Actor itself has no webhook-delivery feature of its own; use Apify's platform Schedules to run it on a recurring interval, and Apify Webhooks to trigger a downstream job (or POST the dataset URL somewhere) when a run finishes. Otherwise, poll the run and dataset endpoints from the Apify API on your own cadence.

Scraping publicly accessible Google News results and publicly published news articles is generally legal in most jurisdictions — this Actor returns only what any visitor to Google News and the linked publisher page can already see, without logging in or bypassing access controls. The content returned is business/published-media data owned by the respective publishers, so the operative constraints are the target sites' terms of service and copyright/database-rights law, not personal-data regimes like GDPR — the only personal-data-adjacent field returned is articleAuthor, a byline already published by the outlet itself. Scraping for internal monitoring or research carries a different risk profile than republishing or reselling full article text at scale. Consult your legal team before storing or redistributing bulk article text for commercial use.

❓ Frequently asked questions

Which country editions and languages does this Actor support?

gl (country edition) accepts 245 country names and hl (interface language) accepts 135 language names, exactly as listed in the Actor's input UI — for example "United States", "Germany", "Japan" for gl, and "English", "German", "Japanese" for hl. Both are honoured directly by the Google News RSS feed.

Do the legacy lr, cr, nfpr and filter inputs do anything?

No. All four are accepted only for compatibility with the original actor's input shape — the Google News RSS surface ignores them entirely, and the Actor writes a log warning whenever one is set. Use gl and hl for region and language, and time_period for date filtering; those are the parameters that actually change the result set.

How does Google News Scraper With Full Article Text handle anti-bot blocking?

The RSS feed request itself escalates through three rungs if it's blocked — no proxy, then a datacenter proxy group, then a residential proxy group — and is retried once per rung. Publisher-page fetches use a Chrome TLS fingerprint (via curl_cffi, impersonating Chrome 124) on the first attempt; any article that still fails is retried through a residential proxy and then a datacenter proxy, but only that failed article, not the whole run.

Does Google News Scraper With Full Article Text extract the honest extraction status?

Yes — every attempted article gets an extractionStatus of ok, paywalled, thin, blocked or unresolved, plus extractionHttpStatus, extractionProxyRung and extractionError alongside it. If fetchArticleText is off, the status is skipped instead. The status is never absent for an attempted article, and a failed page is never disguised as a successful one.

How many results does it return per query?

maxItems defaults to 10 and can be set up to 50,000, but the Google News RSS feed itself returns roughly 100 items per query with no pagination — the Actor's own input description states this. Setting maxItems above what the feed actually has simply returns everything the feed served and stops.

Am I charged for articles that fail to extract?

By default, yes. Every pushed row — including paywalled, thin, blocked and unresolved rows — is charged one row_result event, because the row still carries real data: headline, publisher, date and the feed's own metadata. Set skipUnreadable: true to drop any row whose extractionStatus isn't ok before it's pushed; those dropped rows are not billed.

How do I monitor article coverage over time?

Run the same query on a schedule (Apify Schedules), pull the new dataset each time, and diff extractionStatus and publisherDomain between runs — see "How do you monitor extraction status and coverage over time?" above for the specific fields to compare.

Does Google News Scraper With Full Article Text work with Claude, ChatGPT and AI agent frameworks?

It isn't exposed through an MCP server, but it's callable as a standard HTTP endpoint through the Apify API by any agent framework — an agent calls the Actor with a query, receives structured JSON back, and grounds its answer in the returned articles.

How does Google News Scraper With Full Article Text compare to other Google News scrapers?

As observed on the Apify Store, checked 2026-07-26: fabri-lab/apify-google-news-scraper's listing documents a coarser success / failed / skipped / blocked extraction status with no separate paywall or thin-content state. ohmydata/google-search-to-full-article's listing advertises billing only on a successful extraction, and states in its own notes that it does "not guarantee 100% detection" of block/paywall pages being mistaken for article content — none of the pricing or accuracy figures on either listing are independently verified here. memo23/google-news-scraper's listing is the closest competitor in scope — it also resolves the Google redirect via batchexecute and reads JSON-LD — but exposes a two-state bodyExtracted boolean rather than a multi-state status, and its rule-based entity extraction ships with the people array intentionally empty in its documented v0.1. This Actor's five-state extractionStatus, tunable minArticleChars quality bar, and optional multi-provider LLM enrichment (aiProvider: OpenAI, Anthropic, Gemini, or OpenRouter) are not documented on any of the three listings as of that date.

Can I use it without managing proxies or Google News credentials?

Yes. No Google account, login or credentials are needed to search Google News or resolve article URLs — that surface is open. Proxies are entirely optional and are only used as an automatic fallback rung when the feed or a publisher page blocks a direct request; you don't need to configure one for the Actor to run.

💬 Your feedback

Found a bug, hit an unexpected extractionStatus, or need a field this Actor doesn't return? Let us know through the Issues tab on the Actor's Apify Store page, or contact Scrapier directly through the store listing. Bug reports with a sample query and the affected publisherDomain are the fastest to act on.