sifting/io
Currencies · Forex data API

Real-time and historical forex data, in one unified API.

Currency-pair quotes from institutional liquidity providers, delivered over REST and WebSocket with the same JSON schema as the rest of the SiftingIO API. Majors, minors, and global exotics, with multi-region routing, sub-100ms median latency, and a 99.9% uptime SLA.

All products
  • Majors · minors · exoticsCoverage
  • <100msMedian latency
  • 99.9%Uptime SLA
  • 24/7Endpoints available
Capabilities

Everything you need to build on FX.

One credential, one schema, one set of rate limits, covering real-time quotes, historical depth, and global pair coverage.

Real-time quotes

Bid, ask, mid, spread (bps), and venue-count over WebSocket and REST. Sub-100ms median delivery from primary regions.

Tick-level history

Full historical depth with tick-level granularity and OHLCV at 1m/5m/15m/1h/4h/1d for backtesting, research, and audit.

Unified JSON schema

FX returns the same fields as crypto and on-chain: one parser, one client, no asset-specific glue code.

Global coverage

Pairs from developed and emerging markets, sourced from institutional liquidity providers worldwide. Not a single-region feed.

Built for production

99.9% monthly uptime SLA with multi-region routing, continuous monitoring, and a public status page with incident history.

One credential, every channel

The same bearer token authenticates REST snapshots and WebSocket streams. Pin a version, scale rate limits, scope keys per environment.

API · forex

One endpoint, every pair, every channel.

REST snapshots and WebSocket streams share the same authentication and the same JSON shape, for FX, crypto, and beyond.

GET · forex ticker
curl https://api.siftingio.com/v1/forex/ticker \
  -H "Authorization: Bearer sft_•••" \
  -G --data-urlencode "symbol=EUR/USD"
200 OK · application/json
{
  "symbol": "EUR/USD",
  "mid": "1.07432",
  "bid": "1.07429",
  "ask": "1.07435",
  "spread_bps": 0.56,
  "volume_indicator": "high",
  "change_24h": "0.34",
  "venues": 6,
  "ts": 1714058400123
}
WebSocket · subscribe
const ws = new WebSocket("wss://stream.siftingio.com/v1/ws");

ws.addEventListener("open", () => {
  ws.send(JSON.stringify({
    op: "subscribe",
    channel: "quotes",
    symbols: ["EUR/USD", "GBP/USD", "USD/JPY"],
  }));
});
stream · quotes
{ "type": "quote", "symbol": "EUR/USD", "bid": "1.07428", "ask": "1.07434", "ts": 1714058401412 }
{ "type": "quote", "symbol": "GBP/USD", "bid": "1.25711", "ask": "1.25718", "ts": 1714058401488 }
{ "type": "quote", "symbol": "USD/JPY", "bid": "152.412", "ask": "152.418", "ts": 1714058401611 }
Coverage

Majors, minors, and global exotics.

A representative sample of supported pairs is shown below. Coverage extends beyond this list and continues to expand. Need a pair you don’t see? Request it →

Majors

Highest liquidity
  • EUR/USD
  • USD/JPY
  • GBP/USD
  • USD/CHF
  • USD/CAD
  • AUD/USD
  • NZD/USD

Minors

Cross-pairs
  • EUR/GBP
  • EUR/JPY
  • GBP/JPY
  • EUR/CHF
  • EUR/AUD
  • AUD/JPY
  • CHF/JPY
  • GBP/CHF

Exotics

Emerging & frontier
  • USD/TRY
  • USD/MXN
  • USD/ZAR
  • USD/SGD
  • USD/HKD
  • USD/INR
  • EUR/TRY
  • GBP/SGD
  • USD/THB
Built for

Where teams ship FX with SiftingIO.

FX algo trading

Quote streams for execution and tick-level history for strategy research, with the same credential across both.

Treasury & hedging

Mid-rates and reference points for treasury operations, hedging, and intra-day exposure marking.

Cross-border payments

Live FX rates for payment quotes, FX-as-a-service back-ends, and international payouts.

Research & backtests

Decade-spanning OHLCV and tick history for quantitative research, model validation, and audit trails.

FAQ

Forex API, frequently asked.

What currency pairs does the SiftingIO forex API cover?

Coverage spans the seven majors (EUR/USD, USD/JPY, GBP/USD, USD/CHF, USD/CAD, AUD/USD, NZD/USD), all standard cross-pairs and minors (e.g. EUR/GBP, EUR/JPY, GBP/JPY, AUD/JPY, EUR/AUD, CHF/JPY), and a broad set of global exotics (e.g. USD/TRY, USD/MXN, USD/ZAR, USD/SGD, USD/HKD, USD/INR, EUR/TRY, GBP/SGD). New pairs are added on request for enterprise customers.

Where does the forex data come from?

FX quotes are sourced from one or more institutional liquidity providers and aggregated into a single canonical mid, bid, and ask. SiftingIO does not redistribute raw, unmodified primary-venue feeds; values are derived and calculated from underlying quotes. Methodology is documented in the API reference.

How fresh is the data, and what's the latency?

Tick-level updates are delivered over WebSocket with sub-100ms median latency from our primary regions; REST snapshot endpoints return the most recent quote with the same freshness budget. SiftingIO operates the service to a 99.9% monthly uptime SLA with multi-region routing.

Is historical forex data included?

Yes. Tick-level history and OHLCV at 1m, 5m, 15m, 1h, 4h, and 1d resolutions are included, not gated behind a separate contract. Historical backfill covers the ranges needed for research, backtesting, and audit. History is included on every plan that covers the underlying pairs.

Is forex data available 24/7?

FX markets trade five days a week, but SiftingIO endpoints are available 24/7 for snapshot reads, historical queries, and WebSocket subscriptions. During weekend gaps we surface the last published quote with a clear timestamp so client applications can render or hold positions deterministically.

How do I authenticate the forex API?

A single bearer token works across REST and WebSocket for forex, crypto, and on-chain endpoints. The same API key authenticates every channel and version: no per-asset credential rotation, no separate keys for streaming vs. snapshots.

What's the JSON schema for an FX quote?

Quotes return a unified shape: symbol, mid, bid, ask, spread_bps, volume_indicator, change_24h, ts (epoch ms), and a venues count. The same field names appear across crypto and forex, so a single parser handles both asset classes, and your code does not grow as we add markets.

Can I redistribute the forex data inside my product?

Redistribution and display use are governed by your subscription tier and the SiftingIO Terms of Service. Standard plans permit display in your end-user product; redistribution as raw feeds, B2B sublicensing, and high-volume display use require an enterprise agreement. Customers are responsible for accurate usage reporting; please see the disclosures page.

Do you support fixings, end-of-day, and reference rates?

End-of-day OHLCV is available for every covered pair. Custom fixings and time-of-day reference rates (e.g. London 4 PM) can be configured for enterprise customers; contact sales to scope.

Where is SiftingIO available?

The forex API is offered globally where lawful. Coverage includes pairs from developed and emerging markets, not just one region. Users in jurisdictions where the service is restricted are responsible for ceasing use accordingly.

99.9% SLA · Multi-region · Worldwide

Start building on FX in minutes.

Free tier included, no sales call required. Generate an API key and hit the FX endpoints over REST or WebSocket, with the same auth, same schema, same SLA as the rest of the platform.