How to Scrape Google News in Python (No API Key Required)
Google killed its News API in 2013. Learn how to pull headlines, sources, and publication dates from Google News in Python using the RSS feed, the GNews approach, and a pay-per-result scraper.
The actor referenced in this article. Pay only for results delivered.
Google News aggregates headlines from thousands of publishers worldwide. Getting that data programmatically has been unnecessarily hard since Google retired its News API in 2013. Here are the working approaches in 2025.
Option 1: Google News RSS feed
Google News provides a free RSS feed per search query. No API key needed.
import feedparser
import urllib.parse
def search_google_news(query, language='en', country='US', max_results=100):
encoded = urllib.parse.quote(query)
url = f"https://news.google.com/rss/search?q={encoded}&hl={language}-{country}&gl={country}&ceid={country}:{language}"
feed = feedparser.parse(url)
results = []
for entry in feed.entries[:max_results]:
results.append({
'title': entry.title,
'link': entry.link,
'published': entry.published,
'source': entry.get('source', {}).get('title', ''),
'summary': entry.summary,
})
return results
articles = search_google_news('artificial intelligence regulation 2025')
for a in articles[:5]:
print(a['title'], '-', a['source'])
Limitation: RSS is capped at 100 results and the article URLs are Google redirect URLs, not the original publisher URL. Decoding them requires an extra step.
Option 2: GNews Python library
GNews wraps the RSS feed and decodes the redirect URLs:
pip install gnews
from gnews import GNews
google_news = GNews(language='en', country='US', max_results=100)
articles = google_news.get_news('OpenAI GPT-5')
for article in articles:
print(article['title'])
print(article['url']) # decoded original URL
print(article['published date'])
print(article['publisher'])
Still capped at 100 results per query and subject to the same rate limits as direct RSS access.
Option 3: Apify actor for scale
When you need more than 100 results, multiple queries on a schedule, or consistent delivery without rate limits, use the Google News Scraper:
import apify_client
client = apify_client.ApifyClient('YOUR_APIFY_TOKEN')
run_input = {
"query": "Nvidia earnings Q2 2025",
"language": "en",
"country": "US",
"maxResults": 500,
"dateRange": "1d", # last 24 hours
}
run = client.actor('themineworks/google-news').call(run_input=run_input)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['title'])
print(item['url'])
print(item['source'], item['published_at'])
Scheduling for media monitoring
Set up a daily or hourly run via Apify Scheduler to track mentions of your brand, competitors, or industry keywords. Results push to a dataset you can query via API or connect to a Google Sheet.
# Webhook example: receive new articles via POST to your endpoint
# Configure in Apify console under Actor > Integrations > Webhooks
Filtering by publisher
The RSS approach does not support publisher filtering natively. You can filter post-retrieval:
tier_one_sources = {'BBC', 'Reuters', 'Associated Press', 'Bloomberg', 'Financial Times'}
filtered = [a for a in articles if a['source'] in tier_one_sources]
Pricing
Pay per article returned. Zero charge on empty searches.
Explore the scraper referenced in this article — see inputs, outputs, and pricing, then run it on Apify.
Frequently asked questions
Is there a Google News API? +
Google shut down the official Google News API in 2013. Options today are the Google News RSS feed, Programmable Search Engine, or a scraper.
Can I use the Google News RSS feed for free? +
Yes. Google News RSS is free and requires no API key. It is limited to 100 results per query and does not support full pagination.
What is the GNews library? +
GNews is a Python library that wraps the Google News RSS feed and handles URL decoding. It is the most popular open-source option but is limited to 100 results per search.
How to Scrape CutShort Jobs for India Tech Hiring Data (No API)
CutShort is where Indian startups post engineering and product roles, and it has no public jobs API. Learn how to extract titles, companies, salary ranges, skills, and experience bands as structured JSON for recruiting feeds and talent market research.
Airbnb Scraper: Listing Prices, Ratings, and Availability Without the API
Airbnb has no public listings API. Here's how to pull nightly price, rating, superhost status and coordinates from Airbnb search results using Python.
Maps Leads: Verified Email Extraction from Google Maps Business Listings
How to pull B2B leads from Google Maps with MX-verified emails, past the official API's 120-result cap, and pay only for contactable businesses.