snapdata
Datasets

FX

WORLD (currency ratios). USD/INR and the majors, cross-rated from ECB reference rates. Daily to 1999.

Instruments

instrument_idQuoteCalendarSource
USD.INR.RATEINR per USDGLOBAL-FXECB cross
EUR.USD.RATEUSD per EURGLOBAL-FXECB
GBP.USD.RATEUSD per GBPGLOBAL-FXECB cross
USD.JPY.RATEJPY per USDGLOBAL-FXECB cross
USD.SGD.RATESGD per USDGLOBAL-FXECB cross
USD.AED.RATEAED per USDGLOBAL-FXpeg
/api/v1/fx/world/latest.json
/api/v1/fx/world/series/30d.json

Why FX is world, not in

Scope is the denomination of the values, not the consumer's nationality. A rate is a ratio, not a quantity denominated in one country, so every pair lives under world, including USD/INR.

Cross-rates

ECB publishes EUR-based reference rates: each figure is units of that currency per one euro. Everything we serve is computed from that base and quoted market-convention:

USD/INR = INR_per_EUR ÷ USD_per_EUR
GBP/USD = USD_per_EUR ÷ GBP_per_EUR

If ECB's USD rate is missing for a day, we drop the whole day rather than emitting the two crosses that survive. A partial day would hide the problem.

The dirham

USD.AED.RATE is a constant, 3.6725. The UAE Central Bank has hard-pegged it since 1997 and ECB does not publish it. It is emitted on the same dates ECB published, so it shares the FX calendar rather than appearing to trade when nothing else does.

Timing and coverage

ECB publishes around 16:00 CET on TARGET business days. History runs to 1999-01-04, the euro's introduction, that is the floor, not a choice.

On a TARGET holiday ECB serves the previous business day's file unchanged, with no indication that today is closed. We parse the date the body carries, so a holiday surfaces as an older latest_date rather than as today's rate.

On this page