API ReferenceBid ask rates beta

Convert from one base currency to one or multiple counter currencies.

GET
/v1/bid_ask

This feature is in beta. Access and functionality may evolve. If you’d like to participate, please sign up for our free trial.

This endpoint provides indicative spot bid-ask pricing, updated every 10 seconds and sourced from aggregated institutional liquidity. Data is informational only and may contain inaccuracies during the beta phase.

Endpoint Example

https://xecdapi.xe.com/v1/bid_ask?from=GBP&to=EUR,USD

Supported Currencies

The Bid & Ask (Beta) endpoint supports the following currencies: AUD, BRL, CAD, CHF, CNH, DKK, EUR, GBP, JPY, NOK, NZD, PLN, SEK, USD

Any pair can be requested in either direction (as from or to), with the following exceptions involving CNH (offshore Chinese yuan):

  • CNH is not available with BRL, DKK, or PLN in either direction.
  • CNH is supported only as the target currency for NOK and SEK: from=NOK&to=CNH and from=SEK&to=CNH are available, but from=CNH&to=NOK and from=CNH&to=SEK are not.

The rates provided are indicative spot bid-ask prices derived from aggregated institutional liquidity sources and refreshed every 10 seconds. As this feature is in beta, behaviour and coverage may change, and occasional inaccuracies or inconsistencies may occur. These rates are intended for informational use only and should not be relied upon for financial reporting or decision-making.

Authorization

AuthorizationBearer <token>

API key created on your Xe Currency Data account's API page, sent as a Bearer token in the Authorization header.

In: header

Query Parameters

from*string

Currency to convert from (ISO code).

to*string

Comma separated list of currencies to convert to (ISO codes).

decimal_places?number

OPTIONAL – This parameter can be used to specify the number of decimal places included in the output. Example 1 USD to EUR = 0.874852 with decimal_places=3, the output returned will be EUR = 0.875

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

text/plain

curl -X GET "https://example.com/v1/bid_ask?from=string&to=string"
{  "terms": "https://www.xe.com/legal",  "privacy": "https://www.xe.com/privacy",  "rates": [    {      "timestamp": "2026-09-24T14:25:21",      "from": "GBP",      "to": "EUR",      "bid": 1.162301856,      "ask": 1.1624282679    },    {      "timestamp": "2026-09-24T14:25:21",      "from": "GBP",      "to": "USD",      "bid": 1.3220781505,      "ask": 1.3222372129    }  ]}
{  "code": 17,  "message": "Invalid request parameters",  "documentation_url": "https://developers.xe.com/docs/currency-data-api",  "fieldErrors": {    "to": "Currency must be one of AUD, BRL, CAD, CHF, CNH, DKK, EUR, GBP, JPY, NOK, NZD, PLN, SEK, USD"  }}
{  "code": 1,  "message": "Bad credentials",  "documentation_url": "https://developers.xe.com/docs/currency-data-api"}
{  "code": 3,  "message": "Monthly rate limit exceeded.",  "documentation_url": "https://developers.xe.com/docs/currency-data-api"}
{  "code": 0,  "message": "No static resource direct/v1/bid-ask",  "documentation_url": "https://developers.xe.com/docs/currency-data-api"}
{  "code": 4,  "message": "Current interval rate limit exceeded.",  "documentation_url": "https://developers.xe.com/docs/currency-data-api"}
"An unexpected error occurred"

Foreign exchange rates posted by private banks, exchange markets, government entities & more. GET

In the example below, the endpoint will display all exchange ratesvreported by Maybank (the asterisk * represents ALL currencies). [https://xecdapi.xe.com/v1/alternative_source_rate?source=maybank&iso=*](https://xecdapi.xe.com/v1/alternative_source_rate?source=maybank&iso=*) *Note on Alternative Source Rate Coverage: Some sources may experience temporary data gaps due to source website changes or access restrictions. For these sources, we continue to provide historical data and are working to restore full coverage.*

Central bank exchange rates for one or more central banks. GET

Returns the exchange rates each requested central bank publishes: the `exchangeRates` side of `/v2/central_bank`. Rates keep the direction the bank publishes them in, so `fromCurrency` is not always the bank's own currency. Requires the Central bank exchange & interest rates add-on. See [Data plans](https://developers.xe.com/docs/currency-data-api/data-plans). Exchange rates are returned once their effective date has arrived in the bank's local time zone. Some banks publish the next day's rate in advance (for example RUS): `/v1/central_bank_rate` returns it as soon as it is published, this endpoint from the date it is effective for. Each exchange rate pair returned counts as one rate request. Also available as XML and CSV by appending `.xml` or `.csv` to the path. [https://xecdapi.xe.com/v2/central_bank/exchange_rate.csv?bank_code=CAN&iso=*](https://xecdapi.xe.com/v2/central_bank/exchange_rate.csv?bank_code=CAN&iso=*)

Get help