GOOGLE SHEETS • STOCK DATA
How to Track Stock Prices in Google Sheets with GOOGLEFINANCE
The GOOGLEFINANCE function can return current or historical securities information directly in Google Sheets. With a clean ticker column and a few formulas, you can build a practical price table without copying quotes by hand.
This guide explains the syntax, exchange-qualified tickers, useful attributes, historical arrays, error handling and the important data limitations to document before using the results.
1. What the GOOGLEFINANCE function does
GOOGLEFINANCE is a Google Sheets function that fetches current or historical securities information from Google Finance. Its documented syntax is:
=GOOGLEFINANCE(ticker, [attribute], [start_date], [end_date|num_days], [interval])
The ticker is required. The other arguments depend on whether you want a current value in one cell or a historical series that expands into several cells.
One value per formula
Request an attribute such as price, name, currency, daily change or market capitalization. The result normally occupies one cell.
An expanding array
Add dates and an interval to return headers plus a date-and-value series. Neighboring cells must be empty so the result can expand.
Google recommends including both the exchange and ticker, such as NASDAQ:GOOG, instead of relying on the function to guess the exchange. This reduces ambiguity when similar symbols exist in several markets.
2. Build a clean stock price table
Create a tab called Prices. Keep manually entered identifiers separate from fetched data and calculated portfolio values.
| Column | Field | Example or formula |
|---|---|---|
| A | Exchange-qualified ticker | NASDAQ:GOOG |
| B | Security name | =GOOGLEFINANCE(A2,"name") |
| C | Currency | =GOOGLEFINANCE(A2,"currency") |
| D | Price | =GOOGLEFINANCE(A2,"price") |
| E | Quantity | Manual input or linked holdings total |
| F | Position value | =IFERROR(D2*E2,"") |
| G | Checked at | Manual review timestamp |
Do not type a ticker, quantity and formula into the same field. A simple input/output separation makes errors easier to audit. Store the exchange in the ticker itself, and keep the returned currency visible before adding values across markets.
If your transactions, cash and account boundaries are not organized yet, start with our investment portfolio tracking guide. The live-price table should support a holdings ledger, not replace one.
3. Get current stock data in Google Sheets
The shortest formula returns the default price attribute:
=GOOGLEFINANCE("NASDAQ:GOOG")
For a reusable table, reference the ticker cell and state the attribute explicitly:
=GOOGLEFINANCE(A2,"price")
Copy the formula down beside your ticker list. You can request other documented real-time attributes in separate columns:
| Attribute | Purpose | Formula |
|---|---|---|
name | Security name | =GOOGLEFINANCE(A2,"name") |
currency | Trading currency | =GOOGLEFINANCE(A2,"currency") |
price | Current quoted price | =GOOGLEFINANCE(A2,"price") |
closeyest | Previous trading day’s closing price | =GOOGLEFINANCE(A2,"closeyest") |
change | Price change since the previous close | =GOOGLEFINANCE(A2,"change") |
changepct | Percentage change since the previous close | =GOOGLEFINANCE(A2,"changepct") |
volume | Current day’s trading volume | =GOOGLEFINANCE(A2,"volume") |
Some attributes are unavailable for some securities. Treat an empty result or error as a data-quality issue to review—not as a zero.
4. Import historical stock prices
Add a start date and end date to request a historical series:
=GOOGLEFINANCE(A2,"close",DATE(2026,8,1),DATE(2026,8,31),"DAILY")
The result expands into two columns with headers: date and closing price. Put the formula in a clear area or a separate History tab. If another value blocks the output range, Sheets will return an array expansion error.
For a rolling 30-day series:
=GOOGLEFINANCE(A2,"close",TODAY()-30,TODAY(),"DAILY")
Google documents DAILY and WEEKLY as the supported intervals. When dates are included, only historical attributes are allowed. Common historical fields include open, close, high, low and volume.
Historical dates are treated as noon UTC by Google. Exchanges that close before that time may appear shifted by a day. Keep that behavior in mind when matching the array to a broker statement or another price source.
5. GOOGLEFINANCE formula builder
Choose a ticker and attribute to generate a copy-ready formula. This builder does not fetch market data; it only assembles the syntax.
6. Turn fetched prices into portfolio values
Once the price and quantity are available, position value is simple:
=IFERROR(D2*E2,"")
Use a blank or a clear review label when the quote fails. Do not silently replace a missing price with zero because that will understate the total portfolio value and distort allocation.
Calculate the total with:
=SUM(F2:F20)
Then calculate each position weight:
=IFERROR(F2/SUM($F$2:$F$20),0)
Format the result as Percentage. If you maintain target weights, continue with our portfolio allocation drift guide to compare current weights with targets and calculate dollar gaps.
Price movement is only one part of a portfolio record. Purchases, sales, dividends, fees, taxes, cash and currency conversion still require a transaction structure. A fetched quote should not overwrite the historical price actually used for a trade.
7. Fix common GOOGLEFINANCE errors
| Problem | Likely cause | What to check |
|---|---|---|
#N/A | Unsupported symbol, exchange or attribute | Use an exchange-qualified ticker and test price first |
#VALUE! | Malformed argument or invalid date | Check quotation marks, commas and real date values |
| Array was not expanded | Historical output cells are occupied | Clear the rows and columns beside the formula |
| Wrong security | The exchange was omitted | Use a ticker such as NASDAQ:GOOG, not only GOOG |
| Price differs from broker | Delay, currency, session or source difference | Compare timestamp, exchange, currency and market status |
| Historical row looks shifted | Google’s noon-UTC date handling | Compare the returned date with the exchange calendar |
A readable error wrapper can keep a dashboard tidy:
=IFERROR(GOOGLEFINANCE(A2,"price"),"Check ticker or data availability")
Do not convert every error to zero. A text warning preserves the distinction between a security worth zero and a quote that could not be retrieved.
8. GOOGLEFINANCE limitations to document
Before relying on the function, record these limitations from Google’s documentation:
- Quotes are not sourced from every market and may be delayed by up to 20 minutes.
- The function is available only in English and does not support most international exchanges.
- Some attributes do not return data for every symbol.
- Historical arrays cannot be downloaded through the Sheets API or Apps Script; Google says those attempts return
#N/A. - The information is supplied “as is” for informational purposes and not for trading or advice.
- Professional use may be subject to additional data-provider licensing restrictions.
For a personal review sheet, include a Last reviewed field and reconcile important positions with the broker statement. For orders, tax reporting, official valuations or professional workflows, use an appropriate licensed source.
Prefer a ready-made stock tracker?
You can build the formulas above yourself. If you want a structured workbook for stock transactions, holdings, profit and loss, dividends and portfolio review, browse our Investment Portfolio Trackers collection.
Stock Portfolio Tracker
Track purchases and sales, transaction fees, realized and unrealized profit and loss, dividends, historical performance and multiple currencies.
View Stock Portfolio TrackerETF & Index Fund Tracker
Organize ETF and index-fund holdings across accounts and currencies, review allocation, cash and dividend information, and monitor portfolio drift.
View ETF & Index Fund TrackerThe product pages specify Microsoft 365 for Excel files or a Google account for Google Sheets. Mobile editing may be limited. This guide demonstrates a separate DIY GOOGLEFINANCE workflow and does not claim that every product uses these exact formulas.
GOOGLEFINANCE in Google Sheets: FAQ
How do I get a stock price in Google Sheets?
Use =GOOGLEFINANCE("EXCHANGE:TICKER","price"). Google recommends including the exchange for accuracy, for example NASDAQ:GOOG.
Is GOOGLEFINANCE real time?
Google describes current results as real-time values but warns that quotes may be delayed by up to 20 minutes and are not sourced from every market. Do not use the function as an execution price.
Can GOOGLEFINANCE return historical prices?
Yes. Add a historical attribute, start date, end date or number of days, and a DAILY or WEEKLY interval. The result expands into an array with headers.
Why does GOOGLEFINANCE show #N/A?
The symbol, exchange or attribute may be unsupported, or the request may violate a limitation such as accessing historical data through Apps Script. Test an exchange-qualified ticker with the price attribute first.
Does GOOGLEFINANCE support every international exchange?
No. Google explicitly says that most international exchanges are not supported. Check the exact ticker and maintain a fallback source for unsupported holdings.
Can I use GOOGLEFINANCE in Excel?
No. GOOGLEFINANCE is specific to Google Sheets. Excel has different linked data types and data tools. Do not paste a GOOGLEFINANCE formula into Excel and expect it to calculate.