Google News Keyword & Full-Text Article Scraper
Search Google News by keyword with real resolved article links, headlines, sources, and dates, plus optional full article text and image extraction, filterable by date, language, and publisher.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to scrape. Each mode reads its own list field below. |
queries | array | optional | One or more keyword queries. Google operators such as site:, intitle: and OR are supported. Results are deduplicated across queries. |
topics | array | optional | Topic names (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH), TOP for top stories, Google News topic hashes/section URLs, or topic URLs. Topic feeds ignore server-side date filters; results are filtered after download. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to scrape. Each mode reads its own list field below. |
queries | array | optional | One or more keyword queries. Google operators such as site:, intitle: and OR are supported. Results are deduplicated across queries. |
topics | array | optional | Topic names (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH), TOP for top stories, Google News topic hashes/section URLs, or topic URLs. Topic feeds ignore server-side date filters; results are filtered after download. |
newsUrls | array | optional | Google News search URLs, topic URLs, RSS search/topic URLs, or RSS/Atom feed URLs to convert into a feed. |
rssUrls | array | optional | Any public RSS or Atom feed. Google News links inside the feed are resolved to publisher URLs automatically. |
articleUrls | array | optional | Publisher article URLs or Google News article URLs. Every page is fetched and full text is extracted, with a per-record status when a publisher blocks or paywalls it. |
language | string | optional | Language of the Google News edition. Combined with country in the edition token (for example US:en, DE:de, JP:ja). |
country | string | optional | Country edition for Google News. The actor always pins the edition so results do not change with the machine's IP. |
dateRange | string | optional | Recency window. Every item is post-filtered by its real publication time, so items newer than the window never leak. 'custom' uses startDate/endDate. Multi-day ranges can be walked day by day to collect more than one feed page. |
startDate | string | optional | Custom range start (YYYY-MM-DD, inclusive). Also used when dateRange=custom. |
endDate | string | optional | Custom range end (YYYY-MM-DD, inclusive). Items published after the end are dropped client-side. |
maxResultsPerQuery | integer | optional | Maximum records taken from each Google News feed request (1-100, Google's own cap is about 100). When a date range spans several days, the actor walks day windows and can collect more than 100 for one query, up to maxItems. |
maxItems | integer | optional | Hard cap on unique records emitted by the run (1-5000). |
extractFullText | boolean | optional | Fetch each publisher page and extract its article body, description, author, and image. Default off for fast metadata-only runs. The articleUrls mode always extracts. |
maxFullText | integer | optional | Maximum pages fetched for full text per run (1-500). Records beyond this cap are still returned with fullTextStatus=skipped_cap. |
proxyConfiguration | object | optional | Optional. No proxy is needed by default; Google News RSS and publisher pages work without one. Residential proxies can make Google rate-limit more, so leave this off unless you need it. |
Download the published input schema
View complete JSON
{
"description": "Search Google News by keyword or browse topics, convert Google News URLs, read RSS feeds, or extract full text from article URLs.",
"properties": {
"articleUrls": {
"default": [],
"description": "Publisher article URLs or Google News article URLs. Every page is fetched and full text is extracted, with a per-record status when a publisher blocks or paywalls it.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [],
"title": "Article URLs (mode=articleUrls)",
"type": "array"
},
"country": {
"default": "US",
"description": "Country edition for Google News. The actor always pins the edition so results do not change with the machine's IP.",
"editor": "select",
"enum": [
"US",
"GB",
"CA",
"AU",
"NZ",
"IE",
"IN",
"PK",
"BD",
"LK",
"NP",
"DE",
"FR",
"ES",
"IT",
"PT",
"NL",
"BE",
"AT",
"CH",
"SE",
"NO",
"DK",
"FI",
"IS",
"PL",
"CZ",
"SK",
"HU",
"RO",
"BG",
"GR",
"HR",
"RS",
"SI",
"UA",
"RU",
"TR",
"IL",
"SA",
"AE",
"EG",
"QA",
"KW",
"BH",
"OM",
"JO",
"LB",
"IQ",
"IR",
"MA",
"DZ",
"TN",
"NG",
"KE",
"ZA",
"GH",
"ET",
"TZ",
"UG",
"MX",
"BR",
"AR",
"CL",
"CO",
"PE",
"VE",
"EC",
"UY",
"PY",
"BO",
"CR",
"PA",
"DO",
"GT",
"HN",
"SV",
"NI",
"PR",
"JP",
"KR",
"CN",
"HK",
"TW",
"SG",
"MY",
"ID",
"TH",
"VN",
"PH",
"KH",
"MM",
"LA",
"MN",
"KZ",
"UZ",
"AZ",
"GE",
"AM"
],
"enumTitles": [
"United States",
"United Kingdom",
"Canada",
"Australia",
"New Zealand",
"Ireland",
"India",
"Pakistan",
"Bangladesh",
"Sri Lanka",
"Nepal",
"Germany",
"France",
"Spain",
"Italy",
"Portugal",
"Netherlands",
"Belgium",
"Austria",
"Switzerland",
"Sweden",
"Norway",
"Denmark",
"Finland",
"Iceland",
"Poland",
"Czechia",
"Slovakia",
"Hungary",
"Romania",
"Bulgaria",
"Greece",
"Croatia",
"Serbia",
"Slovenia",
"Ukraine",
"Russia",
"Turkey",
"Israel",
"Saudi Arabia",
"United Arab Emirates",
"Egypt",
"Qatar",
"Kuwait",
"Bahrain",
"Oman",
"Jordan",
"Lebanon",
"Iraq",
"Iran",
"Morocco",
"Algeria",
"Tunisia",
"Nigeria",
"Kenya",
"South Africa",
"Ghana",
"Ethiopia",
"Tanzania",
"Uganda",
"Mexico",
"Brazil",
"Argentina",
"Chile",
"Colombia",
"Peru",
"Venezuela",
"Ecuador",
"Uruguay",
"Paraguay",
"Bolivia",
"Costa Rica",
"Panama",
"Dominican Republic",
"Guatemala",
"Honduras",
"El Salvador",
"Nicaragua",
"Puerto Rico",
"Japan",
"South Korea",
"China",
"Hong Kong",
"Taiwan",
"Singapore",
"Malaysia",
"Indonesia",
"Thailand",
"Vietnam",
"Philippines",
"Cambodia",
"Myanmar",
"Laos",
"Mongolia",
"Kazakhstan",
"Uzbekistan",
"Azerbaijan",
"Georgia",
"Armenia"
],
"prefill": "US",
"title": "Country / edition",
"type": "string"
},
"dateRange": {
"default": "any",
"description": "Recency window. Every item is post-filtered by its real publication time, so items newer than the window never leak. 'custom' uses startDate/endDate. Multi-day ranges can be walked day by day to collect more than one feed page.",
"editor": "select",
"enum": [
"any",
"1h",
"6h",
"12h",
"1d",
"7d",
"30d",
"1y",
"custom"
],
"enumTitles": [
"Any time",
"Past hour",
"Past 6 hours",
"Past 12 hours",
"Past day",
"Past week",
"Past 30 days",
"Past year",
"Custom dates"
],
"prefill": "any",
"title": "Date range",
"type": "string"
},
"endDate": {
"description": "Custom range end (YYYY-MM-DD, inclusive). Items published after the end are dropped client-side.",
"editor": "textfield",
"title": "End date",
"type": "string"
},
"extractFullText": {
"default": false,
"description": "Fetch each publisher page and extract its article body, description, author, and image. Default off for fast metadata-only runs. The articleUrls mode always extracts.",
"prefill": false,
"title": "Extract full text",
"type": "boolean"
},
"language": {
"default": "en",
"description": "Language of the Google News edition. Combined with country in the edition token (for example US:en, DE:de, JP:ja).",
"editor": "select",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pt",
"nl",
"pl",
"ru",
"uk",
"tr",
"ar",
"he",
"fa",
"hi",
"bn",
"ur",
"ta",
"te",
"ml",
"mr",
"gu",
"kn",
"pa",
"ja",
"ko",
"zh",
"th",
"vi",
"id",
"ms",
"fil",
"sv",
"no",
"da",
"fi",
"cs",
"sk",
"hu",
"ro",
"bg",
"el",
"hr",
"sr",
"sl",
"lt",
"lv",
"et",
"ca",
"eu",
"gl",
"af",
"sw",
"am",
"az",
"kk",
"uz",
"ne",
"si",
"my",
"km",
"lo",
"mn",
"ka",
"hy",
"is",
"ga",
"mt",
"mk",
"sq",
"bs",
"be",
"ky",
"tg"
],
"enumTitles": [
"English",
"German",
"French",
"Spanish",
"Italian",
"Portuguese",
"Dutch",
"Polish",
"Russian",
"Ukrainian",
"Turkish",
"Arabic",
"Hebrew",
"Persian",
"Hindi",
"Bengali",
"Urdu",
"Tamil",
"Telugu",
"Malayalam",
"Marathi",
"Gujarati",
"Kannada",
"Punjabi",
"Japanese",
"Korean",
"Chinese",
"Thai",
"Vietnamese",
"Indonesian",
"Malay",
"Filipino",
"Swedish",
"Norwegian",
"Danish",
"Finnish",
"Czech",
"Slovak",
"Hungarian",
"Romanian",
"Bulgarian",
"Greek",
"Croatian",
"Serbian",
"Slovenian",
"Lithuanian",
"Latvian",
"Estonian",
"Catalan",
"Basque",
"Galician",
"Afrikaans",
"Swahili",
"Amharic",
"Azerbaijani",
"Kazakh",
"Uzbek",
"Nepali",
"Sinhala",
"Burmese",
"Khmer",
"Lao",
"Mongolian",
"Georgian",
"Armenian",
"Icelandic",
"Irish",
"Maltese",
"Macedonian",
"Albanian",
"Bosnian",
"Belarusian",
"Kyrgyz",
"Tajik"
],
"prefill": "en",
"title": "Language",
"type": "string"
},
"maxFullText": {
"default": 100,
"description": "Maximum pages fetched for full text per run (1-500). Records beyond this cap are still returned with fullTextStatus=skipped_cap.",
"maximum": 500,
"minimum": 1,
"prefill": 100,
"title": "Max full-text extractions",
"type": "integer"
},
"maxItems": {
"default": 500,
"description": "Hard cap on unique records emitted by the run (1-5000).",
"maximum": 5000,
"minimum": 1,
"prefill": 3,
"title": "Max items",
"type": "integer"
},
"maxResultsPerQuery": {
"default": 20,
"description": "Maximum records taken from each Google News feed request (1-100, Google's own cap is about 100). When a date range spans several days, the actor walks day windows and can collect more than 100 for one query, up to maxItems.",
"maximum": 100,
"minimum": 1,
"prefill": 3,
"title": "Max results per query window",
"type": "integer"
},
"mode": {
"default": "keyword",
"description": "What to scrape. Each mode reads its own list field below.",
"editor": "select",
"enum": [
"keyword",
"topic",
"newsUrl",
"rss",
"articleUrls"
],
"enumTitles": [
"Keyword search",
"Browse a topic",
"Google News URL",
"RSS / Atom feed",
"Direct article URLs (full text)"
],
"prefill": "keyword",
"title": "Mode",
"type": "string"
},
"newsUrls": {
"default": [],
"description": "Google News search URLs, topic URLs, RSS search/topic URLs, or RSS/Atom feed URLs to convert into a feed.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [],
"title": "Google News URLs (mode=newsUrl)",
"type": "array"
},
"proxyConfiguration": {
"default": {
"useApifyProxy": false
},
"description": "Optional. No proxy is needed by default; Google News RSS and publisher pages work without one. Residential proxies can make Google rate-limit more, so leave this off unless you need it.",
"editor": "proxy",
"prefill": {
"useApifyProxy": false
},
"title": "Proxy configuration",
"type": "object"
},
"queries": {
"default": [],
"description": "One or more keyword queries. Google operators such as site:, intitle: and OR are supported. Results are deduplicated across queries.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [
"artificial intelligence"
],
"title": "Search queries (mode=keyword)",
"type": "array"
},
"rssUrls": {
"default": [],
"description": "Any public RSS or Atom feed. Google News links inside the feed are resolved to publisher URLs automatically.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [],
"title": "RSS / Atom feeds (mode=rss)",
"type": "array"
},
"startDate": {
"description": "Custom range start (YYYY-MM-DD, inclusive). Also used when dateRange=custom.",
"editor": "textfield",
"title": "Start date",
"type": "string"
},
"topics": {
"default": [],
"description": "Topic names (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH), TOP for top stories, Google News topic hashes/section URLs, or topic URLs. Topic feeds ignore server-side date filters; results are filtered after download.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [],
"title": "Topics (mode=topic)",
"type": "array"
}
},
"required": [
"mode"
],
"schemaVersion": 1,
"title": "Google News Scraper Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
overview | string | optional | Dataset view with one row per article: query, title, source, domain, publishedAt, url, fullTextStatus. |
fullText | string | optional | Dataset view focused on extracted article bodies, authors, images, and extraction status. |
errors | string | optional | Dataset view of blocked, paywalled, timed-out, or unresolved article pages. |
results | string | optional | All scraped articles in one dataset. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Unique news articles with clean title, real publisher URL, source, domain, publication time, optional full text, author, image, and a machine-readable fullTextStatus. Empty fields are omitted.",
"properties": {
"errors": {
"description": "Dataset view of blocked, paywalled, timed-out, or unresolved article pages.",
"template": "{{links.apiDefaultDatasetUrl}}/items?view=errors",
"title": "Extraction issues",
"type": "string"
},
"fullText": {
"description": "Dataset view focused on extracted article bodies, authors, images, and extraction status.",
"template": "{{links.apiDefaultDatasetUrl}}/items?view=fullText",
"title": "Full text",
"type": "string"
},
"overview": {
"description": "Dataset view with one row per article: query, title, source, domain, publishedAt, url, fullTextStatus.",
"template": "{{links.apiDefaultDatasetUrl}}/items?view=overview",
"title": "Articles overview",
"type": "string"
},
"results": {
"description": "All scraped articles in one dataset.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "All articles",
"type": "string"
}
},
"title": "Google News Keyword & Full-Text Article Scraper Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"title": "News Articles",
"views": {
"errors": {
"display": {
"component": "table",
"properties": {
"domain": {
"format": "text",
"label": "Domain"
},
"fullTextStatus": {
"format": "text",
"label": "Status"
},
"publishedAt": {
"format": "text",
"label": "Published"
},
"source": {
"format": "text",
"label": "Source"
},
"title": {
"format": "text",
"label": "Title"
},
"url": {
"format": "link",
"label": "URL"
}
}
},
"title": "Extraction Issues",
"transformation": {
"fields": [
"fullTextStatus",
"title",
"url",
"source",
"domain",
"publishedAt"
]
}
},
"fullText": {
"display": {
"component": "table",
"properties": {
"author": {
"format": "text",
"label": "Author"
},
"fullText": {
"format": "text",
"label": "Full text"
},
"fullTextStatus": {
"format": "text",
"label": "Status"
},
"imageUrl": {
"format": "link",
"label": "Image"
},
"source": {
"format": "text",
"label": "Source"
},
"title": {
"format": "text",
"label": "Title"
},
"url": {
"format": "link",
"label": "URL"
}
}
},
"title": "Full Text",
"transformation": {
"fields": [
"title",
"url",
"source",
"author",
"imageUrl",
"fullTextStatus",
"fullText"
]
}
},
"overview": {
"display": {
"component": "table",
"properties": {
"domain": {
"format": "text",
"label": "Domain"
},
"fullTextStatus": {
"format": "text",
"label": "Full text"
},
"publishedAt": {
"format": "text",
"label": "Published"
},
"query": {
"format": "text",
"label": "Query"
},
"scrapedAt": {
"format": "text",
"label": "Scraped at"
},
"source": {
"format": "text",
"label": "Source"
},
"title": {
"format": "text",
"label": "Title"
},
"url": {
"format": "link",
"label": "URL"
}
}
},
"title": "Articles Overview",
"transformation": {
"fields": [
"query",
"title",
"source",
"domain",
"publishedAt",
"url",
"fullTextStatus",
"scrapedAt"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
Google News Keyword & Full-Text Article Scraper
Scrape Google News without a login, API key, or browser. Search by keyword, browse a topic, convert a Google News link, read any RSS/Atom feed, or send publisher article URLs for full-text extraction. Every record carries a clean headline, the real publisher URL instead of a Google redirect, a canonical-URL dedupe key, and an honest extraction status when a publisher refuses the page.
What this actor does
- Five input modes:
keyword,topic,newsUrl,rss, andarticleUrls. - Real publisher links: Google News article tokens are resolved in batches, with the Google link kept as a fallback if the token ever changes.
- Date-correct results: every item is filtered against its actual
publishedAttime, so a "past day" run cannot leak a newer or older article. In keyword mode, multi-day ranges are walked day by day, which also gets past Google's ~100-item feed cap; topic and RSS modes return the feed's available items. - Clean, deduplicated records: the
- Publishersuffix is removed from titles, and the same story is deduplicated by canonical publisher URL across queries and day windows. - Optional, honest full text: page text, description, author, and image are extracted only when requested (always in
articleUrlsmode). A blocked, paywalled, timed-out, or short page becomes a record withfullTextStatusinstead of a silent null. - Empty fields are omitted from every record.
Output per article
title— headline with Google's publisher suffix removedurl— the publisher's article URL; the Google News link when resolution failssource— publisher name from the feed or pagedomain— publisher hostname, e.g.bbc.compublishedAt— ISO 8601 UTC publication time from the feedsnippet— publisher description when a page was fetched; omitted for metadata-only runs because Google's RSS "description" only repeats the titleauthor— byline from page metadata when availableimageUrl— article image from the publisher page or feedlanguage— edition language used for the runfullText— extracted article body when full text was requested and availablefullTextStatus—ok,short,empty,blocked,paywalled,rate_limited,not_found,timeout,error,unresolved, orskipped_capquery— the keyword, topic, feed URL, or article URL that produced the rowrecordType— alwaysarticlesourceUrl— the Google News or feed link the record came fromscrapedAt— UTC timestamp when the run assembled the record
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | keyword |
keyword, topic, newsUrl, rss, or articleUrls |
queries |
array | – | Keywords for keyword mode; Google operators such as site: and OR work |
topics |
array | – | Topic names (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH), TOP, topic hashes, or Google News topic URLs (topic mode) |
newsUrls |
array | – | Google News search/topic URLs or RSS/Atom feeds (newsUrl mode) |
rssUrls |
array | – | Any public RSS or Atom feed (rss mode) |
articleUrls |
array | – | Publisher or Google News article URLs (articleUrls mode); full text is always attempted |
language |
string | en |
Edition language, e.g. en, de, ja, hi |
country |
string | US |
Edition country, e.g. US, GB, DE, IN |
dateRange |
string | any |
any, 1h, 6h, 12h, 1d, 7d, 30d, 1y, or custom |
startDate |
string | – | Custom range start, YYYY-MM-DD, inclusive |
endDate |
string | – | Custom range end, YYYY-MM-DD, inclusive |
maxResultsPerQuery |
integer | 20 |
Records taken from each feed request (1–100, Google's feed cap is about 100) |
maxItems |
integer | 500 |
Hard cap on unique records in the run (1–5000) |
extractFullText |
boolean | false |
Fetch publisher pages for body text, description, author, and image |
maxFullText |
integer | 100 |
Maximum pages fetched per run (1–500); later records get fullTextStatus=skipped_cap |
proxyConfiguration |
object | off | Optional; no proxy is needed or recommended by default |
Dates and caps
- Relative ranges use Google's recency operator and are then post-filtered against the real publication time.
- A custom
startDate/endDateis inclusive. Items published after the end are always dropped, even if Google's search operator returns them. - When a date range spans several days and you ask for more than one feed page, the actor walks day windows (newest first) and collects up to
maxItems. Full windows are reported with a truncation signal in the run status. - A single Google News feed returns roughly 100 items.
maxResultsPerQuerycaps each feed window;maxItemscaps the whole run. - Full text is capped per run so a large metadata pull cannot turn into thousands of publisher requests.
Examples
Keyword scan, fastest mode
{
"mode": "keyword",
"queries": ["artificial intelligence", "semiconductor policy"],
"dateRange": "7d",
"maxResultsPerQuery": 20,
"maxItems": 100
}
Topic feed with full text
{
"mode": "topic",
"topics": ["TECHNOLOGY", "SCIENCE"],
"extractFullText": true,
"maxFullText": 50,
"maxItems": 50
}
Custom date range and real publisher URLs
{
"mode": "keyword",
"queries": ["central bank interest rates"],
"dateRange": "custom",
"startDate": "2026-10-01",
"endDate": "2026-10-20",
"maxResultsPerQuery": 100,
"maxItems": 500
}
Backfill known article URLs
{
"mode": "articleUrls",
"articleUrls": [
"https://example.com/news/story-one",
"https://example.com/news/story-two"
],
"maxFullText": 20
}
Read an existing RSS feed
{
"mode": "rss",
"rssUrls": ["https://feeds.bbci.co.uk/news/rss.xml"],
"maxResultsPerQuery": 30,
"maxItems": 30
}
Use cases
- Media monitoring — track brand, competitor, or industry coverage across thousands of publishers.
- Newsletter and digest curation — pull a dated, deduplicated story list for a daily or weekly issue.
- NLP and RAG corpora — collect headlines now and full article bodies for the subset that matters.
- Market and event research — build a date-bounded dataset around an earnings call, election, or product launch.
- PR and communications reporting — measure coverage volume and collect the underlying links.
- Academic and policy research — export a reproducible, date-correct news sample with publisher URLs.
FAQ
Does this return the real article URL or a Google redirect?
The real publisher URL. Google News tokens are resolved through Google's own article endpoint. If Google changes the token format, the actor keeps the Google News link rather than losing the record, and says so in the run status.
Why is snippet missing on a metadata-only run?
Google News RSS does not contain a real summary — its description is just the headline plus the publisher name. Returning that as a snippet would duplicate title. A real snippet comes from the publisher page, so it appears only when extractFullText is on or in articleUrls mode.
What do the fullTextStatus values mean?
ok means a substantial body was extracted; short means a small body was found; empty means no body; blocked, rate_limited, not_found, timeout, and error describe publisher responses; paywalled means a subscription wall was detected; unresolved means the publisher URL could not be resolved; skipped_cap means the record was beyond maxFullText.
Can full text read paywalled articles?
No. The actor reads only what a publisher serves publicly. It does not bypass paywalls, logins, or consent walls, and it never claims 100% full-text coverage. Premium publishers may return a short preview or a blocked status.
Why did I get fewer than 100 results for one query?
Google News returns roughly 100 items per feed request and has no working pagination parameter. The actor splits multi-day ranges into day windows to collect more, up to maxItems. If a window hits the feed cap, the run reports a truncation signal.
How does the date filter work?
Google's own date operators are day-granular and timezone-fuzzy. The actor adds the operator to the search, then drops every item whose real publishedAt falls outside your window. That is why a "past day" run does not include tomorrow's articles or yesterday's late items.
Are results deduplicated?
Yes. The same story is deduplicated by canonical publisher URL after resolution, with a Google article ID and a title/source key as fallbacks. Tracking parameters, www., fragments, and trailing slashes do not create duplicate rows.
Does a blocked publisher stop the run?
No. A 401, 403, 429, timeout, or paywall produces a normal record with the RSS metadata and a fullTextStatus. The rest of the run continues. If the whole run produces zero records, the actor fails loudly with the feed errors instead of pretending it succeeded.
Do I need a proxy or an API key?
No. Google News RSS and publisher pages are reached directly. A proxy is optional and usually unnecessary; residential proxies can actually make Google rate-limit more.
Is this affiliated with Google?
No. This is an independent, third-party actor that reads publicly available Google News feeds and publisher pages. It is not affiliated with or endorsed by Google. You are responsible for respecting publisher terms when storing or redistributing article text.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build bIH7aBp5p44Lvpppe. Documentation is regenerated from the default published build; private drafts are not included.