Real-Time Currency Exchange Rate API: 3,281 Pairs, 155 Currencies
Query live exchange rates for majors, crosses and exotics: 3,281 currency pairs across 155 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 3,281 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.
- 3,281 pairs across 155 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,chgandchg_percent, so you get a tradeable spread and daily range in one call. - Trading-session awareness: a
trading_statusfield (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-cataloglists every supported pair, optionally filtered by currency, so you never have to guess a symbol.
Data Coverage & Trust
| Metric | Value |
|---|---|
| Currency pairs covered | 3,281 (verified live via currency-catalog, 2026-11-11) |
| Unique currencies | 155, spanning majors (USD, EUR, GBP, JPY…) through regional and exotic currencies |
| Pair directions | Both directions of a pair are separate catalog entries where available (e.g. EUR/USD and USD/EUR), each independently queryable |
| Response format | JSON |
| Historical / time-series data | Not 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 |
| Authentication | API key, passed as an api_key query parameter |
| Rate limit | Per-minute request limit, varies by subscription plan. See Pricing & Access below |
| Update frequency | Near 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.
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:
| Parameter | Required | Description |
|---|---|---|
api_key | Yes | Your FinanceFlowAPI key |
pair | One of pair or currency | Exact pair as returned by currency-catalog, e.g. EUR/USD |
currency | One of pair or currency | A 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:
| Parameter | Required | Description |
|---|---|---|
api_key | Yes | Your FinanceFlowAPI key |
currency | No | Filter to pairs involving this currency, e.g. USD. Omit to list all 3,281 pairs |
Response Schema
currency-spot. Each item in data:
| Field | Type | Description |
|---|---|---|
pair | string | Currency pair, matches catalog spelling |
price | string (numeric) | Latest traded price |
open | string (numeric) | Opening price for the current session |
bid | string (numeric) | Current bid price |
ask | string (numeric) | Current ask price |
high | string (numeric) | Session high |
low | string (numeric) | Session low |
chg | string (numeric) | Absolute price change vs. the session open |
chg_percent | string (numeric) | Percent change vs. the session open: a plain number, no % character |
trading_status | string | open or close: whether the pair is in a live trading session |
last_update | string | When 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:
| Field | Type | Description |
|---|---|---|
pair | string | Currency pair, e.g. EUR/USD |
HTTP Status & Errors
| HTTP code | Meaning | When it happens |
|---|---|---|
200 | OK | Request succeeded, data returned |
400 | Bad request | On currency-spot: neither pair nor currency supplied |
400 | Bad request | On currency-spot: pair and currency supplied together: they are mutually exclusive, use only one per request |
403 | Invalid API key or subscription expired | api_key missing, invalid, or your subscription has expired |
404 | Data not found | Unknown or misspelled pair or currency on either endpoint |
429 | Rate limit exceeded | You exceeded the per-minute request limit for your subscription plan |
500 | Internal error | Unexpected 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 3,281 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_percentcrosses 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-spotreturns only the latest quote plus intraday high/low/change, not a date-range history. pairandcurrencyare mutually exclusive oncurrency-spot: supplying both returns a400.pair/currencymust 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?
3,281 pairs across 155 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.
Related APIs
- Commodity Price API: live commodity prices alongside currency rates for cross-asset dashboards.
- Economic Indicators API: see how currency moves relate to inflation and other macro indicators.