ZimRate
Live Rates

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.

GET /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.

GET /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"
    }
  ]
}
GET /api/rates/history

Returns daily average buy rates for one source and currency pair over the last days days — ideal for charts.

Query parameters

NameTypeDefaultDescription
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 [].

GET /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.

EMBED /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.