Skip to content

How to Get Bitcoin & Crypto Prices in Google Sheets (2026)

By CoinTable Team · · 12 min read

To get the Bitcoin price in Google Sheets, install CoinTable, a Google Sheets add-on for cryptocurrency prices, and type =COINTABLE("BTC") in any cell. Change the ticker to get any of 10,000+ coins, and write a pair like "BTC/EUR" if you want euros, pounds or any of 63 currencies. If you'd rather install nothing, =GOOGLEFINANCE("CURRENCY:BTCUSD") works for Bitcoin and 16 other large coins, and there are free one-liners for the rest, each with a catch.

=COINTABLE("BTC")
=COINTABLE("BTC/EUR")
=COINTABLE("SOL")

This page covers the Bitcoin formulas, a ticker table for the coins people ask about most, altcoins, an honest comparison of every other way to do it, and what to try when a formula shows #N/A. The full syntax, with all 20 attributes, lives in the COINTABLE reference.

Bitcoin price in Google Sheets: install and first formula

Install it (about a minute)

  1. Open the CoinTable listing on Google Workspace Marketplace and click Install.
  2. Choose your Google account and approve the permissions. The FAQ at the bottom lists each one and what it's for.
  3. Open a spreadsheet. If it was already open, reload the tab so the add-on shows up under Extensions.
  4. Type =COINTABLE("BTC") in a cell. In a spreadsheet where CoinTable hasn't run yet, the cell may ask you to start it once from Extensions → CoinTable. Do that and the price appears.

No signup, no API key to paste, no card. Google's consent screen is the slowest part.

Every Bitcoin formula

The pattern never changes: the ticker in quotes, then the attribute you want. For another currency, write a pair like "BTC/EUR"; rank, supply and name need no currency.

FormulaReturns
=COINTABLE("BTC")Price in USD
=COINTABLE("BTC/EUR")Price in euros (GBP, JPY, CHF, AUD, CAD, BRL and more work the same way)
=COINTABLE("BTC", "changepct")% change over 24 hours
=COINTABLE("BTC", "changepct", "7d")% change over 7 days ("1h", "30d" and "1y" also work; periods other than 24h may need Plus)
=COINTABLE("BTC", "high") / =COINTABLE("BTC", "low")24-hour high and low
=COINTABLE("BTC", "marketcap")Market cap
=COINTABLE("BTC", "volume")24-hour trading volume
=COINTABLE("BTC", "rank")Rank by market cap
=COINTABLE("BTC", "supply")Circulating supply
=COINTABLE("BTC", "ath")All-time high price
=COINTABLE("BTC", "athchangepct")% distance from the all-time high
=COINTABLE("BTC", "price", DATE(2026,6,30))Price on June 30, 2026 (Plus, within the last year)

One formatting trap: "changepct" and "athchangepct" return the percentage as a plain number, so -1.8 means down 1.8%. Apply the Percent format and you'll see -180%. Use a custom format like 0.00"%" instead, or divide by 100.

What your Bitcoin is worth

Say you hold 0.5 BTC (in B2) bought at an average of $45,000 (in B3). Three formulas tell you where you stand:

=COINTABLE("BTC")*B2
=COINTABLE("BTC")*B2 - B2*B3
=(COINTABLE("BTC")*B2 - B2*B3) / (B2*B3)

Current value, profit in dollars, profit as a fraction you can format as a percent. Refresh updates all three, math and all.

Once you're tracking more than one coin, cost basis and DCA buys get fiddly fast. The crypto portfolio tracker for Google Sheets has a ready-made template with average cost and P&L already wired up.

How far the free plan goes

The Free plan includes 300 updates a month, reset on the 1st (UTC). An update is one coin in one currency. Every field of that coin in that currency counts once, and the same coin again within 6 hours is free. Errors use no updates. So the Bitcoin sheet above uses 2 updates per refresh: one for BTC in dollars, one for BTC in euros. A tracker of 10 coins in USD uses 10, so Free's 300 cover one refresh a day for a month. If you want fresh numbers several times a day across a bigger sheet, that's what Plus is for. The limits page has the exact rules.

Coin ticker table: Bitcoin, Ethereum, Solana, XRP, Cardano and more

CoinTable takes the ticker you'd see on any exchange. The last column is the built-in alternative: we ran =GOOGLEFINANCE("CURRENCY:<ticker>USD") on the top 30 coins on October 15, 2026, and it returned a price for 17 of them and #N/A for the other 13.

CoinTickerCoinTable formulaGOOGLEFINANCE (tested Oct 15, 2026)
BitcoinBTC=COINTABLE("BTC")Works
EthereumETH=COINTABLE("ETH")Works
TetherUSDT=COINTABLE("USDT")#N/A
XRPXRP=COINTABLE("XRP")Works
BNBBNB=COINTABLE("BNB")Works
SolanaSOL=COINTABLE("SOL")Works
USD CoinUSDC=COINTABLE("USDC")#N/A
DogecoinDOGE=COINTABLE("DOGE")#N/A
TRONTRX=COINTABLE("TRX")#N/A
CardanoADA=COINTABLE("ADA")Works
ChainlinkLINK=COINTABLE("LINK")#N/A
AvalancheAVAX=COINTABLE("AVAX")#N/A
SuiSUI=COINTABLE("SUI")Works
LitecoinLTC=COINTABLE("LTC")Works
Shiba InuSHIB=COINTABLE("SHIB")#N/A
PolkadotDOT=COINTABLE("DOT")Works
PepePEPE=COINTABLE("PEPE")#N/A
PolygonPOL=COINTABLE("POL")Works

The full list of 17 that worked: BTC, ETH, XRP, BNB, SOL, ADA, XLM, SUI, LTC, DOT, BCH, UNI, XMR, APT, ICP, ETC and POL. Two details trip people up. The short form without CURRENCY:, like =GOOGLEFINANCE("SOLUSD"), worked only for BTC, ETH and BCH. And the long form works with other currencies too: CURRENCY:BTCEUR returned a price. Google's GOOGLEFINANCE help page also warns that quotes may be delayed by up to 20 minutes. The full test, plus why a working formula can suddenly stop updating, is in GOOGLEFINANCE crypto limitations.

Ethereum: price, ETH/BTC and staking value

=COINTABLE("ETH")
=COINTABLE("ETH/BTC")

The second one prices ETH in bitcoin instead of dollars. A pair can end in BTC or ETH as well as fiat, which makes it the easiest way to see whether a coin is gaining or losing ground against Bitcoin. =COINTABLE("SOL/BTC") works the same way.

Ethereum tends to sit in more places than other coins: a hardware wallet, an exchange, a validator or a liquid staking position. A spreadsheet is the one place where all of it adds up. Two ETH-specific rows are worth adding:

  • Staking income estimate. With 32 staked ETH in B2 and the current APR in B3 (say 0.035), =COINTABLE("ETH")*B2*B3 gives a rough yearly income in dollars. Update B3 when the rate moves.
  • Supply. =COINTABLE("ETH", "supply") shows circulating supply. Since the 2022 switch to proof of stake, issuance dropped and part of every fee is burned, so in busy weeks supply can actually shrink. Paste the value into a log tab once a week if you want to watch the trend.

Altcoin prices: Solana, Avalanche and the long tail

This is where the built-in options fall apart. GOOGLEFINANCE gives you nothing for AVAX, LINK, DOGE or PEPE, and the free one-liners only give you a price. With CoinTable, every coin gets the same 20 attributes, and you can drive them from a ticker column instead of hard-coding each one.

Put tickers in column A, starting at A2, and these in B2 to E2:

=COINTABLE(A2)
=COINTABLE(A2, "changepct")
=COINTABLE(A2, "marketcap")
=COINTABLE(A2, "rank")

Drag them down and you have a watchlist. Add a row, type a ticker, done. For prices only, =COINTABLE(A2:A20) in B2 fills the whole column at once. A few starting points beyond the majors:

CategoryCoins
Layer 1SOL, AVAX, ADA, DOT, NEAR, SUI, APT
Layer 2ARB, OP, POL
DeFiUNI, AAVE, LDO, LINK
AIRENDER, FET
MemeDOGE, SHIB, PEPE
StablecoinsUSDT, USDC (both should sit near $1, which makes a nice sanity check)

Meme coins are where the free endpoints get awkward, because their prices are tiny. =COINTABLE("PEPE") returns a number you can multiply by your holdings. Format the cell with enough decimals (0.00000000) or it will look like zero.

Altcoin watchlist in Google Sheets: price, 24h change, market cap and rank for SOL, AVAX, ADA, LINK, UNI, DOGE, SHIB, PEPE and USDT
The ticker column drives every formula. SHIB and PEPE use the format $0.00000000 so they don't round to zero. Values as of October 16, 2026.

Altcoin vs Bitcoin, at a glance

To see which coins beat Bitcoin today, put =COINTABLE("BTC", "changepct") in a fixed cell, say G1, and next to each coin:

=COINTABLE(A2, "changepct") - $G$1

Positive means the coin outperformed BTC over 24 hours. Keeping BTC's change in one cell keeps every row short, and a refresh updates G1 along with the rest.

Ticker gotchas

  • Use the ticker, not the name. "SOL" works, "solana" gets looked up as a ticker and fails or finds something else.
  • Shared tickers. A few small coins use the same symbol. CoinTable picks the one ranked highest for that ticker, which is usually the one you meant.
  • Renamed coins. When a project changes its ticker (MATIC became POL), the old one may stop working or point somewhere else. Update the cell.
  • Wrapped coins have their own ticker. Wrapped Bitcoin is WBTC, priced separately from BTC.
  • Brand-new listings can take a few days to show up.

Check the math on a watchlist before you go wide. Ten coins with four columns is 10 updates per refresh, because the columns of one coin share its update. The free 300 cover one refresh a day for a month. Add the columns you want, and move to Plus if you check several times a day.

Free one-liners and other add-ons: what each can and can't do

Short version: if you need one Bitcoin price and nothing else, a free one-liner is fine. The trouble starts when you need altcoins, more than price, or a sheet that keeps working next month.

MethodSetupKey or signupCoinsWhat it returnsWhere it breaks
GOOGLEFINANCE("CURRENCY:BTCUSD")NoneNo17 of the top 30 (Oct 15, 2026 test)Price; past dates for those pairs#N/A for the rest; delays up to 20 min
IMPORTDATA from cryptoprices.ccNoneNoMost tickersPrice onlyCached about 30 min; tiny prices as text; outages
IMPORTXML scraping a price site5–10 minNoWhatever the page showsAnything visible on the pageEvery site redesign; "Could not fetch url"
Apps Script + a crypto API15–30 minUsually an API keyDepends on the APIAnything the API returnsRate limits; you maintain the code
CoinTableAbout 1 minNo signup, no key to paste10,000+One formula, 20 attributes, 63 currencies300 free updates a month; Google Sheets only; past dates on Plus, up to a year back
CoinGecko for Sheets5–10 minDemo or Pro API keyVery largePrice, past dates, top-N lists, on-chain, NFT floors429 rate-limit and 403 key errors
CRYPTOFINANCE—Kraken API key——Stopped working after Cryptowatch shut down

GOOGLEFINANCE

Zero setup and it's already in your sheet, which is why it's everyone's first answer. It covers 17 of the top 30 coins, returns price only (no market cap, volume or 24-hour change), and accepts a date for the pairs it covers. If your coins are all on that list and a delay doesn't matter, it's a legitimate choice.

IMPORTDATA from a free endpoint

=IMPORTDATA("https://cryptoprices.cc/BTC")

This is the most popular free answer on Reddit right now, and it does work: no key, no install, plain text back. The catches are real though. You get price only, nothing about daily change. Google's IMPORTDATA results are cached, so expect the number to sit still for around half an hour. Tiny prices arrive in scientific notation (PEPE came back as 3.91e-06 when we checked on October 15, 2026), and depending on your spreadsheet's locale Sheets may keep that as text, so multiplying by your holdings fails. And it's a free service run by someone else: when it goes down, every cell goes with it.

IMPORTXML scraping

=IMPORTXML("https://example.com/price/bitcoin", "//span[@class='price']")

People paste these from old forum threads, and they work until they don't. IMPORTXML reads the page's HTML, so any redesign breaks the XPath. Most big price sites now render prices with JavaScript, which IMPORTXML can't see ("Imported content is empty"), or block Google's servers outright ("Could not fetch url"). Skip it for anything you plan to keep.

Apps Script with an API

The most flexible route: a custom function that calls an exchange or data API with UrlFetchApp. You can get exactly the fields you want. You also own the code, the API key, the rate limits and every breaking change. If you're weighing this for a crypto data API in particular, using the CoinGecko API in Google Sheets without a key walks through the options.

CoinGecko for Sheets

CoinGecko's official add-on gives you a =COINGECKO() function. Its setup guide has you set an API key (Demo or Pro plan) in step 3, so expect to create an account first. In exchange it does things CoinTable doesn't: prices more than a year back, top-N lists, on-chain lookups by contract address, and NFT floor prices. Its docs also cover the 429 (rate limit) and 403 (invalid key) errors you'll meet in larger sheets. If you need older dates or on-chain data, it's the better pick. The detailed side-by-side is in CoinTable vs CoinGecko for Sheets.

CRYPTOFINANCE

Once the default crypto add-on for Sheets. Its data came through Cryptowatch, and after Kraken shut Cryptowatch down, formulas started returning errors and stale numbers. If your old sheet is full of =CRYPTOFINANCE("BTC/USD"), the CRYPTOFINANCE migration guide maps each formula to its CoinTable equivalent.

Cryptosheets and Wisesheets

Both need you to sign up with them before formulas return data, and both also run in Excel, which matters if you live in both. Cryptosheets leans toward traders who want exchange-level and on-chain data. Wisesheets is a stock add-on that added crypto, so it fits if you track both in one sheet.

So which one?

For a single Bitcoin or Ethereum price: GOOGLEFINANCE, no shame in it. For prices more than a year back or on-chain data: CoinGecko for Sheets, and budget a few minutes for the API key. For a sheet of current prices across altcoins, with change, market cap and rank, and nothing to configure: CoinTable. That's the job we built it for.

None of these formulas work? Fixing #N/A and "Could not fetch url"

Start by checking which function the broken cell actually uses. The fix depends on it.

GOOGLEFINANCE shows #N/A. The coin isn't covered. Check the ticker table above: DOGE, AVAX, LINK, SHIB, TRX, PEPE and the stablecoins all failed in our test. Also make sure you're using the CURRENCY: form, since the short SOLUSD style only works for BTC, ETH and BCH. Replacing the cell with =COINTABLE("AVAX") (your ticker) is the quickest way out.

For crypto, you can keep a GOOGLEFINANCE formula and swap the function name: =GOOGLEFINANCE("CURRENCY:BTCEUR") becomes =COINTABLE("CURRENCY:BTCEUR"). Do this only for crypto. COINTABLE reads every ticker as a coin, and some stock and index tickers are also coins: TSLA, META, SPX and GOLD. A stock formula would quietly show a coin's price.

GOOGLEFINANCE("CURRENCY:BTCUSD") isn't updating. It returns a number but the number is old. That's on Google's side, and the GOOGLEFINANCE crypto limitations post covers what to try.

IMPORTXML or IMPORTHTML says "Could not fetch url" or "Imported content is empty". The site is blocking Google's servers or building the price with JavaScript. Nothing on your end fixes that. Switch methods.

IMPORTDATA returns text, or the same number for an hour. That's the cache and the scientific-notation issue from the comparison above. Adding a changing parameter to the URL can force a fresh fetch, but the service may not like you hammering it.

A CoinTable cell shows #ERROR!. Hover over it to read the message:

  • "Coin … not found" means CoinTable doesn't know that ticker. Check the spelling and use the ticker, not the name.
  • "… is a period. Put it 3rd…" means the period ended up in the attribute's place. The period goes third: =COINTABLE("ETH", "changepct", "7d").
  • "CoinTable needs edit access to this spreadsheet" means you only have view access to the file.
  • "No free updates left until …" means this month's 300 are used up. Cells that already had a value keep it, with a small red corner that says when updates come back.

Errors use no updates, so a broken cell costs nothing while you fix it.

CoinTable prices aren't changing.

Prices refresh when you press Refresh in the CoinTable panel. On Plus, they also refresh when an editor opens the file, and every hour if you turn on auto-refresh.

If one particular cell never updates, check its third argument. A price on a past date doesn't change, so Refresh leaves that cell alone. And prices can be up to 30 minutes old on Free and up to 5 minutes on Plus, so two refreshes a minute apart can legitimately show the same price.

Still stuck? Email hi@cointable.pro with the formula exactly as you typed it and what the cell shows.

Frequently asked questions

None of these formulas work / I get #N/A — what now?

Check which function the cell uses. GOOGLEFINANCE returns #N/A for coins it doesn't cover: in our test on October 15, 2026, 13 of the top 30 failed, including DOGE, AVAX, LINK, SHIB, TRX and PEPE, and the short form such as SOLUSD worked only for BTC, ETH and BCH. IMPORTXML shows "Could not fetch url" when a site blocks Google or builds its prices with JavaScript, and nothing on your side fixes that. The quickest working replacement is the CoinTable add-on: install it and type =COINTABLE("AVAX") with your coin's ticker. If a CoinTable cell shows #ERROR!, hover over it to read why; "Coin … not found" means the ticker is wrong.

Is there a free way to get crypto prices in Google Sheets?

Yes, three. GOOGLEFINANCE is built in, but it returned a price for only 17 of the top 30 coins when tested on October 15, 2026. =IMPORTDATA("https://cryptoprices.cc/BTC") needs no key, but it returns the price only and Google caches it for about 30 minutes. CoinTable's Free plan includes 300 updates a month, reset on the 1st (UTC), with all fields, 10,000+ coins and 63 currencies, and no signup, API key or credit card.

How do I get the Solana or Avalanche price in Google Sheets?

With CoinTable installed, type =COINTABLE("SOL") or =COINTABLE("AVAX"). For another currency write a pair, for example =COINTABLE("SOL/EUR"), and use =COINTABLE("AVAX", "changepct") for the 24-hour change. Without an add-on, =GOOGLEFINANCE("CURRENCY:SOLUSD") returned a price in our October 15, 2026 test, but the same formula for AVAX returned #N/A.

Can I get a coin's price on a past date?

Yes, on CoinTable Plus, within the last year: =COINTABLE("BTC", "price", DATE(2026,6,30)) shows Bitcoin's closing price that day in UTC. It works for price only. GOOGLEFINANCE also accepts a date for the coins it covers, for example =GOOGLEFINANCE("CURRENCY:BTCUSD", "price", DATE(2025,12,31)). For older dates on other coins, use a crypto data platform's own Sheets add-on that takes a date (these need an API key), or your exchange's CSV export.

Does it work in Excel?

No. CoinTable is a Google Sheets add-on, and its formulas only run in Google Sheets. In Excel with Microsoft 365, the Currencies data type covers major pairs such as BTC/USD, and add-ins like Cryptosheets and Wisesheets run in Excel after you sign up with them. You can also keep your price sheet in Google Sheets and paste the values into Excel when you need them.

What happens to my formulas if I remove the add-on?

They stop recalculating and show an unknown-function error, because COINTABLE comes from the add-on. To keep the last prices, select the range, copy it and use Paste special → Values only before you uninstall.

Which permissions does the add-on ask for and why?

It asks to see and edit only the spreadsheet it runs in, not your other files; to connect to an external service, which is how it fetches prices; to show its menu and sidebar; to read your spreadsheet's locale; and to create Apps Script triggers for tasks that run on a schedule. Google's consent screen also lists your email address and basic profile because the add-on requests them, but CoinTable's code doesn't read your email. Only each formula's ticker, currency, field and period or date leave Google Sheets, with an anonymous key. Your amounts and the rest of the spreadsheet stay where they are.

All posts