Currency exchange API for the Saudi riyal and 14 currencies
SAR exchange rates for the currencies expatriates in Saudi Arabia send money to, plus USD, GBP and EUR. One call returns them all as clean JSON.
A currency exchange API for the riyal and the corridors that matter
Millions of people in Saudi Arabia send money home every month, and the first thing they check is how much one riyal buys in rupees, taka or pesos. Our currency exchange API returns the Saudi riyal against 14 currencies in a single call, so remittance apps, community sites and payroll tools can show the numbers their users care about.
The riyal has been pegged to the US dollar at 3.75 since 1986 (see the Saudi Central Bank), so SAR rates move with the dollar. The API covers the main South Asian, Southeast Asian and African corridors plus USD, GBP and EUR.
Ask for all rates at once with /v1/forex, one currency with /v1/forex/PKR, or combine rates with gold and silver prices in /v1/snapshot.

What you get
- Base currency: Saudi riyal (SAR)
- 14 quote currencies across South Asia, Southeast Asia, Africa, the US, UK and eurozone
- All rates in one call, or one currency at a time
- Cross rates between any two supported currencies with one division
updatedAton every response- Gold and silver in the same call with
/v1/snapshot
Endpoints
| Method | Path | Returns |
|---|---|---|
| GET | /v1/forex | All supported rates |
| GET | /v1/forex/{currency} | One pair, e.g. /v1/forex/PKR |
| GET | /v1/forex/status | Cache and freshness status |
| GET | /v1/snapshot?currencies=PKR,INR | Gold, silver and up to 10 rates in one call |
Live exchange rates
Every pair the currency exchange API returns today, in both directions. Fetched from the API as the page loads.
| Pair | 1 SAR buys | 1 unit costs |
|---|---|---|
| SAR/PKR | 73.8929 PKR | 0.0135 SAR |
| SAR/INR | 25.4058 INR | 0.0394 SAR |
| SAR/BDT | 33.0113 BDT | 0.0303 SAR |
| SAR/LKR | 88.5433 LKR | 0.0113 SAR |
| SAR/NPR | 40.6477 NPR | 0.0246 SAR |
| SAR/PHP | 17.0559 PHP | 0.0586 SAR |
| SAR/EGP | 15.0047 EGP | 0.0666 SAR |
| SAR/USD | 0.2667 USD | 3.7495 SAR |
| SAR/GBP | 0.1998 GBP | 5.0050 SAR |
| SAR/EUR | 0.2384 EUR | 4.1946 SAR |
| SAR/IDR | 4,846.3681 IDR | 0.0002 SAR |
| SAR/MMK | 560.0835 MMK | 0.0018 SAR |
| SAR/KES | 34.6433 KES | 0.0289 SAR |
| SAR/ETB | 43.0714 ETB | 0.0232 SAR |
Updated 14 hours ago. Live from GET /v1/forex.
Currency pairs
Every rate is quoted as SAR/XXX: how much of the currency one Saudi riyal buys. That gives you 14 direct pairs, and any of the 91 cross pairs between them with one division.
| Code | Currency | Pair |
|---|---|---|
PKR | Pakistani rupee | SAR/PKR |
INR | Indian rupee | SAR/INR |
BDT | Bangladeshi taka | SAR/BDT |
LKR | Sri Lankan rupee | SAR/LKR |
NPR | Nepalese rupee | SAR/NPR |
PHP | Philippine peso | SAR/PHP |
IDR | Indonesian rupiah | SAR/IDR |
MMK | Myanmar kyat | SAR/MMK |
EGP | Egyptian pound | SAR/EGP |
KES | Kenyan shilling | SAR/KES |
ETB | Ethiopian birr | SAR/ETB |
USD | US dollar | SAR/USD |
GBP | British pound | SAR/GBP |
EUR | Euro | SAR/EUR |
Conversion with the currency conversion API
To convert an amount from SAR, multiply by the rate. To convert into SAR, divide by it. To convert between two other currencies, go through SAR:
// rates = data.rates from GET /v1/forex (1 SAR = rates[X])
amountInSar = amount / rates[from] // skip when from = SAR
amountInTarget = amountInSar * rates[to] // skip when to = SAR
// example: 500 USD to PKR
pkr = 500 / rates.USD * rates.PKRWhat is available and what is planned
| Data | Status | Notes |
|---|---|---|
| SAR rates for 14 currencies | Available | /v1/forex, /v1/forex/{currency} |
| Cross rates between supported currencies | Available | Computed from SAR rates, formula on the left |
Dedicated /convert endpoint | Planned | Amount conversion in one call |
| Historical exchange rates | Planned | Daily rates by date |
| Other base currencies | Planned | USD and AED base |
Need historical exchange rates or a conversion endpoint? Tell us what you need and we will put you on the early-access list.
Call the currency exchange API in four languages
Send your key in the X-API-Key header. Every response uses the same envelope: success, data, error and meta.
curl "https://api.metalrates.cloud/v1/forex/PKR" \
-H "X-API-Key: YOUR_API_KEY"const res = await fetch("https://api.metalrates.cloud/v1/forex/PKR", {
headers: { "X-API-Key": process.env.METALRATES_API_KEY }
});
const { success, data, meta } = await res.json();
console.log(data);import os, requests
res = requests.get(
"https://api.metalrates.cloud/v1/forex/PKR",
headers={"X-API-Key": os.environ["METALRATES_API_KEY"]},
timeout=10,
)
body = res.json()
print(body["data"])<?php
$ch = curl_init("https://api.metalrates.cloud/v1/forex/PKR");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('METALRATES_API_KEY')],
CURLOPT_TIMEOUT => 10,
]);
$body = json_decode(curl_exec($ch), true);
print_r($body['data']);{
"success": true,
"data": {
"baseCurrency": "SAR",
"rates": {
"PKR": 73.8929,
"INR": 25.4058,
"BDT": 33.0113,
"LKR": 88.5433,
"NPR": 40.6477,
"PHP": 17.0559,
"EGP": 15.0047,
"USD": 0.2667,
"GBP": 0.1998,
"EUR": 0.2384,
"IDR": 4846.3681,
"MMK": 560.0835,
"KES": 34.6433,
"ETB": 43.0714
},
"usdToSar": 3.75,
"updatedAt": "27 Oct 2026, 03:03 AM",
"updatedIso": "2026-10-27T00:03:11.9115024Z",
"nextUpdateUtc": "2026-10-28T00:00:01.0000000Z",
"source": "DevstromToolAPI",
"unavailableCurrencies": []
},
"error": null,
"meta": null
}Built for
Remittance apps
Show how many rupees, taka or pesos one riyal buys today.
Expat community sites
Publish daily SAR rate pages for each corridor.
Invoicing and payroll
Convert SAR amounts for staff paid in home currency.
Currency exchange API FAQ
Is there a free forex API plan?
Yes. The free plan includes the currency exchange API with 100 requests a day, no card needed.
Can I use a base currency other than SAR?
Rates are quoted against SAR today. To convert between two other currencies, divide their SAR rates as shown above. USD and AED base currencies are planned.
Do you have historical exchange rates?
Not yet. The API returns current rates. Historical rates are planned; let us know if you need them.
Are these bank transfer rates?
No. They are market reference rates. Banks and exchange houses add their own margin.
How do I authenticate?
Every request carries your key in the X-API-Key header. Keys look like mr_live_.... Keep the key on your server; do not ship it in browser or mobile code.
What are the limits?
Free keys get 100 requests a day, Starter 500, Pro 5,000 and Business about 33,000; Enterprise is unlimited. Each response returns X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers. Going over returns HTTP 429 with a Retry-After header.
Start with a free key today
100 requests a day, every endpoint, no card required. Upgrade when your traffic grows.
