FXpeek public JSON and CSV endpoints work without an API key: use 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.
Prototype teams need JSON or CSV quickly, but also dates, source fields and limits. Use FXpeek endpoints with caching, validation and a fallback plan.
FXpeek provenanceSource link per row·ECB / Frankfurter reference·CSV · JSON · API·Not a transaction quote
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. Public FXpeek endpoints work without an API key, so a prototype can call them directly.
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
FXpeek public JSON and CSV endpoints work without an API key: use 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:
What to verify before choosing a cross-border payment API (checklist)
High-signal Reddit pain: advertised 2-day settlement that became 5 business days; failed transfers returning only generic error codes. FXpeek does not recommend providers or promise settlement; verify each item with any provider before signing. Use FXpeek dated reference rates for independent cross-checks; transaction rates are the provider's.
Check
What to verify
fee_type
Fixed, percentage, mid-market markup, receiver-side deductions — confirm each in writing
settlement_sla
Advertised vs actual business days; put it in the SLA and validate with a small real transfer
failed_transfer
Failure/return flow, funds hold time, return fees
error_codes
Specific error codes and human-readable messages on failure, not generic codes
coverage
Destination country, currency, and receiver type (consumer/business) availability
reference_vs_transaction
How the provider quote deviates from an independent reference; cross-check with FXpeek dated reference values
support_escalation
Response channel and turnaround when something breaks
This checklist is due-diligence aid, not payment, compliance, or investment advice; all SLA/fee claims must be verified against provider documentation.
FXpeek vs Frankfurter vs OANDA vs XE
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.
fawazahmed0/currency-api
GitHub-hosted free multi-source currency API
Full history, no signup; release cadence follows the repository.
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.
Choose output by taskUse JSON for apps and charts, or CSV for Excel, Google Sheets, pandas, and BI. Public FXpeek endpoints work without an API key, so a prototype can call them directly.
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.
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 the FXpeek API free?
FXpeek provides lightweight public JSON and CSV example endpoints for prototypes, spreadsheets, and widgets.
Should developers use JSON or CSV?
Use JSON for apps and charts, and CSV for Excel, Google Sheets, pandas, and reports.
Does FXpeek support long-tail currency pairs?
FXpeek prioritizes regional and long-tail currency-pair pages backed by available data.
Are FXpeek API rates transaction prices?
No, FXpeek API responses are reference rates, not trading quotes or settlement prices.
Is there a worked example of the free endpoint with no API key?
Yes. GET https://fxpeek.com/api/history?from=USD&to=CNY&date=2026-06-30 returns JSON with rate 6.7855, date 2026-06-30 and source "ECB / Frankfurter" without an API key; GET https://fxpeek.com/api/csv?from=USD&to=CNY&days=3 returns CSV rows with the fields date, base_currency, quote_currency, rate, source, fill (fill=actual marks a real observation for that date).
Is there a free historical exchange rate API?
FXpeek public JSON and CSV endpoints work without an API key: use 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
FXpeek public JSON and CSV endpoints work without an API key: use 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 | FXpeek