Compare the options
Columns compare archive depth, observation granularity, the plan needed for history, and paid entry prices. Monthly USD prices are shown where stated; XE bills yearly. An early archive date applies only where data exists; date-range access and intraday observations can require higher plans.
| Provider | History | Granularity | Plan for history | Price from |
|---|---|---|---|---|
| exchangerate.dev | From 1999-01-04 on Plus and Pro (later starts for some currencies); Basic 1 year; Free 30 days | Daily; 1h and 4h for 30 days on Plus; 1 minute to 4 hours at full depth on Pro | Free for 30 days; full daily history from Plus at $39/month | $19/month Basic; 100,000 requests |
| Narwhal API | Stored observations by date range; start date not published | Stored observation dates | Free 12 months; Basic 5 years; Pro full | $59/month Basic; 100,000 requests |
| Open Exchange Rates | Daily from 1 January 1999 | End of day, one set per UTC day | Historical on Free (USD base); time series on Enterprise and Unlimited, one month per query | $12/month Developer; 10,000 requests |
| Frankfurter | Some series from 1948; coverage varies by pair | Daily; weekly or monthly grouping | Free, no key | Free; no paid plans; self-hosting with Docker |
| Fixer | Back to January 1999 | Daily | Historical on Free; time series from Professional at $59.99/month | $14.99/month Basic; 10,000 requests |
| exchangerate.host | Depth not on its pricing page | End of day, published 00:05 GMT for the previous day | Historical on Free; time-frame queries from Professional Plus at $59.99/month | $14.99/month Basic ($161.99/year); 10,000 requests |
| XE Currency Data API | Back to 1998; monthly averages | Daily on Lite; hourly Intermediate; 15 minutes Prime | Every package, from $799/year | $799/year Lite; 10,000 requests/month |
| OANDA Exchange Rates API | Over 32 years advertised; start year not stated | Daily, weekly, quarterly, annual and custom averages; up to 96 intraday fixings a day | Daily averages on every plan; period averages and open/close from Premium | Lite: $450 or $4,850, two unlabelled price sets on its pricing page; 100,000 quotes/month |
| ExchangeRate-API | From 1 January 1990 for a few currencies; all codes from 1 January 2021 | One indicative mid rate per day | Pro ($10/month), Business or Volume | $10/month Pro; 30,000 requests |
| currencyapi | Daily back to 1999 | Daily | Plan gating not stated in our sources | $9.99/month Small; 15,000 requests |
The shortlist
exchangerate.dev
- Best fit: Daily archives with paid intraday options
- Price from: $19/month Basic; 100,000 requests
- Free tier: 5,000 requests/month; commercial use with a visible credit link
- Update frequency: About 60 seconds for all 144 currencies on trading days, 15 minutes late on Free; ECB daily fallback
- Coverage: 144 currencies
- Conversion: Single-amount and batch conversion endpoints
- MCP: Yes, nine tools, every plan including Free
- History: From 1999-01-04 on Plus and Pro (later starts for some currencies); Basic 1 year; Free 30 days
- Granularity: Daily; 1h and 4h for 30 days on Plus; 1 minute to 4 hours at full depth on Pro
- Plan for history: Free for 30 days; full daily history from Plus at $39/month
exchangerate.dev suits an app combining daily historical lookups with a later move to intraday data. Free covers 30 days of daily history, Basic covers one year, and Plus and Pro extend from 1999-01-04 where available. Plus costs $39 per month and includes hourly and four-hour observations for 30 days. The trade-off is currency-specific depth: some currencies start later than 1999. Pro adds one-minute through four-hour intervals at full available depth. Check the oldest required date for each currency before choosing a plan.
Sources: Plans and limits, API reference, Historical data, MCP server.
Narwhal API
- Best fit: Stored FX observations alongside economic data
- Price from: $59/month Basic; 100,000 requests
- Free tier: 5,000 requests/month; previous day close
- Update frequency: Free: end of day (00:00 UTC); paid: live; interval not published
- Coverage: 144 currencies
- Conversion: Decimal-safe conversion endpoint
- MCP: Yes, hosted, same key and quota as REST
- History: Stored observations by date range; start date not published
- Granularity: Stored observation dates
- Plan for history: Free 12 months; Basic 5 years; Pro full
Narwhal API suits a dashboard retrieving past FX observations alongside commodities, economics, and release calendars. Its history endpoint returns stored observations by currency and date range, with pagination. Free provides a twelve-month window, Basic five years, and Pro full available history. The trade-off is that a universal start date is not published, so a plan window does not establish how far each currency actually extends. Free current FX uses the previous day’s close. One key and quota cover REST and hosted MCP.
Sources: FX API documentation, Pricing.
Open Exchange Rates
- Best fit: Daily snapshots with a documented UTC boundary
- Price from: $12/month Developer; 10,000 requests
- Free tier: Up to 1,000 requests/month; USD base only
- Update frequency: Hourly on Free and Developer; 30 minutes Enterprise; 5 minutes Unlimited
- Coverage: Over 200 currencies
- Conversion: Convert endpoint documented; plan page lists conversion on Unlimited
- MCP: No official MCP server found
- History: Daily from 1 January 1999
- Granularity: End of day, one set per UTC day
- Plan for history: Historical on Free (USD base); time series on Enterprise and Unlimited, one month per query
Open Exchange Rates suits an application needing one historical snapshot per UTC day. Daily history starts on 1 January 1999, using the last values available by the end of that day. Free historical calls use a USD base; changing the base or filtering symbols needs a paid plan. The trade-off is range access: the time-series endpoint requires Enterprise or Unlimited, allows at most one month per query, and counts each day as a request. Compare those request costs with individual historical lookups.
Sources: Plans, API documentation. Full comparison: Open Exchange Rates vs exchangerate.dev →
Frankfurter
- Best fit: Long daily archives without account keys
- Price from: Free; no paid plans; self-hosting with Docker
- Free tier: No key and no quota; abuse rate limits only
- Update frequency: Daily
- Coverage: 223 currencies, including legacy codes
- Conversion: No conversion endpoint; multiply by the rate
- MCP: Yes
- History: Some series from 1948; coverage varies by pair
- Granularity: Daily; weekly or monthly grouping
- Plan for history: Free, no key
Frankfurter suits research using daily rates from blended central-bank and official sources. Some series extend to 1948, and weekly or monthly grouping is available. There is no key or monthly quota, although abuse rate limits apply. Its catalogue includes legacy currencies, which can matter for older records. The trade-off is uneven historical coverage: the earliest series does not establish the start for every pair. There is no intraday feed or amount conversion endpoint. Test the required currencies and dates directly before building an archive workflow.
Sources: Documentation, Source code. Full comparison: Frankfurter vs exchangerate.dev →
Fixer
- Best fit: Daily history with paid time-series access
- Price from: $14.99/month Basic; 10,000 requests
- Free tier: 100 requests/month; non-commercial; fixed base currency
- Update frequency: Hourly on Free and Basic; 10 minutes Professional; 60 seconds Professional Plus
- Coverage: 170 currencies
- Conversion: Basic and up
- MCP: No official MCP server found
- History: Back to January 1999
- Granularity: Daily
- Plan for history: Historical on Free; time series from Professional at $59.99/month
Fixer suits an application evaluating daily historical rates alongside a paid range-query workflow. Its archive extends to January 1999, and historical requests are listed on Free. Time series require Professional at $59.99 per month or above. The trade-off is that Free has only 100 monthly requests, a fixed base, and non-commercial terms. Basic adds selectable bases and conversion, but does not establish time-series access. Compare the plan needed for the actual query pattern rather than treating all historical endpoints as one feature.
Sources: Pricing and plan features. Full comparison: Fixer vs exchangerate.dev →
exchangerate.host
- Best fit: End-of-day snapshots with a publication boundary
- Price from: $14.99/month Basic ($161.99/year); 10,000 requests
- Free tier: 100 requests/month; key required; non-commercial
- Update frequency: Daily on Free; hourly Basic; 10 minutes Professional Plus; 60 seconds Business
- Coverage: About 168 currencies
- Conversion: Basic and up
- MCP: None found
- History: Depth not on its pricing page
- Granularity: End of day, published 00:05 GMT for the previous day
- Plan for history: Historical on Free; time-frame queries from Professional Plus at $59.99/month
exchangerate.host suits a daily archive workflow that can wait for the previous day’s snapshot. End-of-day historical rates become available at 00:05 GMT, and historical requests appear on Free as well as paid plans. Time-frame queries start at Professional Plus for $59.99 per month. The trade-off is archive clarity: its pricing page does not state historical depth. Free also allows only 100 monthly requests for non-commercial use. Verify the oldest required pair and distinguish a single-date lookup from a paid date-range query.
Sources: Pricing, Homepage. Full comparison: exchangerate.host vs exchangerate.dev →
XE Currency Data API
- Best fit: Annual plans including history and monthly averages
- Price from: $799/year Lite; 10,000 requests/month
- Free tier: Free trial only
- Update frequency: Daily Lite; hourly Intermediate; 15 minutes Prime; minutely add-on
- Coverage: Count stated two ways on its page
- Conversion: Not mentioned on its page
- MCP: Not found
- History: Back to 1998; monthly averages
- Granularity: Daily on Lite; hourly Intermediate; 15 minutes Prime
- Plan for history: Every package, from $799/year
XE Currency Data API suits an application that needs historical rates, monthly averages, and time-frame queries under an annual subscription. Its archive goes back to 1998, and those historical features appear in every package. Lite starts at $799 per year with 10,000 monthly requests and daily rates. The trade-off is the annual commitment and trial-only free access. Higher packages change update frequency, but the page does not specify different historical depths by plan. Confirm the required dates and intervals before subscribing.
Sources: Plans and features. Full comparison: XE Currency Data API vs exchangerate.dev →
OANDA Exchange Rates API
- Best fit: Historical averages and bid or ask observations
- Price from: Lite: $450 or $4,850, two unlabelled price sets on its pricing page; 100,000 quotes/month
- Free tier: 7-day free trial with unlimited quotes
- Update frequency: Daily averages on Lite; up to 96 intraday fixings a day; 3 to 5 second spot on Premium plus
- Coverage: Over 200 currencies and metals; 38,000+ pairs
- Conversion: Not stated on its pricing page
- MCP: None found; third-party connector only
- History: Over 32 years advertised; start year not stated
- Granularity: Daily, weekly, quarterly, annual and custom averages; up to 96 intraday fixings a day
- Plan for history: Daily averages on every plan; period averages and open/close from Premium
OANDA Exchange Rates API suits a workflow requiring bid, ask, and mid observations or period averages. It advertises over 32 years of data, daily averages on every plan, and period averages plus open and close on Premium and above. Up to 96 intraday fixings a day are advertised. The trade-off is that neither a start year nor historical depth per plan is stated. Treat the earliest required currency and averaging period as separate checks before relying on the headline archive length.
Sources: Exchange Rates API, Pricing. Full comparison: OANDA Exchange Rates API vs exchangerate.dev →
ExchangeRate-API
- Best fit: Paid daily history with explicit coverage dates
- Price from: $10/month Pro; 30,000 requests
- Free tier: 1,500 requests/month with a key; keyless open endpoint with attribution
- Update frequency: Daily on Free; hourly Pro; 5 minutes Business
- Coverage: About 165 currencies
- Conversion: Pair conversion with an optional amount, on Free
- MCP: No MCP server found on its site
- History: From 1 January 1990 for a few currencies; all codes from 1 January 2021
- Granularity: One indicative mid rate per day
- Plan for history: Pro ($10/month), Business or Volume
ExchangeRate-API suits an application needing a single indicative mid rate for a historical day. Its endpoint is available on Pro, Business, and Volume, with Pro starting at $10 per month. History begins on 1 January 1990 for a few currencies, while all codes are available from 1 January 2021. The trade-off is that the older archive is selective, not catalogue-wide. Free does not include history. Check the currency’s supported dates before treating the 1990 start as suitable for your application.
Sources: Plans, Documentation, Free and open access. Full comparison: ExchangeRate-API vs exchangerate.dev →
currencyapi
- Best fit: Daily archives alongside a multi-asset catalogue
- Price from: $9.99/month Small; 15,000 requests
- Free tier: 300 requests/month; personal use only
- Update frequency: Daily on Free; hourly Small; 60 seconds Medium and up
- Coverage: 171 fiat currencies, 16 crypto, 4 precious metals
- Conversion: Convert endpoint
- MCP: Yes, official, 16 tools; calls count against the plan quota
- History: Daily back to 1999
- Granularity: Daily
- Plan for history: Plan gating not stated in our sources
currencyapi suits an application comparing daily currency history with a catalogue that also includes crypto and precious metals. It lists daily history back to 1999, alongside 171 fiat currencies, 16 cryptocurrencies, and four precious metals. Small costs $9.99 per month and permits commercial use. The trade-off is that historical plan access is not stated in the checked documentation, so confirm the intended endpoint on your chosen plan. Free is private use only with 300 monthly requests; a catalogue total does not establish each asset’s archive depth.
Sources: Pricing, Homepage, MCP documentation. Full comparison: currencyapi vs exchangerate.dev →
Check the dates behind the headline
Choose the archive against your oldest required pair, observation interval, and query pattern. A start year alone does not establish usable coverage.
| If you need | Start with |
|---|---|
| Pair coverage | Request the oldest required date for every currency. An archive’s earliest observation may belong to only a small subset of its catalogue. |
| Observation interval | Decide whether you need a daily snapshot, period average, or intraday observation. Confirm that the chosen plan includes that exact interval. |
| Range accounting | Estimate requests for a full date range, including pagination and per-day charges. Compare that total with the intended plan’s allowance. |
| Date boundaries | Check which timezone defines the historical day and when the snapshot becomes available. Preserve that boundary when comparing records across providers. |
How we chose
We compared historical start dates, currency-specific coverage, observation intervals, range queries, plan access, and request accounting. Sources were checked on 18 Oct 2026 and accompany each entry. This is a documented-feature comparison, not a benchmark of accuracy, speed, or availability. exchangerate.dev publishes this comparison and appears under the same criteria. An advertised archive length is distinguished from complete pair coverage, and unpublished historical entitlements are left qualified. exchangerate.dev and Narwhal API are owned and operated by Nusantara Ventures, LLC.
Sources checked October 18, 2026. Prices and entitlements can change.
Related comparisons
- Best exchange rate APIs for developers: The broader comparison of developer exchange-rate services
- Best currency APIs (2026): Currency coverage and amount conversion in apps
- Best forex APIs (2026): Streaming, candles, history, and execution requirements
- Free exchange rate API comparison: A closer look at free-plan limits and trade-offs
- Best free exchange rate APIs (2026): Free quotas, freshness, keyless access, and commercial terms
- Best currency converter APIs (2026): Amount conversion endpoints, plan access, and app integration
- ExchangeRate-API alternatives (2026): Alternatives for daily rates, conversion, history, and MCP
- currencyapi alternatives (2026): Commercial terms, free access, update plans, and conversion
- Fixer alternatives (2026): Base selection, conversion access, and alternatives to Fixer
- Open Exchange Rates alternatives (2026): Free bases, amount endpoints, MCP, and billing periods
- Best currency APIs with MCP (2026): MCP connections, tool access, quotas, and rate terms
- Exchange rates in Google Sheets and Excel: Sheets formulas, Apps Script, Excel data, and Power Query
- OANDA API alternatives: Observation types, historical depth, and alternatives to OANDA
- Frankfurter alternatives: Daily rates, newer observations, conversion, and keyless access
- Currencylayer alternatives: Commercial terms, source currencies, conversion, and update plans
- exchangerate.host alternatives: Free access, date ranges, and alternatives to exchangerate.host
- XE API alternatives: Annual billing, update intervals, and alternatives to XE
- XE vs Wise exchange rates: Converter displays, transfer quotes, and rates in code