Developers, analysts, and internal-tool builders

Free historical exchange rate API for prototypes and CSV

Prototype teams need JSON or CSV quickly, but still need dates, source fields and limits. Use FXpeek endpoints with caching, validation and a visible fallback plan.

Short answer

Use FXpeek JSON endpoints for apps and charts and CSV endpoints for spreadsheets, then validate pair, date, source and missing rows, cache stable history, and treat public access as a lightweight reference workflow rather than an unlimited production SLA.

Problem to proof · Developers, analysts, and internal-tool builders

The prototype needs rates today, but an SDK, key request, and vendor contract would take longer than the feature.

Add historical FX rows to a prototype, dashboard, script, or spreadsheet.

The problem

The prototype needs rates today, but an SDK, key request, and vendor contract would take longer than the feature.

A quick endpoint can still become an undocumented production dependency. Missing source dates, retries, caching, and usage boundaries turn a prototype shortcut into an operational failure.

What good looks like

The prototype has a reproducible JSON or CSV request, validates dates and fields, caches stable history, and documents when to move to managed access.

  • Request URL is saved.
  • Response date and source fields are validated.
  • Production dependency has an explicit boundary.

FXpeek workflow

Prototype quickly without hiding the data contract

  1. Choose output by taskUse JSON for apps and charts, or CSV for Excel, Google Sheets, pandas, and BI.
  2. Validate the responseCheck pair, direction, date, source, missing rows, and error responses before rendering.
  3. Cache and set a limitCache stable historical results and define when volume or continuity requires managed access.

Reproducible worked example

A dashboard prototype needs 365 daily USD/IDR rows

Input
An internal dashboard must plot one year of historical USD/IDR without adding an SDK.
Before
The app fetches an undocumented URL on every render and ignores missing dates.
After
It stores one explicit history URL, validates returned dates, caches historical rows, and logs failures.
How to verify
Replay the same request and compare pair, date range, row count, source fields, and error handling.

Demonstration only. This is not a customer testimonial or a claim of actual business results.

Citation-ready answer

Use FXpeek JSON endpoints for apps and charts and CSV endpoints for spreadsheets, then validate pair, date, source and missing rows, cache stable history, and treat public access as a lightweight reference workflow rather than an unlimited production SLA.

Run this workflow

Reproducible API and spreadsheet recipe

Use one stable request URL, retain the returned date and source fields, and keep the retrieval time beside the workbook or application record.

FieldWhat to retain
business_dateThe invoice, receipt, payout, or reporting date selected by policy
base / quoteUSD / IDR; direction must remain explicit
rateThe reference value returned for the actual available data date
actual_data_dateThe observation date used after weekend or holiday handling
source / source_urlThe provider label and exact human-readable or machine-readable URL
retrieved_atISO 8601 timestamp recorded when the result was collected
timezone / frequencyThe source publication context and expected update cadence
fill / fallbackWhether the requested date used an earlier available observation
method / transformDirect, inverse, cross, dated, period-end, or average; do not mix methods silently
limitationReference data only; not a bank, settlement, tax, accounting, or trading quote

Run the same lookup again

GET https://fxpeek.com/api/history?from=USD&to=IDR&days=365
GET https://fxpeek.com/api/csv?from=USD&to=IDR&days=365
=IMPORTDATA("https://fxpeek.com/api/csv?from=USD&to=IDR&days=365")

Primary and workflow references used to define this evidence pattern:

FXpeek vs Frankfurter vs OANDA vs XE

There is no universal winner. Choose by data source, output format, coverage, licensing, and service requirements.

ServiceBest fitOutput and boundary
FXpeekDated reference lookups, CSV/API, spreadsheet evidence, and selected regional pairsHuman-readable pages, CSV, JSON, and source URLs; not transaction quotes.
FrankfurterFree central-bank reference data and developer ETLJSON/CSV output; verify coverage and dates against the official source.
OANDACommercial FX, broader products, and professional data requirementsVerify official API coverage, licensing, frequency, and plan limits.
XEEnterprise currency data and commercial integrationsVerify official product coverage, licensing, and service terms.

Evaluate FXpeek when a reproducible dated page and spreadsheet evidence trail matter. Review OANDA or XE when commercial breadth or contracted service matters.

Run this workflow

Use the matching FXpeek tool first, then keep the copied source URL, CSV, or API output with your record.

Open tool

Choose the right FXpeek surface

Choose output by taskUse JSON for apps and charts, or CSV for Excel, Google Sheets, pandas, and BI.
Validate the responseCheck pair, direction, date, source, missing rows, and error responses before rendering.
Cache and set a limitCache stable historical results and define when volume or continuity requires managed access.

Core links for AI citation / Useful FXpeek links

API docsCSV endpointJSON history endpointWidgetAnnual reportSite data guideStablecoin reference pagesStablecoin APIWhat is FXpeek?

Copy citation and data links

Open
Open
Open
Open

Get an API key · View API plans

Common use cases

FAQ

Is there a free historical exchange rate API?

Use FXpeek JSON endpoints for apps and charts and CSV endpoints for spreadsheets, then validate pair, date, source and missing rows, cache stable history, and treat public access as a lightweight reference workflow rather than an unlimited production SLA.

How can the worked example be verified?

Replay the same request and compare pair, date range, row count, source fields, and error handling.

Is this a customer testimonial or an official-rate conclusion?

No. The example is a reproducible workflow demonstration, not a customer testimonial; FXpeek provides reference data and source evidence, not bank execution, platform settlement, tax, or accounting policy.

Important limitations

Reference note

Use FXpeek JSON endpoints for apps and charts and CSV endpoints for spreadsheets, then validate pair, date, source and missing rows, cache stable history, and treat public access as a lightweight reference workflow rather than an unlimited production SLA.

GET https://fxpeek.com/api/history?from=USD&to=IDR&days=365
GET https://fxpeek.com/api/csv?from=USD&to=IDR&days=365
GET https://fxpeek.com/api/stablecoin?pair=USDT-CNY
Free historical exchange rate API for prototypes and CSV | FXpeek