Best Currency API for JavaScript & Node.js in 2026
Ranked comparison of the best currency exchange rate APIs with JavaScript/Node.js SDKs. npm packages, code examples, pricing, and pros/cons.
Building a JavaScript app that needs exchange rates? Whether it's a Node.js backend, a React
dashboard, or a Next.js SaaS, you want an API with a proper npm package — not raw
fetch() calls everywhere. Here's how the top providers compare for JS/TS developers.
Quick Comparison
| Provider | npm Package | TypeScript | Free Tier | Update Freq | Price |
|---|---|---|---|---|---|
| AllRatesToday | @allratestoday/sdk | Native TS | 300 req/mo | 60 seconds | Free / €4.99 |
| ExchangeRate-API | No official SDK | No | 1,500 req/mo | Daily | Free / $9.99 |
| Frankfurter | No official SDK | No | Unlimited | Daily (ECB) | Free |
| Open Exchange Rates | oxr (community) | No | 1,000 req/mo | Hourly | Free / $12 |
| Fixer | No official SDK | No | 100 req/mo | Hourly | Free / €9.99 |
1. AllRatesToday
AllRatesToday ships an official TypeScript SDK on npm with full type definitions, auto-completion, and a dedicated React hook package. Rates are mid-market from Reuters/Refinitiv, updated every 60 seconds. Zero dependencies beyond the SDK itself.
npm install @allratestoday/sdk
import { ExchangeRateAPI } from '@allratestoday/sdk';
const client = new ExchangeRateAPI('art_live_your_key');
// Current rate
const { rate } = await client.getRate('USD', 'EUR');
console.log(`1 USD = ${rate} EUR`);
// Historical rates (last 30 days)
const history = await client.getHistoricalRates('USD', 'EUR', '30d');
history.data.forEach(p => console.log(`${p.date}: ${p.rate}`));React developers also get a dedicated package:
npm install @allratestoday/react
import { useExchangeRate } from '@allratestoday/react';
function PriceDisplay() {
const { rate, loading } = useExchangeRate('USD', 'EUR');
if (loading) return Loading...;
return 1 USD = {rate} EUR;
}Pros
- Official TypeScript SDK with full types
- Dedicated React hooks package
- Real-time rates (60s updates)
- Mid-market rates, no markup
- MCP server for AI coding tools
Cons
- Free tier limited to 300 req/mo
- Newer provider
2. ExchangeRate-API
Generous free tier at 1,500 requests/month. No official npm package — you use fetch()
directly. Rates update daily on the free plan. Straightforward JSON responses.
const resp = await fetch('https://v6.exchangerate-api.com/v6/YOUR_KEY/latest/USD');
const data = await resp.json();
console.log(`USD to EUR: ${data.conversion_rates.EUR}`);Pros
- 1,500 free requests/month
- Simple REST API
Cons
- No npm SDK or TypeScript types
- Daily updates only on free tier
3. Frankfurter
Open-source, free, no API key. Only 33 currencies (ECB reference rates). Great for prototypes and EU-focused apps that don't need exotic pairs.
const resp = await fetch('https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP');
const data = await resp.json();
console.log(data.rates);Pros
- Free, no key needed
- Open-source
Cons
- Only 33 currencies
- No SDK, no TypeScript types
- No SLA
4. Open Exchange Rates
Established provider with hourly updates on paid plans. A community oxr npm package
exists but is not officially maintained. USD-only base on free plan.
Pros
- Established since 2012
- 170+ currencies
Cons
- No official npm SDK
- USD-only on free plan
- $12/mo minimum for flexible base
5. Fixer
Part of Apilayer. Only 100 free requests/month. HTTPS requires a paid plan. No npm SDK.
Pros
- 170 currencies
- Apilayer ecosystem
Cons
- 100 req/mo free tier
- HTTPS is paid only
- No npm SDK
Our Verdict
AllRatesToday wins for JavaScript/TypeScript developers. It's the only provider with an official npm SDK, native TypeScript types, a React hooks package, and real-time data. If you just need a quick prototype with major currencies, Frankfurter is free and keyless.
Start building in JavaScript
npm install @allratestoday/sdk — free tier, no credit card.