Southern Africa FX Rates — Official Bank Exchange Rates API avatar

Southern Africa FX Rates — Official Bank Exchange Rates API

Pricing

from $0.10 / full market snapshot

Go to Apify Store
Southern Africa FX Rates — Official Bank Exchange Rates API

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

Simon M

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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

ModeWhat you getWhen to use it
usd-core (default)One USD rate per country, latest available dateDaily monitoring, dashboards, FX baskets
all-currenciesUSD, GBP, EUR, and JPY rates per country, latest dateMulti-currency exposure, regional FX desks
historicalUSD–GBP–EUR–JPY rates per country, every trading day in a date rangeBacktesting, time-series analysis, academic research

Input

FieldTypeDefaultDescription
modestringusd-coreSee modes table above.
countriesarrayall 4ISO 3166-1 alpha-2 codes to include. ZA South Africa, NA Namibia, LS Lesotho, SZ Eswatini.
dateFromstringStart date (YYYY-MM-DD). Required in historical mode. Available back to 1990-01-02.
dateTostringEnd date (YYYY-MM-DD). Required in historical mode.
maxItemsinteger5000Hard 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

FieldMeaning
country / centralBankISO 3166-1 alpha-2 country code + issuing bank abbreviation
baseCurrency / quoteCurrency / pairISO 4217 codes. pair = base/quote. Read as: "price of 1 baseCurrency in quoteCurrency."
dateThe rate's as-of date (ISO 8601, YYYY-MM-DD)
buying / selling / midSARB publishes only a weighted mid rate — no bid/ask spread. buying and selling are always null for all countries in this actor; use mid.
midMethodHow the mid was obtained: published (SARB's own figure)
inverseMid1/mid — units of base per 1 quote (e.g. ZAR per USD)
rateTypeinterbank (ZA — SARB weighted average of bank transactions), derived (NA/LS/SZ — see below)
warningsData-quality flags, e.g. mid_out_of_range, non_positive_rate
idDeterministic natural key (country:baseCurrency:date:rateType) — safe to use for upsert/dedup
sourceFull attribution and provenance block: bank name, URL, retrieval timestamp, as-of date, licence note

Coverage and source notes

CountryBankRate typebuying / sellingHistorical depth
South Africa (ZA)South African Reserve Bank (SARB)interbank — weighted average of bank daily rates at ~10:30 amnull (SARB does not publish bid/ask)Back to 1990-01-02
Namibia (NA)Bank of Namibia (BoN)derived — see notenull (same as ZAR)Same as SARB (back to 1990)
Lesotho (LS)Central Bank of Lesotho (CBL)derived — see notenull (same as ZAR)Same as SARB (back to 1990)
Eswatini (SZ)Central Bank of Eswatini (CBS)derived — see notenull (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:

ModeChargeTypical cost
usd-coreOne fx-snapshot per run$0.10 per run
all-currenciesOne fx-country-day per unique (currency, country, date) row$0.015 per row
historicalOne fx-country-day per unique (currency, country, date) row$0.015 per country-currency-day

Examples:

  • Daily usd-core for all 4 countries: $0.10/day (~$2.20/month)
  • 1 year of historical for South Africa, USD only: 252 trading days → **$3.78**
  • 1 year of historical for 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.