Forex API
Finance
Uptime
99.5%
Requests served<1k
30d agoToday
Avg response time
22ms
Version
v1.0.0
Member since Jun 2026
Endpoints · 8 of 8
curl -X GET https://eu-north-1.apimercado.com/v1/e72bpbz582mh/fx-api/latest/v1/market \ -H "Authorization: Bearer $KEY"
Response
{ "data": { "base": "EUR", "rates": {} }, "meta": { "source": "market_data", "requestId": "string", "apiVersion": "string" } }
Exchange rates without the integration pain. One key, one clean JSON envelope, eight endpoints, two kinds of rates:
- Market: live mid-market FX quotes and finalized daily closes. Built for dashboards, pricing and alerts.
- Reference: the official daily fixings of the European Central Bank and the National Bank of Romania, exactly as published. The numbers you need for invoicing, accounting, tax and customs.
Quick start
GET /v1/market?from=EUR # live quotes, all currencies
GET /v1/market?from=EUR&to=USD,GBP # live quotes, selected targets
GET /v1/convert?from=EUR&to=RON&amount=149.99&source=bnr
GET /v1/market/history?from=EUR&to=USD&dateFrom=2026-01-01&dateTo=2026-03-01&fill=previous
GET /v1/market/fluctuation?from=EUR&to=USD&dateFrom=2026-01-01&dateTo=2026-06-01
GET /v1/reference?source=ecb&from=EUR # full ECB board
GET /v1/reference/history?source=bnr&from=EUR&to=RON&dateFrom=2026-01-01&dateTo=2026-03-01
GET /v1/compare?from=EUR&to=RON # market vs ECB vs BNR + spread
GET /v1/currencies
Send your API key in the x-api-key header on every /v1/* request. That's the whole setup.
Why this API
- Any pair, one call. Central banks publish one direction against one pivot (EUR for ECB,
RON for BNR). We compose every other pair for you, inverse and cross rates included, and the
basisfield tells you exactly how the number was built. - Audit-grade precision. Reference rates are exact decimal strings: published values verbatim, derived values at 12 decimals. No float drift in your books. (Market rates are plain numbers.)
- Honest freshness.
meta.freshnesstells you whether today's fix is out (current), still pending (not_published_yet), or not expected at all (weekends). No guessing, no stale data passed off as fresh. - History built in. Up to 5 years per request, backfilled on demand, always in ascending date order. Market history serves finalized closes only; reference history includes today as soon as the bank publishes.
- Market vs official, one call.
/v1/compareputs the live mid-market quote next to the ECB and BNR fixings and computes the spread - see exactly what the market costs you versus the official rate. - Gap-free series on demand.
fill=previousturns sparse business-day history into a dense daily series (weekends/holidays carry the last value, flaggedfilled), without ever fabricating a not-yet-final close or fix.
Responses
Every success is { data, meta }. meta always carries requestId and apiVersion, plus
per-endpoint fields such as source, rateKind, freshness. Every error is
{ error: { code, message, status, requestId } } with stable, machine-readable codes such as
UNSUPPORTED_PAIR (400) and RATE_UNAVAILABLE (404).