REST Countries

Currency

R South African rand ZAR

Everything you need to work with South African rand (ZAR): its current exchange rate and a ready-to-run request, sourced from the Currencies API and ready to drop into your project.

Exchange rate

1 USD = 16.393202 ZAR
1 ZAR = 0.061001 USD

Rate as of 2026-07-13.

Call the South African rand rate API

Request the live South African rand rate table from the Currencies API. Copy the snippet for your language and drop in your own API key.

curl "https://api.restcountries.com/currencies/v1/rates/ZAR?pretty=1" \
  -H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch(
  'https://api.restcountries.com/currencies/v1/rates/ZAR',
  { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await response.json();
fetch(
  'https://api.restcountries.com/currencies/v1/rates/ZAR',
  { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
)
  .then(function (response) { return response.json(); })
  .then(function (data) { console.log(data); });
import requests
response = requests.get(
  'https://api.restcountries.com/currencies/v1/rates/ZAR',
  headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()
$ch = curl_init('https://api.restcountries.com/currencies/v1/rates/ZAR');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_API_KEY']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true);
require 'net/http'
require 'json'
uri = URI('https://api.restcountries.com/currencies/v1/rates/ZAR')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
data = JSON.parse(response.body)
package main
import (
  "encoding/json"
  "io"
  "net/http"
)
req, _ := http.NewRequest("GET", "https://api.restcountries.com/currencies/v1/rates/ZAR", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]interface{}
json.Unmarshal(body, &data)
use reqwest::blocking::Client;
use serde_json::Value;
let client = Client::new();
let response = client
  .get("https://api.restcountries.com/currencies/v1/rates/ZAR")
  .header("Authorization", "Bearer YOUR_API_KEY")
  .send()?;
let data: Value = response.json()?;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
  .uri(URI.create("https://api.restcountries.com/currencies/v1/rates/ZAR"))
  .header("Authorization", "Bearer YOUR_API_KEY")
  .GET()
  .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
String body = response.body();
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY");
var data = await client.GetFromJsonAsync<JsonElement>(
  "https://api.restcountries.com/currencies/v1/rates/ZAR");
import Foundation
var request = URLRequest(url: URL(string: "https://api.restcountries.com/currencies/v1/rates/ZAR")!)
request.addValue("Bearer YOUR_API_KEY", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
let json = try JSONSerialization.jsonObject(with: data)

Integrate South African rand rates into your app

The Currencies API returns exchange rates as structured JSON over HTTPS, ready to pull straight into web, mobile, and backend projects with no scraping and no manual data entry. Request only what you need and cache the response.

  • Show prices in South African rand alongside your default currency.
  • Convert checkout and invoice totals to and from South African rand at request time.
  • Power multi-currency dashboards, reports, and analytics.
  • Look up the ZAR rate against any supported base currency.

Read the API docs