Guide to Google News API and Alternatives
Discover how to access Google News after the discontinuation of the Google News API. Explore alternative APIs for extracting insights from news.
In the world of finance and data analytics, having direct access to reliable financial data is essential. Google Finance was once a widely used API for real-time stock data, but it was officially discontinued, creating a demand for alternative ways to access financial information.
In this guide, Covers the history and discontinuation of the Google Finance API, practical alternatives for accessing its data, web scraping methods, and recommended tools for retrieving financial information.
The Google Finance API, once widely used for real-time stock prices, historical data, and company info, was discontinued in 2011. It had allowed users to easily integrate stock data into applications for trading, research, and analysis, leaving a gap for developers and analysts who relied on this free resource.
While Google did not provide specific reasons, the discontinuation was part of a broader shift in Google’s focus away from directly providing financial APIs. This change pushed users to seek other sources or adapt existing tools.
For developers needing more detailed or customized data, web scraping is another way to access Google Finance information. By scraping Google Finance pages, you can retrieve real-time prices, company information, though it requires working within Google’s site terms and handling potential restrictions.
Although there isn’t a direct Google Finance API for Python, you can still access stock data through:
Google Sheets offers a built-in function, GOOGLEFINANCE, which allows users to fetch real-time stock data. While limited compared to a traditional API, it’s straightforward to implement and can integrate with Python via Google Sheets APIs.
Here are some examples of how to use this function within Google Sheets:
Function Example | Description |
---|---|
=GOOGLEFINANCE("AAPL", "price") |
Returns the current price of Apple stock |
=GOOGLEFINANCE("GOOGL", "priceopen") |
Fetches the opening price for Google stock |
=GOOGLEFINANCE("NVDA", "high") |
Retrieves the daily high for Tesla stock |
=GOOGLEFINANCE("AAPL", "all", DATE(2022,1,1), DATE(2023,1,1), "DAILY") |
Provides daily historical data for Apple between specified dates |
You can retrieve data from your Google Sheet and integrate it into Python applications.
This means we can somewhat access this with our automations in Python. Create a formula in a Google Sheet and scrape the results once the cell updates. This can be done using Python gspread package:
# to start:
# pip install gspread
import gspread
import time
# JSON credentials for google service account
# see docs: https://cloud.google.com/iam/docs/service-account-overview
AUTH_FILE = './google-service.auth.json'
def get_stock_price_from_googlefinance(sheet_id, ticker):
"""
Adds a formula to a Google Sheet to get the stock price using GOOGLEFINANCE.
Parameters:
sheet_id (str): The ID of the Google Sheet.
ticker (str): The stock ticker symbol.
Returns:
float: The current stock price.
"""
# Authenticate with Google Sheets
gc = gspread.service_account(filename=AUTH_FILE)
worksheet = gc.open_by_key(sheet_id).sheet1 # Use the first sheet
# Add the GOOGLEFINANCE formula to a specific cell
cell = 'A1'
worksheet.update(
cell,
[[f'=GOOGLEFINANCE("{ticker}", "price")']],
value_input_option='USER_ENTERED', # required to load formula
)
# Wait for the formula to calculate
for _ in range(10): # Retry for up to 10 seconds
value = worksheet.acell(cell).value
try:
return float(value) # Convert to float if valid
except (ValueError, TypeError):
time.sleep(1)
raise TimeoutError("Failed to retrieve the stock price from Google Sheets.")
# Example usage
# Note: Spreadsheet ID can be found in the URL:
# https://docs.google.com/spreadsheets/d/1dCFlfNrijRSgpKczw06OCD82_OPeJctJnBe9w9SAKyo/edit?gid=0#gid=0
sheet_id = "1dCFlfNrijRSgpKczw06OCD82_OPeJctJnBe9w9SAKyo"
ticker = "NVDA"
price = get_stock_price_from_googlefinance(sheet_id, ticker)
print(f"The current price of {ticker} is {price}.")
# will print:
"The current price of NVDA is 141.98."
This works, but it's not the most efficient way to get this data. It's a bit slow and can be rate limited and unstable. For better results, we can scrape the google finance web page directly. Let's take a look at that next.
Let's take a look at some Google Finance scraping examples using Python's requests and BeautifulSoup libraries which can be installed using pip
:
$ pip install requests beautifulsoup4
Scraping ticker data allows you to gather essential stock information like stock price, company name and changes:
import requests
from bs4 import BeautifulSoup
# URL for Google Finance main page
url = "https://www.google.com/finance/?hl=en"
# Fetch the page content
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(response.text, "html.parser")
# Find the stock summary sections
stocks = soup.find_all("div", class_="SxcTic")
# Extract and print stock details
for stock in stocks:
def get_text(class_name):
element = stock.find("div", class_=class_name)
return element.text if element else "N/A"
stock_data = {
"ticker": get_text("COaKTb"),
"company_name": get_text("ZvmM7"),
"price": get_text("YMlKec"),
"price_change": get_text("JwB6zf"),
}
print(stock_data)
{'ticker': 'AMZN', 'company_name': 'Amazon.com Inc', 'price': '$214.10', 'price_change': '2.48%'}
{'ticker': 'BLS', 'company_name': 'BLS International Services Ltd', 'price': '₹389.15', 'price_change': '1.31%'}
{'ticker': 'IDHC', 'company_name': 'Integrated Diagnostics Holdings PLC', 'price': '$0.42', 'price_change': '1.06%'}
{'ticker': 'Index', 'company_name': 'Tadawul All-Share Index', 'price': '11,866.05', 'price_change': '0.54%'}
{'ticker': 'TSLA', 'company_name': 'Tesla Inc', 'price': '$330.24', 'price_change': '0.53%'}
{'ticker': 'AAPL', 'company_name': 'Apple Inc', 'price': '$225.12', 'price_change': '0.40%'}
This code extracts key stock data from Google Finance, including ticker, company name, current price, and daily change.
Scraping financial news is valuable for understanding market trends, tracking company performance, and staying updated on industry developments.
Here’s an example code guide:
import requests
from bs4 import BeautifulSoup
# Define the URL for Google Finance
url = "https://www.google.com/finance/"
# Send a request to the Google Finance page
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(response.text, "html.parser")
# Locate the section containing news articles
news_section = soup.find_all(
"div", {"class": "yY3Lee"}
) # Adjusted class name based on inspection
# Extract and print the titles of top news articles
for article in news_section[:5]: # Limit to top 5 articles
title = article.find("div", {"class": "Yfwt5"}).get_text()
publisher = article.find("div", {"class": "sfyJob"}).get_text()
date = article.find("div", {"class": "Adak"}).get_text()
link = article.find("a", href=True)
print({"Title": title, "Publisher": publisher, "Date": date, "Link": link})
{'Title': 'Solar modules now selling for less than €0.06/W in Europe', 'Publisher': 'pv magazine International', 'Date': '1 day ago'}
{'Title': 'Alstom’s first half 2024/25: good commercial performance, confirmation of \nFY 2024/25 outlook', 'Publisher': 'Alstom', 'Date': '1 day ago'}
{'Title': 'Egypt Opens Up Giant Gas Field For Bidding And Links Arrears Payments To \nProduct', 'Publisher': 'Crude Oil Prices Today | OilPrice.com', 'Date': '1 day ago'}
{'Title': 'The world’s biggest battery maker says Elon Musk’s 4680 cell ‘is going to \nfail’', 'Publisher': 'The Verge', 'Date': '10 hours ago'}
{'Title': 'Toncoin price prediction – TON should beat THIS level to start an uptrend', 'Publisher': 'AMBCrypto', 'Date': '7 hours ago'}{'ticker': 'AAPL', 'company_name': 'Apple Inc', 'price': '$225.12', 'price_change': '0.40%'}
In this output, you can see the headline titles along with the publisher and date of publication.
Without a Google Finance API, there are still numerous reliable platforms for accessing financial data. These alternatives provide diverse data types, from real-time prices to historical financial statements, with various access methods, such as scraping or APIs.
Yahoo Finance is a popular choice for retail investors due to its accessible interface and extensive data coverage. While it doesn't provide an official API, data can still be accessed by scraping or using unofficial APIs like the yfinance library in Python.
You can learn more about Yahoo Finance API in our dedicated article:
Scrapfly makes scraping Google Finance simple and robust. Web scraper logic can quickly outgrow our API. If we're scraping difficult targets that ban scrapers and require complex connections and proxy usage soon our data API will do more scraping than API'ing.
ScrapFly provides web scraping, screenshot, and extraction APIs for data collection at scale.
For example, we could replace our scraper code to use ScrapFly through python sdk:
from scrapfly import ScrapflyClient, ScrapeConfig, ScrapeApiResponse
from bs4 import BeautifulSoup
scrapfly = ScrapflyClient(key="your scrapfly key")
response: ScrapeApiResponse = scrapfly.scrape(ScrapeConfig(
proxy_pool="public_residential_pool",
country="us",
asp=True,
url="https://www.google.com/finance/?hl=en"
))
# response.content is the raw HTML content of the page
soup = BeautifulSoup(response.text, "html.parser")
# Find the stock summary sections
stocks = soup.find_all("div", class_="SxcTic")
# Define stock detail classes to extract
details_classes = {
"ticker": "COaKTb",
"company_name": "ZvmM7",
"price": "YMlKec",
"price_change": "JwB6zf",
}
# Extract and print stock details
for stock in stocks:
stock_data = {
key: (
element.text if (element := stock.find("div", class_=class_name)) else "N/A"
)
for key, class_name in details_classes.items()
}
print(stock_data)
To wrap up this guide, here are answers to some frequently asked questions about google finance APIs.
No, Google discontinued its API for Google Finance. Users can access data through Google Sheets or by scraping Google Finance web pages.
Yes, Yahoo Finance is a popular alternative that provides comprehensive stock data, including real-time prices, historical data, and financial news.
Always consult the terms of service of the site you wish to scrape. Web scraping should respect legal guidelines and avoid excessive server requests.
While the official Google Finance API is no longer available, developers can still access valuable financial data by leveraging Google Sheets, web scraping techniques, and alternative APIs. By combining these methods, you can continue to retrieve real-time stock prices, news, and historical data, enriching your financial data applications. Tools like ScrapFly further simplify scraping processes, allowing you to build resilient and scalable data solutions.