7 min read

How to Use Google Sheets With a Free Currency Exchange API

Pull live forex rates into Google Sheets with the free currencyexchangetool.com API. No API key or signup required. Step-by-step guide with IMPORTDATA formulas.

How to Use Google Sheets With a Free Currency Exchange API

If you manage budgets, track international payments, or build dashboards in Google Sheets, you've probably needed live exchange rates and found that most APIs require signup, API keys, or paid plans.

Live Rate USD → EUR
Mid-Market Rate
0.9215
You Get
92.15 EUR
for 100 USD

The currencyexchangetool.com API is completely free, requires no API key and no registration, and updates rates every 60 seconds. Check the live USD to EUR converter or this guide walks you through connecting it to Google Sheets in under 5 minutes.

Key Facts
  • 100% free — no API key, no signup, no credit card
  • Rates updated every 60 seconds from Yahoo Finance
  • Returns JSON, XML, or CSV — CSV works natively with Google Sheets
  • No rate limits for normal spreadsheet usage
  • CORS enabled — works from any domain or Google Sheet

TL;DR: two formulas

=IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=EUR&format=csv")

For JSON parsing (more data):

=INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=UAH&amount=100"), 2, 1)

Below is the full breakdown.

Why pull exchange rates into Google Sheets?

Live currency data in Sheets is useful for budget tracking, invoices, and dashboards:

  • Budget tracking — convert international expenses in real time
  • Invoicing — send quotes in multiple currencies at the current rate
  • Investment monitoring — track forex positions alongside other assets
  • Financial dashboards — build a live dashboard with automatic rate updates
  • Freelancer payments — see what your USD invoice is worth in EUR, UAH, or RON today

The currencyexchangetool.com API is a good fit because it has no rate limits for normal usage, CORS enabled, and returns data in JSON, XML, or CSV.

Step 1 — Find your API endpoint

The base URL is:

https://www.currencyexchangetool.com/api/v1/

To convert an amount from one currency to another:

GET /api/v1/convert?from=USD&to=EUR&amount=100

Try it right now. Open this link in your browser:

→ Live API call: 100 USD to EUR

You'll get back JSON:

{
  "amount": 100,
  "from": "USD",
  "to": "EUR",
  "rate": 0.9215,
  "result": 92.15,
  "change24h": -0.0031,
  "changePct24h": -0.34,
  "updatedAt": "2026-06-23T10:00:00.000Z"
}

The API also supports CSV output (which Google Sheets handles natively):

GET /api/v1/convert?from=USD&to=EUR&amount=100&format=csv

Step 2 — Pull data into Google Sheets with IMPORTDATA

Google Sheets has a built-in function called IMPORTDATA that fetches CSV data from a URL.

Basic Conversion Rate

In any cell, type:

=IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=EUR&format=csv")

This returns a table with: amount, from currency, to currency, rate, result, 24h change, 24h change %.

To extract just the rate (row 2, column 1):

=INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=EUR&format=csv"), 2, 1)

Convert Any Amount

If cell A1 holds the amount you want to convert:

=INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=EUR&amount=" & A1 & "&format=csv"), 3, 1)

This returns the converted result (e.g., 92.15 EUR for 100 USD).

Using Cell References for Currencies

To make the spreadsheet reusable, use cell references for currency codes:

A B C D
Amount From To Converted
500 USD EUR =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=" & B2 & "&to=" & C2 & "&amount=" & A2 & "&format=csv"), 3, 1)
1000 EUR UAH =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=" & B3 & "&to=" & C3 & "&amount=" & A3 & "&format=csv"), 3, 1)

This way, you can change the currencies in columns B and C without editing formulas.

Step 3 — Build a live forex dashboard (multiple rates)

Google Sheets recalculates IMPORTDATA roughly every hour. To build a dashboard that monitors multiple currency pairs at once, set up a table like this:

Pair Rate 24h Change Formula
USD/EUR =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=EUR&format=csv"), 2, 1) =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=EUR&format=csv"), 5, 1)
EUR/USD =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=EUR&to=USD&format=csv"), 2, 1)
USD/UAH =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=UAH&format=csv"), 2, 1)
EUR/UAH =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=EUR&to=UAH&format=csv"), 2, 1)
GBP/USD =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=GBP&to=USD&format=csv"), 2, 1)

CSV response structure (hover for details):

Row Column 1 Column 2
1 amount 100
2 rate 0.9215
3 result 92.15
4 change24h -0.0031
5 changePct24h -0.34

So INDEX(..., 2, 1) gives you the rate, INDEX(..., 5, 1) gives the 24h change percent.

Step 4 — Multiple currencies at once with the currencies endpoint

Need rates for all currencies at once? Use the /api/v1/currencies endpoint:

=IMPORTDATA("https://www.currencyexchangetool.com/api/v1/currencies?format=csv")

This returns a list of all supported currencies with their codes and names, useful for dropdown validation lists.

For a dashboard that converts one base currency to many targets, pair it with the convert endpoint:

A B
Base USD
Target Rate
EUR =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=$B$1&to=" & A3 & "&format=csv"), 2, 1)
GBP =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=$B$1&to=" & A4 & "&format=csv"), 2, 1)
UAH =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=$B$1&to=" & A5 & "&format=csv"), 2, 1)
JPY =INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=$B$1&to=" & A6 & "&format=csv"), 2, 1)

The $B$1 locks the base currency so you can change it once and all rates update.

Tips and limitations

Google Sheets caches IMPORTDATA for ~1 hour. To force a refresh, open the sheet → File → Settings → Calculation → set Recalculation to "On change and every minute".

The API has a ~2,048 character limit on formula URLs, so keep queries short. It uses IP-based rate limiting: for a dashboard with 5-10 currency pairs, you won't hit limits. For high-frequency use, add a cache layer.

If the API returns an error, IMPORTDATA shows #N/A. Use =IFERROR(...) to handle it. The API is accessible globally from any Google Sheets instance.

Frequently Asked Questions

Does the API require an API key?

No. The currencyexchangetool.com API is completely free and open to everyone. There is no signup form, no API key generation page, and no token required in your requests. Just send a GET request to any endpoint and you get the data back. This makes it particularly useful for Google Sheets, where you can paste a formula and get live rates immediately without setting up authentication. The only thing we ask is fair use: don't hammer the API with thousands of requests per minute.

How often are rates updated?

Rates are refreshed every 60 seconds from Yahoo Finance data, around the clock. However, Google Sheets caches IMPORTDATA results on its end, typically for 30 to 60 minutes. This means your spreadsheet won't show a new rate every minute, but it will update roughly every hour during a normal workday. If you need true real-time data, the JSON API endpoint works well for custom scripts or Google Apps Script, which can fetch on a tighter schedule.

Can I use IMPORTXML or IMPORTJSON instead?

Google Sheets does not have a native IMPORTJSON function. The simplest approach is to use IMPORTDATA with the &format=csv parameter, which was designed for spreadsheet use. If you prefer working with JSON, you can write a small Google Apps Script using UrlFetchApp.fetch() to parse the JSON response. That gives you full control over refresh timing and data formatting. The API returns clean JSON with fields like rate, result, change24h, and updatedAt, making it easy to extract exactly what you need.

What currencies are supported?

The API covers 100+ currencies including all major pairs: USD, EUR, GBP, JPY, UAH, INR, BRL, KRW, THB, RON, CAD, AUD, CHF, CNY, and many more. Emerging market currencies like the Nigerian Naira (NGN), Kenyan Shilling (KES), and Indonesian Rupiah (IDR) are also available. You can get the full list by calling the /api/v1/currencies endpoint, which returns all supported currency codes and their display names. The CSV version of this endpoint is especially useful for populating Google Sheets dropdown validation lists.

Is there a limit on how many API calls I can make?

The API uses fair-use IP-based rate limiting rather than hard caps. For typical usage, a Google Sheets dashboard tracking 5 to 10 currency pairs and refreshing every hour, you won't encounter any limits. The API is designed to handle moderate traffic from individuals and small businesses. If you're building a high-frequency trading dashboard or scraping all endpoints every few seconds, you should add a local cache layer and respect reasonable intervals. For normal spreadsheet use, just paste the formulas and they will work.

Try it now — interactive API test

Click the endpoint below to see the live API response in your browser:

GET /api/v1/convert?from=USD&to=EUR&amount=100 ↗

Or copy this formula directly into any Google Sheet:

=INDEX(IMPORTDATA("https://www.currencyexchangetool.com/api/v1/convert?from=USD&to=EUR&format=csv"), 2, 1)
✨ No signup, no API key, no configuration. You'll get the live USD/EUR rate instantly.

For developers who want more control, the API also returns JSON and XML formats, with 24h change data for each pair. Full API docs →

Ready to convert?

Check live exchange rates

Use our live converter to see the real-time mid-market rate for any currency pair.

Also check out these related guides:


Rates are for informational purposes only. Google Sheets refresh timing depends on Google's cache policy. Always verify critical rates before making financial decisions.

C
Written by
Currency Converter Team
Financial Technology Experts

We are a team of financial technology developers dedicated to providing accurate, real-time currency conversion tools. Our mission is to make financial data accessible to everyone.