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. Failed and empty results are never charged.
Explore the scraper referenced in this article: 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.
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.
Realtor.com Scraper: Property and Agent Data Without the MLS Paywall
Scrape Realtor.com listings in Python: price, beds, baths, county, and the listing agent + brokerage office on every record. No login, no API key.
Redfin Scraper: For-Sale and Sold Property Data in Python (No API Key)
Scrape Redfin listings by city, ZIP, or URL in Python: price, beds, baths, sqft, agent, MLS status, and coordinates. No login, no browser, no unblocker.
Zillow Property Details API: Zestimate, Tax History, and Agent Data by URL
Pull full Zillow property records by URL or ZPID in Python: price history, tax history, schools, HOA, and agent data the official API never exposed.