Free Exchange Rate API, No Key Required
Live currency rates for 100+ currencies · No signup · CORS enabled · 100 req/min per IP
Paste it into a browser, terminal, app, or Google Sheets workflow. No API key, token, dashboard, or account setup is required.
✓ Why This API Is Different
Most free currency APIs require signup, an API key, or a credit card. This API is completely open — no registration, no auth, no monthly cap.
Base URL
All endpoints are relative to:
Supported Currencies
/api/v1/currencies.Endpoints
Access-Control-Allow-Origin: * and supports OPTIONS preflight (204) — safe to call directly from the browser./api/v1/convertConvert an amount from one currency to another at the live exchange rate. Returns a success/error envelope. Add format=xml for Google Sheets.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
from | string | Yes | Source currency code (e.g. USD) |
to | string | Yes | Target currency code (e.g. UAH) |
amount | number | No | The amount to convert (default: 1) |
format | string | No | json (default) or xml |
Request
Response
/api/v1/currenciesReturns all supported currencies with codes and names. 100+ currencies including emerging-market pairs.
Request
Response
/api/v1/historyHistorical daily rates. Three modes: last N days, a single date (weekend/holiday fallback), or a date range (max 1825 days).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
from | string | Yes | Source currency code |
to | string | Yes | Target currency code |
days | number | No | Last N days (1-1825) |
date | string | No | Single date YYYY-MM-DD |
start_date | string | No | Range start YYYY-MM-DD (with end_date) |
end_date | string | No | Range end YYYY-MM-DD (with start_date) |
Request
Response
Error (400)
Try It
Send a live request to /api/v1/convert and inspect the response, status code, and rate-limit headers.
GET https://www.currencyexchangetool.com/api/v1/convert?amount=100&from=USD&to=EURQuick Start — by Language
JavaScript
Python
Go
PHP
Ruby
cURL
Google Sheets — IMPORTXML
Add format=xml to /api/v1/convert to use it with Google Sheets IMPORTXML.
💡 Tip: Use ENCODEURL for cell references. Sheets caches results — update a referenced cell to force refresh.
How It Compares to Other Free Currency APIs
Most "free" currency APIs require signup, an API key, or a credit card. Here is the 2026 landscape:
| API | API Key | Signup | Currencies | Free Limit | Updates |
|---|---|---|---|---|---|
| Currency Exchange Tool ⭐ | No | No | 100+ | 100/min, no monthly cap | Live |
| Frankfurter | No | No | ~30 (ECB) | Unlimited | Daily |
| MoneyConvert | No | No | 182+ | Rate-limited | 5 min |
| ExchangeRate-API (Open) | No | No | 160+ | Rate-limited | Daily |
| ExchangeRate-API (Free) | Yes | Yes | 160+ | 1,500/mo | Daily |
| FreeCurrencyAPI | Yes | Yes | 32 | 1,000/mo | Daily |
| Open Exchange Rates | Yes | Yes | 170+ | 1,000/mo | Hourly |
| AllRatesToday | Yes | Yes | 160+ | Limited | 60 sec |
| Fixer.io | Yes | Yes | 170+ | 100/mo | Daily |
| CurrencyAPI.net | Yes | Yes | 300+ | 500/mo | Daily |
Key takeaway: This is the only API combining no API key, no signup, 100+ currencies, live rates, and no monthly cap.
Rate Limits
Example — 429 Too Many Requests
HTTP Status Codes
| Code | Meaning |
|---|---|
200 | Success |
400 | Bad request — invalid amount or unsupported currency |
404 | Rate not found for this pair |
429 | Rate limit exceeded — includes Retry-After header |
500 | Internal server error |
Frequently Asked Questions
Do I need an API key?
No. All endpoints are open — no signup, no key, no auth. Requests are rate-limited per IP, not per account.
Do I need to sign up?
No signup is required. You can copy a URL, paste it into your app, browser, terminal, or spreadsheet, and get a live exchange-rate response immediately.
Is there a monthly limit?
No monthly cap. There is a per-IP rate limit: 100 requests/minute for convert and currencies, 30 requests/minute for history.
What happens if I exceed the rate limit?
You receive HTTP 429 with a Retry-After header (seconds to wait). Every response also includes X-RateLimit-Limit and X-RateLimit-Remaining so you can back off early.
How often are rates updated?
Fetched live from Yahoo Finance on each request. No cached or stale data.
Can I use this in production?
Yes. The API returns a structured success/error envelope, CORS headers, and rate-limit headers suitable for production use.
Does the API support CORS?
Yes. Every endpoint returns Access-Control-Allow-Origin: * and supports OPTIONS preflight, so browser JavaScript can call it directly.
Can I use this in Google Sheets?
Yes — add format=xml to /api/v1/convert and use IMPORTXML. See the Google Sheets section above.
Is historical data available?
Yes — up to 1825 days via /api/v1/history (by days, single date, or a date range).
If you use this API in a public project, we appreciate a link back to currencyexchangetool.com. Not required, but it helps keep the API free.