How to Get Crypto Prices in Google Sheets
TL;DR
There are 3 ways to get crypto prices in Google Sheets: the CoinTable add-on (recommended — no API key, 30-second setup), IMPORTDATA with public APIs, and Google Apps Script. CoinTable is the fastest: install it, type =CT_PRICE("BTC"), done.
Why Track Crypto Prices in Google Sheets?
Google Sheets is the go-to tool for crypto investors who want full control over their data. Unlike portfolio apps, a spreadsheet gives you:
- Complete privacy — your holdings stay in your spreadsheet, not on someone else's server
- Custom calculations — build your own formulas for profit/loss, DCA tracking, tax reporting
- Free and flexible — no subscription required for the spreadsheet itself
- Shareable — collaborate with partners or accountants without giving app access
The challenge? Getting live crypto prices into your cells. Manually copying prices from CoinGecko or CoinMarketCap is tedious and error-prone.
This guide shows you three methods to get live cryptocurrency prices in Google Sheets, from the easiest (30 seconds) to the most technical (30+ minutes).
Method 1: CoinTable Add-on (Recommended)
CoinTable is a Google Sheets add-on that gives you live crypto prices with simple formulas. No API keys, no coding, no configuration.
Step 1: Install CoinTable
- Open your Google Sheet
- Go to Extensions → Add-ons → Get add-ons
- Search for "CoinTable"
- Click Install and grant permissions
That's it. No account creation, no API key, no setup wizard.
Step 2: Use Your First Formula
Type this in any cell:
=CT_PRICE("BTC")
Press Enter. You'll see the current Bitcoin price in USD.
Want it in euros? Add a second argument:
=CT_PRICE("BTC", "EUR")
Need Ethereum? Solana? Any of 10,000+ tokens?
=CT_PRICE("ETH")
=CT_PRICE("SOL")
=CT_PRICE("DOGE")
Step 3: Explore More Formulas
CoinTable offers more than just prices. Build a complete crypto dashboard:
=CT_PRICE("BTC") → Current price
=CT_CHANGE("BTC") → 24h price change (%)
=CT_MARKETCAP("BTC") → Market capitalization
=CT_VOLUME("BTC") → 24h trading volume
=CT_RANK("BTC") → Market cap rank
=CT_SUPPLY("BTC") → Circulating supply
=CT_ATH("BTC") → All-time high price
=CT_HIGH("BTC") → 24h high
=CT_LOW("BTC") → 24h low
Every formula supports 50+ fiat currencies as a second argument. Use "USD", "EUR", "GBP", "JPY", and more.
Why CoinTable?
- 30-second setup — install and start using immediately
- No API key — works out of the box
- 10,000+ cryptocurrencies — from Bitcoin to the newest DeFi tokens
- 50+ fiat currencies — prices in any currency you need
- Privacy-first — CoinTable only reads cells with its formulas
- Free tier — 500 requests per month at no cost
Method 2: IMPORTDATA with Public APIs
If you prefer not to install an add-on, you can use Google Sheets' built-in IMPORTDATA function with a public crypto API.
How It Works
The IMPORTDATA function fetches data from a URL and displays it in your spreadsheet. You can point it at a public crypto API:
=IMPORTDATA("https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd")
This returns raw JSON data. To extract just the price, you'll need to combine it with other functions or use IMPORTJSON (a custom script).
A simpler approach uses CoinGecko's CSV-compatible endpoint, but these change frequently and may break without notice.
Limitations of IMPORTDATA
- Rate limits — public APIs restrict how many requests you can make (CoinGecko free tier: 5-15 calls/minute)
- No guaranteed uptime — API endpoints can change or go offline
- Complex formulas — parsing JSON in Sheets requires workarounds
- Limited coins — free API tiers support fewer cryptocurrencies
- No support — if something breaks, you're on your own
- Caching issues — Google Sheets caches IMPORTDATA results unpredictably
For a single Bitcoin price check, IMPORTDATA works. For a portfolio tracker with 20+ coins, the rate limits and complexity make it impractical.
Method 3: Google Apps Script
Google Apps Script lets you write custom JavaScript functions that run inside Google Sheets. You can create a custom function that fetches crypto prices from any API.
How It Works
- Open your Google Sheet
- Go to Extensions → Apps Script
- Replace the code with:
function CRYPTO_PRICE(symbol) {
const url = `https://api.coingecko.com/api/v3/simple/price?ids=${symbol}&vs_currencies=usd`;
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());
return data[symbol]?.usd || "Not found";
}- Save the script (Ctrl+S)
- Go back to your sheet and use:
=CRYPTO_PRICE("bitcoin")
Note that CoinGecko's API uses full names (e.g., "bitcoin" not "BTC"), which adds friction compared to CoinTable's ticker-based approach.
When to Use This Method
Apps Script is best when:
- You need custom data processing (e.g., averaging prices from multiple exchanges)
- You're comfortable with JavaScript
- You want to build complex automations (e.g., email alerts when prices change)
- You're already using Apps Script for other purposes
For most users, the development time (30+ minutes to get a basic script working, hours for a robust one) doesn't justify the effort when CoinTable provides the same data with zero code.
Comparison: Which Method Is Best?
| Feature | CoinTable | IMPORTDATA | Apps Script |
|---|---|---|---|
| Setup time | 30 seconds | 5–10 minutes | 30+ minutes |
| API key required | No | Usually | Yes |
| Supported coins | 10,000+ | Depends on API | Depends on API |
| Reliability | High (managed) | Low (API changes) | Medium (self-maintained) |
| Coding required | None | None | JavaScript |
| Free tier | 500 req/month | Varies | Varies |
| Fiat currencies | 50+ | Limited | Limited |
| Support | Yes | None | None |
For most users, CoinTable is the clear winner. It combines the easiest setup with the most comprehensive data coverage. The only reason to use IMPORTDATA or Apps Script is if you have very specific technical requirements that CoinTable doesn't cover.
How to Refresh Your Crypto Data
All three methods cache data differently:
- CoinTable: Prices update when you refresh. Use the CoinTable menu or press Ctrl+Shift+F9 to refresh all formulas.
- IMPORTDATA: Google caches results for up to 1 hour. Force refresh by adding a dummy parameter:
=IMPORTDATA(url & "&t=" & NOW()) - Apps Script: Results cache for up to 6 hours by default. Add
SpreadsheetApp.flush()in your script to force updates.
CoinTable Plus subscribers get auto-refresh, so your prices stay current without manual intervention.
Troubleshooting
"Loading..." appears in cells
Give it a few seconds. If using CoinTable, try Extensions → CoinTable → Refresh Prices. For IMPORTDATA, check that the API URL is correct and accessible.
"#ERROR!" in cells
Common causes:
- CoinTable: Check your monthly request limit in Extensions → CoinTable → Usage
- IMPORTDATA: The API endpoint may have changed or be rate-limited
- Apps Script: Check the script editor for error messages (View → Execution log)
Prices seem outdated
- CoinTable: Press Ctrl+Shift+F9 or use the CoinTable refresh button
- IMPORTDATA: Add
&t=followed by a changing value to bust the cache - Apps Script: Clear the cache with
CacheService.getScriptCache().removeAll()
"Request limit exceeded"
CoinTable Free includes 500 requests per month. If you need more, the Plus plan offers 10,000 requests per month for $5/month. IMPORTDATA and Apps Script are subject to the external API's rate limits.
Conclusion
Getting crypto prices in Google Sheets doesn't have to be complicated. Here's the bottom line:
- Use CoinTable if you want the fastest, simplest solution with the broadest coverage. Install it, use
=CT_PRICE("BTC"), and move on with your day. - Use IMPORTDATA if you only need a single price and don't want to install anything.
- Use Apps Script if you need custom data processing and are comfortable with JavaScript.
For 95% of users, CoinTable is the right choice. It's free to start, takes 30 seconds to set up, and covers 10,000+ cryptocurrencies in 50+ fiat currencies.
Admin
CoinTable Team