Currency Exchange Rate API

Real-Time Currency Exchange Rate API: 628 Pairs, 127 Currencies

Query live exchange rates for majors, crosses and exotics: 628 currency pairs across 127 currencies in one consistent JSON API. Every response includes the current rate plus bid/ask, daily high/low and change, ready to power trading tools, dashboards and multi-currency checkout.

Get Your API Key Discover Docs

← All financial data endpoints

Why Use FinanceFlowAPI’s Currency Exchange Rate API?

Most currency data providers either cap you to a handful of major pairs or split majors, crosses and exotics across different plans. The Currency Exchange Rate API normalizes 628 pairs, both directions of every pair (e.g. EUR/USD and USD/EUR independently), into one schema and one authentication method, so a new market or currency corridor is a parameter change, not a new integration.

  • One JSON schema for every pair, no per-source parsing.
  • 628 pairs across 127 currencies verified live against production, majors through exotics.
  • A dedicated catalog endpoint to discover the exact pairs available for a currency, instead of guessing symbols.
  • Same account, API key and billing as the rest of FinanceFlowAPI: Commodities, Bonds, Economic Calendar and Economic Indicators data.

Key Capabilities

  • Full quote data: every response includes price, bid, ask, open, high, low, chg and chg_percent, so you get a tradeable spread and daily range in one call.
  • Trading-session awareness: a trading_status field (open/close) tells you whether the quote reflects a live session or the last close, useful since FX trades roughly 24/5 and goes quiet on weekends.
  • Query by exact pair or by currency: request one specific pair (pair=EUR/USD) or every pair involving a currency (currency=USD) from the same endpoint.
  • Built-in discovery: currency-catalog lists every supported pair, optionally filtered by currency, so you never have to guess a symbol.

Data Coverage & Trust

MetricValue
Currency pairs covered628 (verified live via currency-catalog, 2026-08-23)
Unique currencies127, spanning majors (USD, EUR, GBP, JPY…) through regional and exotic currencies
Pair directionsBoth directions of a pair are separate catalog entries where available (e.g. EUR/USD and USD/EUR), each independently queryable
Response formatJSON
Historical / time-series dataNot available. This API currently has no historical/date-range endpoint for currency data; currency-spot returns only the latest quote plus intraday high/low/change
AuthenticationAPI key, passed as an api_key query parameter
Rate limitPer-minute request limit, varies by subscription plan. See Pricing & Access below
Update frequencyNear real-time per the site’s API documentation; currency-spot is served without server-side caching, so freshness tracks the upstream data source directly

Data Methodology

Currency Exchange Rate API data is aggregated from market data sources and normalized into one consistent quote schema (price, bid/ask, open/high/low, change and trading status) for every supported pair, so your integration doesn’t need a different parser per currency. Sourced from aggregated third-party market and statistical data providers; the specific vendor and full per-pair methodology are not published.

Live API Playground Coming Soon

An interactive API Playground for this endpoint is planned. Until it ships, use the request and response examples below, or your own HTTP client, to try the API live with your key.

Request Example

GET https://financeflowapi.com/api/v1/currency-spot?api_key=YOUR_API_KEY&pair=EUR/USD

Response Example

{
  "success": true,
  "code": 200,
  "message": "OK",
  "meta": {
    "timestamp": 1787483995,
    "request_id": "6a8ad75b71af0"
  },
  "data": [
    {
      "pair": "EUR/USD",
      "price": "1.1677",
      "open": "1.1678",
      "bid": "1.1675",
      "ask": "1.1678",
      "high": "1.1712",
      "low": "1.1669",
      "chg": "-0.0001",
      "chg_percent": "-0.01",
      "trading_status": "close",
      "last_update": "2026-08-21"
    }
  ]
}

Note: this sample was captured over a weekend, when FX markets are closed, hence trading_status: "close" and a date-only last_update. During an active session, trading_status reads open and last_update includes a time, e.g. 2026-08-21 23:59:51.

API Parameters

currency-spot. Live quote for one pair, or every pair involving one currency:

ParameterRequiredDescription
api_keyYesYour FinanceFlowAPI key
pairOne of pair or currencyExact pair as returned by currency-catalog, e.g. EUR/USD
currencyOne of pair or currencyA currency code, e.g. USD. Returns every pair where it appears as either side. Cannot be combined with pair in the same request

currency-catalog. Discover available pairs:

ParameterRequiredDescription
api_keyYesYour FinanceFlowAPI key
currencyNoFilter to pairs involving this currency, e.g. USD. Omit to list all 628 pairs

Response Schema

currency-spot. Each item in data:

FieldTypeDescription
pairstringCurrency pair, matches catalog spelling
pricestring (numeric)Latest traded price
openstring (numeric)Opening price for the current session
bidstring (numeric)Current bid price
askstring (numeric)Current ask price
highstring (numeric)Session high
lowstring (numeric)Session low
chgstring (numeric)Absolute price change vs. the session open
chg_percentstring (numeric)Percent change vs. the session open: a plain number, no % character
trading_statusstringopen or close: whether the pair is in a live trading session
last_updatestringWhen the quote was last updated. Full datetime (YYYY-MM-DD HH:MM:SS) if it happened earlier the same day; falls back to date-only (YYYY-MM-DD) once the last update is more than a day old, e.g. over a weekend, when FX trading is closed

currency-catalog. Each item in data:

FieldTypeDescription
pairstringCurrency pair, e.g. EUR/USD

HTTP Status & Errors

HTTP codeMeaningWhen it happens
200OKRequest succeeded, data returned
400Bad requestOn currency-spot: neither pair nor currency supplied
400Bad requestOn currency-spot: pair and currency supplied together: they are mutually exclusive, use only one per request
403Invalid API key or subscription expiredapi_key missing, invalid, or your subscription has expired
404Data not foundUnknown or misspelled pair or currency on either endpoint
429Rate limit exceededYou exceeded the per-minute request limit for your subscription plan
500Internal errorUnexpected server-side failure (rare)

Code Examples

curl "https://financeflowapi.com/api/v1/currency-spot?api_key=YOUR_API_KEY&pair=EUR/USD"
import requests

url = "https://financeflowapi.com/api/v1/currency-spot"
params = {
    "api_key": "YOUR_API_KEY",
    "pair": "EUR/USD"
}

response = requests.get(url, params=params)
data = response.json()
print(data)
const params = new URLSearchParams({
  api_key: "YOUR_API_KEY",
  pair: "EUR/USD"
});

fetch(`https://financeflowapi.com/api/v1/currency-spot?${params}`)
  .then(res => res.json())
  .then(data => console.log(data));
<?php
$params = http_build_query([
    'api_key' => 'YOUR_API_KEY',
    'pair'    => 'EUR/USD',
]);

$response = file_get_contents("https://financeflowapi.com/api/v1/currency-spot?{$params}");
$data = json_decode($response, true);

print_r($data);
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "net/url"
)

func main() {
    params := url.Values{}
    params.Add("api_key", "YOUR_API_KEY")
    params.Add("pair", "EUR/USD")

    resp, err := http.Get("https://financeflowapi.com/api/v1/currency-spot?" + params.Encode())
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)

    var data map[string]interface{}
    json.Unmarshal(body, &data)

    fmt.Println(data)
}

Use Cases

  • Forex trading platforms. Power live rate widgets and trading signals with bid/ask spreads across 628 pairs.
  • Multi-currency checkout & invoicing. Convert prices for international customers using real-time exchange rates instead of a stale daily fixing.
  • Financial dashboards. Display exchange rates alongside Commodity Price API data for macro/FX context.
  • Rate alert bots. Trigger notifications when a pair’s chg_percent crosses a threshold.

Who Is This API For?

  • Forex traders and trading-bot developers who need live bid/ask quotes across majors and exotics
  • Fintech and e-commerce platforms that need real-time currency conversion for global transactions
  • Fintech dashboards pairing live FX rates with bond yields or commodity prices via the same api_key: one integration, multiple asset classes
  • Publishers and content platforms that need sourced currency rate data

Market Data API

Test Plan

$5.00/month

Historical data, days: 60

Requests limit: 200

Requests Speed limit(per minute): 20

Standard Subscription

$25.00/month

Historical data, years: 5

Requests limit: 10000

Requests Speed limit(per minute): 60

Premium Subscription

$50.00/month

Historical data, years: 20+

Requests limit: 100000

Requests Speed limit(per minute): 120

Limitations

  • No historical/time-series data on this API for currencies: currency-spot returns only the latest quote plus intraday high/low/change, not a date-range history.
  • pair and currency are mutually exclusive on currency-spot: supplying both returns a 400.
  • pair/currency must match the catalog spelling exactly; there is no free-text or fuzzy search.
  • Endpoint access and your per-minute rate limit depend on your subscription plan.

FAQ

What is a Currency Exchange Rate API?

A Currency Exchange Rate API gives you programmatic access to live foreign exchange quotes (price, bid, ask, daily range and change) for currency pairs, in one machine-readable format instead of scraping a rates page or integrating a broker feed.

How many currency pairs are supported?

628 pairs across 127 currencies, verified live against our production API, covering majors, crosses and exotic/regional currencies. Use currency-catalog to see the full list, optionally filtered by currency.

Is this the same as a forex API?

It covers the same underlying exchange-rate data that forex-focused APIs provide, delivered as simple JSON quotes rather than a full trading/broker platform. This is a good fit if you need rate data, not order execution.

How do I get the rate for both directions of a pair, e.g. EUR/USD and USD/EUR?

Both directions are separate catalog entries where available: query pair=EUR/USD and pair=USD/EUR as two independent requests, or use currency=EUR to get every pair involving EUR in one call.

Do you provide historical exchange rate data?

Not currently. This API has no historical/date-range endpoint for currency data. currency-spot only returns the latest quote plus intraday high/low/change.

How do I get started?

Create a FinanceFlowAPI account and choose a plan: see Pricing & Access above for current plans and limits.

Full API documentation →