Apify Actors / Google News articles with the publisher's own URL

Apify Actor

Google News articles with the publisher's own URL

Google News feeds only give news.google.com/rss/articles/... links. To open, store or crawl an article you need the publisher's own address, and the feed doesn't have it. This Actor turns each Google link into the publisher URL and saves it next to the title, publisher name and publication time.

Search with full Google News syntax ("exact phrase", OR, -exclude, site:reuters.com, intitle:, when:7d) or read topic feeds such as Top stories, Business or Technology, in any of 85 editions. Above 100 articles a search is read one day at a time, which gets past Google's 100-result cap, and duplicates across queries, topics and editions are removed before charging.

Run it on ApifySee input and output

$0.002 per article, plus $0.0005 per publisher URL found · pay per result, no subscription

Price

EventPriceCharged when
article$0.002Each article row saved, after date filters and duplicate removal
url-resolved$0.0005Each saved article whose publisher URL was found
Example runUnitsCost
The input below (up to 20 articles, URLs on)up to 20 × ($0.002 + $0.0005)up to $0.05
The empty form (25 articles, all URLs found)25 × ($0.002 + $0.0005)$0.0625
1,000 articles with publisher URLs1,000 × ($0.002 + $0.0005)$2.50
1,000 articles, Resolve publisher URLs off1,000 × $0.002$2.00

What you get

Input

Set the run options in the Apify console, or send the same object through the API.

{
  "queries": [
    "openai"
  ],
  "dateFrom": "24 hours",
  "maxArticlesPerQuery": 20
}

News about OpenAI from the last 24 hours in the default US:en edition, up to 20 articles. A run takes up to 100 queries, 50 topics and 20 editions, and at most 500 feeds.

Output

{
  "title": "Commission turns to artificial intelligence to write better laws",
  "source": "POLITICO.eu",
  "publishedAt": "2026-11-04T12:04:00.000Z",
  "publisherUrl": "https://www.politico.eu/article/commission-turns-to-artificial-intelligence-to-write-better-laws/",
  "publisherDomain": "politico.eu",
  "sourceUrl": "https://www.politico.eu",
  "googleNewsUrl": "https://news.google.com/rss/articles/CBMingFBVV95cUxQdHBzLUluelV6TG1RVkNCVWFjb0lw...?oc=5",
  "articleId": "CBMingFBVV95cUxQdHBzLUluelV6TG1RVkNCVWFjb0lw...",
  "resolveStatus": "resolved",
  "resolveError": null,
  "relatedArticles": [],
  "relatedCount": 0,
  "feedType": "search",
  "query": "artificial intelligence",
  "topic": null,
  "edition": "US:en",
  "language": "en-US",
  "country": "US",
  "rank": 1,
  "scrapedAt": "2026-11-05T14:10:47.420Z"
}

One real row from a run on Apify on 2026-11-05 with the empty form, with the long Google IDs trimmed. resolveStatus is resolved, failed, skipped or off, and resolveError says why publisherUrl is null.

Run it from your own code

The Actor takes the same input as a JSON body. This call starts a run, waits for it and returns the dataset items.

curl -X POST "https://api.apify.com/v2/acts/zovo-one~google-news-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["openai"], "dateFrom": "24 hours", "maxArticlesPerQuery": 20}'

A sync call waits at most 300 seconds. For longer runs, start a run with POST /v2/acts/zovo-one~google-news-scraper/runs, wait for it, then read /v2/datasets/<defaultDatasetId>/items.

Limits

A run takes up to 100 queries, 50 topics and 20 editions, and at most 500 feeds. Search feeds hold at most 100 articles per request and topic feeds about 30 to 100. Day-by-day search covers at most the newest 400 days of a range per query, and a run reads at most 5,000 feed pages. Google News RSS has no article text, snippet, image or author, so the rows have none either. URL resolution depends on Google's current page format and lookup call; if Google changes them, rows still save with resolveStatus: "failed" and aren't charged as url-resolved. Duplicate removal works inside one run, so a scheduled run doesn't know what the previous run saved.

Questions

How do I get the real article URL from a Google News link?

Run the Actor with "Resolve publisher URLs" on, which is the default. Older Google article IDs contain the publisher URL and are decoded with no request. Current IDs need two steps, the article's Google page and Google's own URL lookup, about 1.1 requests per article. The result lands in publisherUrl.

Can I get more than 100 results for one search?

Yes. Set "Max articles per query or topic" above 100 (up to 5,000) and each search is read one US Pacific day at a time, newest day first, back to "From date" or up to 365 days. It stops early after 30 days in a row where Google had nothing new (60 days when "From date" is set). If one day alone has 100 results, the run report lists that day under fullDays, and a narrower query gets the rest.

Can I get only the Google links?

Yes. Turn off "Resolve publisher URLs". Each article then costs $0.002 and the run is faster.

How do I monitor a topic every hour without paying twice?

Schedule the Actor in Apify and set "From date" a bit wider than the interval, for example 2 hours for an hourly schedule. Duplicate removal only works inside one run, so drop the few repeats by articleId on your side.

Can I get the full article text?

Not from this Actor, because Google News feeds don't contain it. Pass publisherUrl to a page fetcher such as Web Fetch to Markdown to get the text.

What happens when Google blocks a run?

By default the Actor connects directly. If Google keeps blocking your runs, turn on Apify Proxy (datacenter). After 5 failed URL resolutions in a row, the rest of the run skips resolution, and articles are still saved with resolveStatus: "skipped" and aren't charged as url-resolved. After 3 feeds in a row fail because of the connection, the run stops and the remaining feeds are marked skipped.

Support this work

If this Actor saves you time, you can support the work on GitHub Sponsors. Monthly tiers start at $5, and one-time tiers start at $15. Sponsorship is optional, and the tool works the same without it.

Built and maintained by Zovo. Actor on Apify · All Actors.