ZimRate Developer API
Free · JSON · No API key required
ZimRate offers a free public REST API for Zimbabwe exchange rates — the same data that powers this site: the official RBZ rate, black market (parallel) rates, bank rates, and regional cross rates, refreshed every 30 minutes.
- No API key is currently required — just call the endpoints below.
- Attribution requested: if you display our data publicly, please link back to zimrate.com.
- Fair use: rates update every 30 minutes, so polling more than once every few minutes gains you nothing. Abusive traffic may be rate-limited or blocked, and we may introduce API keys for high-volume use in future.
Base URL: https://zimrate.com.
All endpoints respond with application/json
and require no authentication. Rates are indicative only — see our
disclaimer.
/api/rates/latest
Returns the most recent rate captured for every active source and currency pair, as a flat array. Includes USD/ZiG official, black market, business and bank rates, plus international cross rates (USD/ZAR, USD/GBP, etc.).
No query parameters.
Example request
curl "https://zimrate.com/api/rates/latest"
Example response
[
{
"id": 18432,
"source": {
"id": 1,
"name": "ZimPriceCheck",
"type": "official",
"url": "https://zimpricecheck.com",
"active": true
},
"currencyPair": "USD/ZiG",
"buyRate": 26.4521,
"sellRate": 26.7160,
"scrapedAt": "2026-06-10T08:30:00"
},
{
"id": 18435,
"source": {
"id": 1,
"name": "ZimPriceCheck",
"type": "official",
"url": "https://zimpricecheck.com",
"active": true
},
"currencyPair": "USD/ZiG_InformalLow",
"buyRate": 38.0000,
"sellRate": null,
"scrapedAt": "2026-06-10T08:30:00"
}
]
buyRate / sellRate
are decimal numbers (4 dp); sellRate may be
null for sources that publish a single rate.
scrapedAt is an ISO-8601 local timestamp
(Africa/Harare). Pair names like
USD/ZiG_InformalLow,
USD/ZiG_InformalHigh and
USD/ZiG_Cash are black market variants;
USD/ZiG_MaxBusiness is the maximum business rate.
/api/rates/latest-grouped
Same data as /api/rates/latest, but grouped
into an object keyed by currency pair. Useful when several sources publish the
same pair (e.g. multiple banks quoting USD/ZWG).
No query parameters.
Example request
curl "https://zimrate.com/api/rates/latest-grouped"
Example response
{
"USD/ZiG": [
{
"id": 18432,
"source": { "id": 1, "name": "ZimPriceCheck", "type": "official", "url": "https://zimpricecheck.com", "active": true },
"currencyPair": "USD/ZiG",
"buyRate": 26.4521,
"sellRate": 26.7160,
"scrapedAt": "2026-06-10T08:30:00"
}
],
"USD/ZWG": [
{
"id": 18440,
"source": { "id": 3, "name": "CBZ", "type": "bank", "url": "https://www.cbz.co.zw", "active": true },
"currencyPair": "USD/ZWG",
"buyRate": 26.4000,
"sellRate": 26.9500,
"scrapedAt": "2026-06-10T08:30:00"
}
]
}
/api/rates/history
Returns daily average buy rates for one source and currency pair over
the last days days — ideal for charts.
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
source |
string | ZimPriceCheck |
Source name, e.g. ZimPriceCheck, CBZ, FBC Bank, Exchange Rate API. |
pair |
string | USD/ZiG |
Currency pair, e.g. USD/ZiG, USD/ZiG_InformalLow, USD/ZWG, USD/ZAR. |
days |
integer | 7 |
Number of days of history. Clamped to the range 1–365. |
Example request
curl "https://zimrate.com/api/rates/history?source=ZimPriceCheck&pair=USD/ZiG&days=30"
Example response
[
{ "day": "2026-06-06", "rate": 26.41 },
{ "day": "2026-06-07", "rate": 26.43 },
{ "day": "2026-06-08", "rate": 26.44 },
{ "day": "2026-06-09", "rate": 26.45 }
]
day is an ISO date string and
rate is the average buy rate for that day.
Days with no data for the requested source/pair are omitted; an unknown
source or pair returns an empty array [].
/api/widget/rates
A lightweight, CORS-enabled (Access-Control-Allow-Origin: *)
endpoint that powers the embeddable widget. Returns only
USD/ZiG and
USD/ZWG pairs, with rates pre-formatted
as strings rounded to 2 decimal places. Perfect for calling directly from
the browser on your own site.
No query parameters.
Example request
curl "https://zimrate.com/api/widget/rates"
Example response
[
{ "source": "ZimPriceCheck", "type": "official", "buy": "26.45", "sell": "26.72" },
{ "source": "CBZ", "type": "bank", "buy": "26.40", "sell": "26.95" },
{ "source": "FBC Bank", "type": "bank", "buy": "26.38", "sell": "26.92" }
]
buy and sell
are strings; a missing rate is returned as "-".
type is the source category
(e.g. official, bank,
parallel), or an empty string if unset.
/widget.js
Don't want to write any code? Drop our widget into any HTML page with a single
script tag. It renders a live USD/ZiG rates table (self-styled, ~300px wide)
exactly where you place the tag, and refreshes its data from
/api/widget/rates on every page load.
Embed code
<script src="https://zimrate.com/widget.js"></script>
Paste it wherever you want the widget to appear — sidebar, footer, or inside an article. It works on WordPress, Blogger, plain HTML, and most site builders that allow custom HTML. See the widget page for a live preview.