CompareRoundup

Best historical exchange rate APIs (2026)

Choose a historical exchange rate API by the currencies, dates, and observation intervals your application needs. An archive advertised from 1990 or 1948 does not establish that every pair goes back that far. This list compares daily snapshots, date ranges, averages, and intraday access. exchangerate.dev offers recent daily history on Free and deeper archives on paid plans; the alternatives differ in base restrictions, query windows, and published coverage.

18 Oct 2026 · 12 min read

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.

ProviderHistoryGranularityPlan for historyPrice from
exchangerate.devFrom 1999-01-04 on Plus and Pro (later starts for some currencies); Basic 1 year; Free 30 daysDaily; 1h and 4h for 30 days on Plus; 1 minute to 4 hours at full depth on ProFree for 30 days; full daily history from Plus at $39/month$19/month Basic; 100,000 requests
Narwhal APIStored observations by date range; start date not publishedStored observation datesFree 12 months; Basic 5 years; Pro full$59/month Basic; 100,000 requests
Open Exchange RatesDaily from 1 January 1999End of day, one set per UTC dayHistorical on Free (USD base); time series on Enterprise and Unlimited, one month per query$12/month Developer; 10,000 requests
FrankfurterSome series from 1948; coverage varies by pairDaily; weekly or monthly groupingFree, no keyFree; no paid plans; self-hosting with Docker
FixerBack to January 1999DailyHistorical on Free; time series from Professional at $59.99/month$14.99/month Basic; 10,000 requests
exchangerate.hostDepth not on its pricing pageEnd of day, published 00:05 GMT for the previous dayHistorical 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 APIBack to 1998; monthly averagesDaily on Lite; hourly Intermediate; 15 minutes PrimeEvery package, from $799/year$799/year Lite; 10,000 requests/month
OANDA Exchange Rates APIOver 32 years advertised; start year not statedDaily, weekly, quarterly, annual and custom averages; up to 96 intraday fixings a dayDaily averages on every plan; period averages and open/close from PremiumLite: $450 or $4,850, two unlabelled price sets on its pricing page; 100,000 quotes/month
ExchangeRate-APIFrom 1 January 1990 for a few currencies; all codes from 1 January 2021One indicative mid rate per dayPro ($10/month), Business or Volume$10/month Pro; 30,000 requests
currencyapiDaily back to 1999DailyPlan 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 needStart with
Pair coverageRequest the oldest required date for every currency. An archive’s earliest observation may belong to only a small subset of its catalogue.
Observation intervalDecide whether you need a daily snapshot, period average, or intraday observation. Confirm that the chosen plan includes that exact interval.
Range accountingEstimate requests for a full date range, including pagination and per-day charges. Compare that total with the intended plan’s allowance.
Date boundariesCheck 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.

Frequently asked questions

Which exchange rate API has the oldest history?

Frankfurter lists some series from 1948, while ExchangeRate-API has a smaller set from 1 January 1990. Neither date establishes complete coverage for every currency. Check the exact pair and date before choosing an archive.

How much history does exchangerate.dev Free include?

Free includes 30 days of daily history. Basic includes one year. Plus and Pro extend from 1999-01-04 where available, with later starts for some currencies. Full daily history starts at $39 per month on Plus.

Does ExchangeRate-API history cover all currencies from 1990?

No. History starts on 1 January 1990 for a few currencies; all codes are available from 1 January 2021. Historical requests require Pro, Business, or Volume. Pro starts at $10 per month.

Does Open Exchange Rates include time series on Free?

Free can request historical snapshots with a USD base. The time-series endpoint requires Enterprise or Unlimited, allows up to one month per query, and counts each day as one request. Historical snapshots and range queries have different plan access.

Does Narwhal API publish one history start date?

No universal FX history start date is published. Its plan windows are twelve months on Free, five years on Basic, and full available history on Pro. Check the stored dates for the currency you need.

Keep reading

Start with a free API key

exchangerate.dev offers keyless evaluation; a free key includes 5,000 calls a month across 144 currencies with no card. All 144 currencies update roughly every 60 seconds on trading days, every response carries source and market_session, and MCP ships on every plan.

Get a free key