Southern Africa FX Rates — Official Bank Exchange Rates API
Pricing
from $0.10 / full market snapshot
Southern Africa FX Rates — Official Bank Exchange Rates API
Official daily FX rates from 5 Southern African central banks — ZAR, ZMW, BWP, NAD and MZN. NAD is pegged 1:1 to ZAR via the Common Monetary Area — derived rates flagged transparently. Every record source-attributed.
Pricing
from $0.10 / full market snapshot
Rating
0.0
(0)
Developer
Simon M
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Southern African FX Rates — Daily Central Bank Exchange Rates
Official USD exchange rates published daily by the South African Reserve Bank, extended to Namibia, Lesotho, and Eswatini via their fixed 1:1 ZAR pegs — normalised into one consistent schema across all 4 countries.
Unlike the World Bank, IMF, or ECB datasets already on Apify — which publish African macro data annually with a 6–12 month lag — this actor pulls fresh, daily rates straight from SARB's published data API, with historical depth back to 1990.
Part of a regional family: West African FX Rates · East African FX Rates · Southern African FX Rates (this actor) · North African actor in the same normalised schema.
Modes
| Mode | What you get | When to use it |
|---|---|---|
usd-core (default) | One USD rate per country, latest available date | Daily monitoring, dashboards, FX baskets |
all-currencies | USD, GBP, EUR, and JPY rates per country, latest date | Multi-currency exposure, regional FX desks |
historical | USD–GBP–EUR–JPY rates per country, every trading day in a date range | Backtesting, time-series analysis, academic research |
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | usd-core | See modes table above. |
countries | array | all 4 | ISO 3166-1 alpha-2 codes to include. ZA South Africa, NA Namibia, LS Lesotho, SZ Eswatini. |
dateFrom | string | — | Start date (YYYY-MM-DD). Required in historical mode. Available back to 1990-01-02. |
dateTo | string | — | End date (YYYY-MM-DD). Required in historical mode. |
maxItems | integer | 5000 | Hard cap on output rows. |
Output
One record per country per run (in usd-core), per country-currency (in all-currencies), or per country-currency-day (in historical).
South Africa (SARB) example:
{"id": "ZA:USD:2026-06-03:interbank","country": "ZA","centralBank": "SARB","baseCurrency": "USD","quoteCurrency": "ZAR","pair": "USD/ZAR","date": "2026-06-03","buying": null,"selling": null,"mid": 16.2974,"midMethod": "published","inverseMid": 0.06136,"rateType": "interbank","warnings": [],"source": {"name": "South African Reserve Bank","url": "https://custom.resbank.co.za/SarbWebApi/WebIndicators/HomePageRates","retrievedAt": "2026-06-03T10:45:00.000Z","asOfDate": "2026-06-03","licenseNote": "Factual exchange rate data reproduced from the SARB public website (resbank.co.za). No redistribution prohibition found; general © footer only."}}
Read it as: 1 USD = 16.30 ZAR (weighted average of South African bank rates at ~10:30 am).
Namibia (NAD — ZAR-pegged) example:
{"id": "NA:USD:2026-06-03:derived","country": "NA","centralBank": "BoN","baseCurrency": "USD","quoteCurrency": "NAD","pair": "USD/NAD","date": "2026-06-03","buying": null,"selling": null,"mid": 16.2974,"midMethod": "published","inverseMid": 0.06136,"rateType": "derived","warnings": [],"source": {"name": "Bank of Namibia (ZAR peg, derived from SARB)","url": "https://www.bon.com.na/","retrievedAt": "2026-06-03T10:45:00.000Z","asOfDate": "2026-06-03","licenseNote": "NAD is pegged 1:1 to ZAR under the Common Monetary Area (CMA) agreement. Rates are derived from SARB's published interbank ZAR rates.","derivationNote": "USD/NAD = SARB USD/ZAR. The CMA treaty pegs NAD to ZAR at 1:1 exactly; derivation is exact, not estimated."}}
Field reference
| Field | Meaning |
|---|---|
country / centralBank | ISO 3166-1 alpha-2 country code + issuing bank abbreviation |
baseCurrency / quoteCurrency / pair | ISO 4217 codes. pair = base/quote. Read as: "price of 1 baseCurrency in quoteCurrency." |
date | The rate's as-of date (ISO 8601, YYYY-MM-DD) |
buying / selling / mid | SARB publishes only a weighted mid rate — no bid/ask spread. buying and selling are always null for all countries in this actor; use mid. |
midMethod | How the mid was obtained: published (SARB's own figure) |
inverseMid | 1/mid — units of base per 1 quote (e.g. ZAR per USD) |
rateType | interbank (ZA — SARB weighted average of bank transactions), derived (NA/LS/SZ — see below) |
warnings | Data-quality flags, e.g. mid_out_of_range, non_positive_rate |
id | Deterministic natural key (country:baseCurrency:date:rateType) — safe to use for upsert/dedup |
source | Full attribution and provenance block: bank name, URL, retrieval timestamp, as-of date, licence note |
Coverage and source notes
| Country | Bank | Rate type | buying / selling | Historical depth |
|---|---|---|---|---|
| South Africa (ZA) | South African Reserve Bank (SARB) | interbank — weighted average of bank daily rates at ~10:30 am | null (SARB does not publish bid/ask) | Back to 1990-01-02 |
| Namibia (NA) | Bank of Namibia (BoN) | derived — see note | null (same as ZAR) | Same as SARB (back to 1990) |
| Lesotho (LS) | Central Bank of Lesotho (CBL) | derived — see note | null (same as ZAR) | Same as SARB (back to 1990) |
| Eswatini (SZ) | Central Bank of Eswatini (CBS) | derived — see note | null (same as ZAR) | Same as SARB (back to 1990) |
Why are Namibia, Lesotho, and Eswatini rows derived? All three currencies are permanently pegged 1:1 to the South African Rand under the Common Monetary Area (CMA) — a monetary union between South Africa, Namibia, Lesotho, and Eswatini. Each country issues its own currency (NAD, LSL, SZL) but it circulates at par with ZAR and is freely convertible at 1:1.
The derivation is exact and requires no additional HTTP calls: USD/NAD = SARB USD/ZAR, USD/LSL = SARB USD/ZAR, USD/SZL = SARB USD/ZAR. This applies equally to the GBP, EUR, and JPY rates. Each row carries rateType: "derived" and a derivationNote stating the legal basis.
SARB currencies published: USD, GBP, EUR, and JPY — the 4 bilateral ZAR rates SARB publishes via its data API. In usd-core mode only the USD row is returned; all-currencies and historical return all 4 per country.
Delayed data. The SARB rate is the weighted average of South African commercial bank transactions at approximately 10:30 am local time. It is published during the trading day and does not reflect intraday moves.
Cost
Pay-per-event pricing:
| Mode | Charge | Typical cost |
|---|---|---|
usd-core | One fx-snapshot per run | $0.10 per run |
all-currencies | One fx-country-day per unique (currency, country, date) row | $0.015 per row |
historical | One fx-country-day per unique (currency, country, date) row | $0.015 per country-currency-day |
Examples:
- Daily
usd-corefor all 4 countries: $0.10/day (~$2.20/month) - 1 year of
historicalfor South Africa, USD only:252 trading days → **$3.78** - 1 year of
historicalfor all 4 countries, all 4 currencies: ~252 × 4 × 4 =4,032 events → **$60** - Full 35-year USD/ZAR history (1990–2025):
9,000 trading days → **$135**
Legality & disclaimers
Is the data real-time? No — it is delayed. The SARB rate is published once per trading day at approximately 10:30 am South African time.
Legal basis. The SARB website carries only a general "© Copyright" footer with no contractual restriction on reusing the published rate figures. Official exchange rates are factual data — copyright protects creative expression, not facts. Namibia, Lesotho, and Eswatini rates are derived from the 1:1 ZAR peg established by the Common Monetary Area treaty; no separate data source is scraped. Every output record carries the issuing institution's name, URL, and a licence note.
Why no buying / selling? SARB publishes a single weighted mid rate, not a bid/ask spread. This reflects how SARB aggregates interbank transaction data rather than setting its own bid/ask. The three pegged currencies inherit the same null bid/ask.
Resilience. All four sources share SARB's single HTTP call via an internal cache. If SARB is unreachable, the run fails gracefully and logs the error; partial results are never silently returned.
Accuracy. Values are reproduced as published. Use asOfDate and retrievedAt to track versions.
Issues / feedback: use the Issues tab on the actor page.
This is not legal or financial advice. Verify rates against the issuing central bank before acting on them.