Last updated: 21 August 2026

Does Google Have a Currency Exchange Rate API?

No. Google does not have a public currency exchange rate API.

This surprises a lot of developers. Google has APIs for almost everything: Maps, Translate, Vision, Natural Language, Sheets, Drive. But when it comes to exchange rate data, there is no Google Currency API, no Google Forex API, and no Google Finance API available for developer use.

What Google has instead is GOOGLEFINANCE, a function inside Google Sheets that pulls exchange rates into spreadsheet cells. It is not a REST API. You cannot call it from Python, Node.js, or any backend application. You cannot get a JSON response. There is no API key, no endpoint URL, and no documentation covering its data sources, update frequency, or accuracy guarantees. It is a spreadsheet convenience feature, nothing more.

This page explains exactly what GOOGLEFINANCE is, why it breaks down for production use, what happened to the old Google Finance API, and which currency exchange rate APIs developers actually rely on in 2026.

What Happened to the Google Finance API?

Google did have a Finance API, briefly. It was part of the Google Finance product launched in 2006 and provided stock quotes, portfolio data, and currency rates. Google shut it down in October 2012 without a replacement.

Since then, no official Google product has provided programmatic access to exchange rate data. Developers who relied on the old Finance API had to migrate to third-party providers. Most never looked back.

The GOOGLEFINANCE spreadsheet function was introduced as a separate product for Sheets users, not as a developer API replacement. It runs inside the Google Sheets environment only.

What Is GOOGLEFINANCE and Why It Is Not a Developer API

GOOGLEFINANCE is a formula you type into a Google Sheets cell:

=GOOGLEFINANCE("CURRENCY:USDEUR")

This returns the current USD to EUR rate as a number in that cell. For a personal budget or a simple currency tracker, it works fine.

For anything beyond that, GOOGLEFINANCE has five problems that make it unsuitable for production applications:

1. No REST endpoint. There is no URL to call. You cannot use GOOGLEFINANCE from Python, JavaScript, PHP, or any other language. It only works inside Google Sheets.

2. No documentation or SLA. Google does not publish how often GOOGLEFINANCE updates, where its data comes from, or what its accuracy standards are. When it returns a wrong rate, and it does, particularly for less-traded pairs, there is no support channel to report it to.

3. Limited currency coverage. GOOGLEFINANCE supports major fiat pairs only. It does not support cryptocurrencies, precious metals, or many emerging market currencies. Searching for UGX, MMK, XAF, or LBP often returns errors or stale values.

4. No historical date control. While GOOGLEFINANCE accepts a date range parameter, the historical data is unreliable. Gaps appear on weekends, public holidays, and for many currency pairs. You cannot query a specific historical rate with confidence it will be accurate.

5. Breaks without warning. Google has never committed to keeping GOOGLEFINANCE working. It has returned errors during high-traffic periods and broken for specific currency pairs without explanation. Building a production application on top of an undocumented convenience function is a risk most developers do not take twice.

Endpoints Google does not offer for currency exchange rate data

What Developers Actually Use Instead

Here are the currency exchange rate APIs developers use in 2026. Competitor figures were verified on each provider's own website on 20 August 2026.

API Free Calls/Month Active Fiat1 Crypto Support HTTPS Free Historical Update Frequency
CurrencyFreaks 1,000 166 857 crypto + 4 metals ✅ Yes ✅ Yes (1984) Daily (free) / 60s (paid)
Open Exchange Rates 1,000 158 ⚠️ BTC only ✅ Yes ❌ No (paid) Hourly
Alpha Vantage 25/day 157 ✅ 460+ crypto ✅ Yes ✅ Yes Real-time
Fixer 100 150 ❌ No ❌ No (paid only) ❌ No (paid only) 60 min (paid)
CurrencyAPI 300 150 ✅ Yes ✅ Yes ✅ Yes 60s (paid) / Daily (free)
ExchangeRate.host 100 149 ✅ Yes ✅ Yes ✅ Yes Hourly
ExchangeRate-API 1,500 148 ❌ No ✅ Yes ❌ No Daily
XE Contact only ~130 ❌ No ✅ Yes ✅ Yes Real-time (paid)
Frankfurter Unlimited 30 ❌ No ✅ Yes ✅ Yes (1999) Daily (ECB)

1 Active fiat currencies only, excluding obsolete or replaced currencies (for example LTL, LVL, BYR), unofficial non-ISO codes (for example GGP, IMP, JEP, FOK, KID, TVD), accounting units (CLF, XDR), and precious metals or crypto. Competitor figures verified directly from each provider's live currency list on 20 August 2026.

A Note on Currency Counts

Most currency API providers advertise a higher fiat currency count than the table above shows. The difference is not data, it is methodology. Several providers count:

  • Unofficial codes with no ISO 4217 status. GGP (Guernsey), IMP (Isle of Man), and JEP (Jersey) all appear on multiple providers' lists as separate currencies. All three territories use GBP. These codes exist on banknote designs, not as independently traded currencies.

  • Obsolete currencies that no longer exist. LTL (Lithuanian Litas, replaced by EUR in 2015), LVL (Latvian Lats, replaced by EUR in 2014), BYR (Belarusian Ruble old version, replaced by BYN in 2016), HRK (Croatian Kuna, replaced by EUR in 2023), MRO (Mauritanian Ouguiya old, replaced by MRU in 2018), STD (São Tomé Dobra old, replaced by STN in 2018), and ZMK (Zambian Kwacha old, replaced by ZMW in 2013) appear in several providers' active lists despite being defunct.

  • Accounting units. CLF (Chilean Unit of Account, the UF) is an inflation index used in Chilean real estate contracts. XDR (IMF Special Drawing Rights) is a reserve basket used only between central banks. Neither is a tradeable currency.

The active count in the table above removes all of the above categories and counts only currencies that are genuinely active, ISO 4217 registered, and independently traded today. CurrencyFreaks maintains deprecated currencies in a separate historical dataset, so if you need rates for the Lithuanian Litas from 2012, that data is still accessible. The active fiat figure refers to active currencies only.

Option 1: CurrencyFreaks (Recommended)

CurrencyFreaks is a dedicated currency exchange rate REST API covering 1027 currencies: 166 active fiat, 857 crypto, and 4 metals. It is used by 32,960+ developers. The free plan includes 1,000 API calls per month with SSL and no credit card required. Historical data goes back to 1984.

On currency count: the active fiat figure is an honest count of ISO 4217 currencies in active circulation today. CurrencyFreaks does not inflate this number with unofficial codes (such as GGP or IMP) or currencies that were abolished years ago. The full 1027 figure includes crypto and metals. Deprecated currencies are maintained separately and remain accessible for historical queries.

The API returns JSON responses to standard HTTP requests. Any language that can make an HTTP call can use it.

Quick start, fetch live rates:

curl "https://api.currencyfreaks.com/v2.0/rates/latest?apikey=YOUR_API_KEY&symbols=EUR,GBP,JPY"

Response:

{
  "date": "2026-08-20 00:00:00+00",
  "base": "USD",
  "rates": {
    "EUR": "0.921400",
    "GBP": "0.781300",
    "JPY": "147.820000"
  }
}

Python example:

import requests
import os

API_KEY = os.environ.get("CF_API_KEY")

def get_rates(symbols="EUR,GBP,JPY,CAD", base="USD"):
    response = requests.get(
        "https://api.currencyfreaks.com/v2.0/rates/latest",
        params={"apikey": API_KEY, "base": base, "symbols": symbols},
        timeout=8
    )
    response.raise_for_status()
    return response.json()["rates"]

rates = get_rates()
print(f"1 USD = {rates['EUR']} EUR")

Node.js example:

const API_KEY = process.env.CF_API_KEY;

async function getRates(symbols = 'EUR,GBP,JPY', base = 'USD') {
  const url = new URL('https://api.currencyfreaks.com/v2.0/rates/latest');
  url.searchParams.set('apikey', API_KEY);
  url.searchParams.set('base', base);
  url.searchParams.set('symbols', symbols);

  const res = await fetch(url.toString());
  if (!res.ok) throw new Error(`CurrencyFreaks error: ${res.status}`);
  const data = await res.json();
  return data.rates;
}

getRates().then(rates => console.log('EUR rate:', rates.EUR));

Note that the free plan uses USD as its base currency. Changing base requires a paid plan, so on the free tier you cross-rate through USD instead.

Historical rate lookup:

curl "https://api.currencyfreaks.com/v2.0/rates/historical?apikey=YOUR_API_KEY&date=2026-01-15&base=USD&symbols=EUR,GBP"

Detect a user's currency from their IP address. This endpoint is available on the Growth plan and above, and is useful for auto-selecting a currency in checkout flows or displaying localised prices without asking the user:

curl "https://api.currencyfreaks.com/v2.0/iptocurrency?apikey=YOUR_API_KEY&ip=103.21.58.1"

Get your free API key at currencyfreaks.com/signup: no credit card, setup takes under 5 minutes.

Option 2: Frankfurter (No API Key Required)

Frankfurter is an open-source API built on European Central Bank (ECB) data. It requires no API key and no account. Verified live at api.frankfurter.dev/v1/currencies, it carries 30 active fiat currencies as of August 2026. No crypto, no metals.

On currency count: the 30 currency figure is a genuinely clean count. Frankfurter only carries the currencies the ECB publishes rates for, which are exclusively major fiat pairs. No padding, no unofficial codes. The tradeoff is that 30 currencies excludes most of the world: no PKR, NGN, UGX, BDT, MMK, or any currency outside the ECB's reporting scope.

curl "https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP,JPY"

Frankfurter is the right choice for prototyping and low-stakes internal tools. Its limitations: 30 currencies only, daily updates, no SLA. When you need broader coverage, especially crypto, metals, or currencies outside the ECB set, CurrencyFreaks is the direct upgrade path with a similar API structure.

Option 3: ExchangeRate-API

ExchangeRate-API offers 1,500 free calls per month, the highest raw call limit of any provider in this comparison. Their documentation lists 161 currencies, but the active fiat count after removing unofficial codes (GGP, IMP, JEP, FOK, KID, TVD) and the deprecated Croatian Kuna (HRK, replaced by EUR in 2023) is 148. No crypto support and no historical data without a paid plan.

On currency count: ExchangeRate-API is notably transparent in their own documentation, stating they support all ISO 4217 codes and warning developers to check for deprecated codes before use. The gap between their 161 figure and the 148 active count is a mix of informal territorial codes and one recent eurozone conversion, not deliberate inflation. Their coverage of genuine active currencies is solid.

curl "https://v6.exchangerate-api.com/v6/YOUR_API_KEY/latest/USD"

A good choice if call volume is your primary constraint and you do not need crypto or historical rates.

Option 4: Alpha Vantage (Best for Multi-Asset)

Alpha Vantage covers 157 physical (fiat) currencies and 460+ digital currencies, and also provides stocks, ETFs, commodities, and economic indicators, making it the best choice if your application needs currency data alongside other financial data. The free tier is limited to 25 requests per day, which is restrictive for production currency use cases.

On currency count: Alpha Vantage's 157 active fiat figure is a clean and honest count sourced from their physical currency list. The gap comes down to nine currencies Alpha Vantage does not cover, primarily recently introduced or redenominated ones: CNH (Chinese Yuan offshore), SSP (South Sudanese Pound), SLE (Sierra Leone Leone, post-2022 redenomination), STN (São Tomé Dobra, post-2018 redenomination), MRU (Mauritanian Ouguiya, post-2018 redenomination), VES (Venezuelan Bolívar Soberano), ZWG (Zimbabwe Gold, launched 2024), XCG (Caribbean Guilder, launched 2025), and CUP (Cuban Peso). If your application deals with any of these currencies, CurrencyFreaks covers them all.

Currency Count Notes: Other Providers in the Table

Open Exchange Rates (158 active fiat): their raw list includes 173 entries, but this includes BTC, four precious metals (XAG, XAU, XPD, XPT), the IMF's Special Drawing Rights (XDR), three unofficial UK Crown dependency codes (GGP, IMP, JEP), the Chilean Unit of Account (CLF), the obsolete São Tomé Dobra (STD), and the abolished Cuban Convertible Peso (CUC). Removing these leaves 158 genuinely active fiat currencies, still a solid count and the closest to CurrencyFreaks of any non-crypto competitor.

Fixer (150 active fiat): Fixer advertises 170 currencies including Bitcoin and precious metals. The 150 active fiat figure removes BTC, XAG, XAU, the three UK Crown dependency codes (GGP, IMP, JEP), the accounting unit CLF, and six obsolete currencies: LTL (Lithuanian Litas, EUR since 2015), LVL (Latvian Lats, EUR since 2014), BYR (old Belarusian Ruble, replaced by BYN in 2016), MRO (old Mauritanian Ouguiya, replaced by MRU in 2018), STD (old São Tomé Dobra, replaced by STN in 2018), and ZMK (old Zambian Kwacha, replaced by ZMW in 2013). Fixer still maintains these in their dataset for historical rate access, which is useful for legacy systems, but they are not active currencies.

CurrencyAPI (150 active fiat): advertises 166+ currencies total including crypto and metals. The 150 active fiat count removes GGP, IMP, JEP, CLF, HRK (Croatian Kuna, replaced by EUR in 2023), and the obsolete Sierra Leone Leone (SLL, replaced by SLE after the 2022 redenomination). CurrencyAPI's overall offering is strong, particularly for applications that need both fiat and crypto in one API, and their honest fiat coverage is competitive.

ExchangeRate.host (149 active fiat): advertises roughly 168 currencies including BTC and precious metals. After removing BTC, XAG, XAU, XDR, the three Crown dependency codes, CLF, HRK, and five obsolete currencies (LTL, LVL, BYR, MRO, ZMK), the active fiat count is 149. ExchangeRate.host is built on the same APILayer infrastructure as Fixer, which explains the similar pattern of keeping deprecated currencies in their active list.

How to Use a Currency API in Google Sheets

If you specifically need live exchange rates inside Google Sheets rather than a backend application, the approach is to use Google Apps Script to call a currency API and write the result into cells.

Here is a complete script for CurrencyFreaks:

// In Google Sheets: Extensions > Apps Script > paste this function

function getLiveRate(baseCurrency, targetCurrency) {
  var apiKey = 'YOUR_CURRENCYFREAKS_API_KEY';
  var url = 'https://api.currencyfreaks.com/v2.0/rates/latest'
          + '?apikey=' + apiKey
          + '&base=' + baseCurrency
          + '&symbols=' + targetCurrency;

  var response = UrlFetchApp.fetch(url);
  var data = JSON.parse(response.getContentText());

  return data.rates && data.rates[targetCurrency]
    ? parseFloat(data.rates[targetCurrency])
    : 'Rate unavailable';
}

After saving the script, use it in any cell:

=getLiveRate("USD", "EUR")

This gives you a live rate from a documented, reliable API, not GOOGLEFINANCE. You can set up a time-based trigger in Apps Script to refresh it automatically every hour. Full tutorial: How to Add Live Currency Rates to Google Sheets.

Just need the spreadsheet formula rather than a developer integration? See the GOOGLEFINANCE currency conversion formula guide.

Comparison: GOOGLEFINANCE vs a Currency API

Capability GOOGLEFINANCE Currency API (e.g. CurrencyFreaks)
Works in Python / Node.js / PHP ❌ No ✅ Yes
REST endpoint ❌ No ✅ Yes
JSON response ❌ No ✅ Yes
Documented data source ❌ No ✅ Yes
Historical data ⚠️ Unreliable ✅ Yes (1984 onward)
Crypto support ❌ No ✅ Yes (857 currencies)
Metals support ❌ No ✅ Yes (4 metals)
SLA / uptime guarantee ❌ No ✅ Yes (paid plans)
Free plan Not applicable (Sheets only) ✅ 1,000 calls/month
API key required No Yes (free, 5 minute signup)

Comparison of GOOGLEFINANCE and the CurrencyFreaks API across REST endpoint, JSON response, historical data, crypto support, SLA and currency coverage

FAQs

Does Google Have a Currency API?

No. Google does not offer a public currency exchange rate API. The old Google Finance API was shut down in 2012. The GOOGLEFINANCE spreadsheet function available in Google Sheets is not a REST API and cannot be called from a backend application.

Can I Use GOOGLEFINANCE in Python?

No. GOOGLEFINANCE is a Google Sheets formula. It is not accessible outside of Google Sheets. To fetch exchange rates in Python, use a currency API like CurrencyFreaks or Frankfurter.

What Is the Best Free Google Currency API Alternative?

CurrencyFreaks offers 1,000 free API calls per month with SSL, historical data back to 1984, and 1027 currencies including 166 active fiat, 857 crypto, and 4 metals, the broadest active fiat coverage of any provider in this comparison. Frankfurter is completely free with no API key required but covers only 30 currencies. Both are REST APIs that work with any programming language.

Is There a Free Currency API With No API Key?

Yes. Frankfurter requires no API key and has no rate limits. It covers 30 major fiat currencies updated daily from ECB data. For broader coverage including crypto and metals, CurrencyFreaks has a free plan with a 5-minute signup.

How Many Currencies Does CurrencyFreaks Support?

CurrencyFreaks covers 1027 currencies: 166 fiat, 857 cryptocurrencies, and 4 precious metals. This is the broadest currency coverage of any API in this comparison.

How Do I Get Live Exchange Rates in Google Sheets?

Use Google Apps Script to call a currency API and write the result into cells. The getLiveRate function above connects Google Sheets to the CurrencyFreaks API and updates rates on a schedule you control. Full tutorial: How to Add Live Currency Rates to Google Sheets.

What Happened to the Google Finance API?

Google shut down the Google Finance API in October 2012. No official replacement was released. Developers who depended on it migrated to third-party providers like CurrencyFreaks, Open Exchange Rates, and ExchangeRate-API.

Get live exchange rates in your application today with the CurrencyFreaks free plan: no credit card, 1027 currencies, API key in 30 seconds.