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.
01
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.
02
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.
03
FXpeek workflow
Prototype quickly without hiding the data contract
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.
04
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.
Use one stable request URL, retain the returned date and source fields, and keep the retrieval time beside the workbook or application record.
Field
What to retain
business_date
The invoice, receipt, payout, or reporting date selected by policy
base / quote
USD / IDR; direction must remain explicit
rate
The reference value returned for the actual available data date
actual_data_date
The observation date used after weekend or holiday handling
source / source_url
The provider label and exact human-readable or machine-readable URL
retrieved_at
ISO 8601 timestamp recorded when the result was collected
timezone / frequency
The source publication context and expected update cadence
fill / fallback
Whether the requested date used an earlier available observation
method / transform
Direct, inverse, cross, dated, period-end, or average; do not mix methods silently
limitation
Reference 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:
There is no universal winner. Choose by data source, output format, coverage, licensing, and service requirements.
Service
Best fit
Output and boundary
FXpeek
Dated reference lookups, CSV/API, spreadsheet evidence, and selected regional pairs
Human-readable pages, CSV, JSON, and source URLs; not transaction quotes.
Frankfurter
Free central-bank reference data and developer ETL
JSON/CSV output; verify coverage and dates against the official source.
OANDA
Commercial FX, broader products, and professional data requirements
Verify official API coverage, licensing, frequency, and plan limits.
XE
Enterprise currency data and commercial integrations
Verify 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.
Add historical FX rows to a prototype, dashboard, script, or spreadsheet.
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.
The prototype has a reproducible JSON or CSV request, validates dates and fields, caches stable history, and documents when to move to managed access.
An internal dashboard must plot one year of historical USD/IDR without adding an SDK.
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
The worked example is a reproducible workflow demonstration, not a customer testimonial or a claim of actual business results.
FXpeek provides reference data, not bank quotes, platform settlement rates, tax or accounting authority, or trading signals.
Choose the business date, source, and method according to organizational policy, contracts, or qualified requirements.
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