News submission and NakBus fleet are now in the partner dashboard
Connect your developer account to a Nakordoni Partners account with the same email and manage news and your bus fleet (NakDriver / NakManager) there, with team roles. Your API keys, endpoints and apps are unchanged, and the pages here keep working. Open Nakordoni Partners

← All endpoints

Exchange Office Rates API Online

One exchange office with its current buy and sell rates against PLN. Retail and wholesale rates are returned separately: wholesale applies only from min_amount_pln and must not be compared with retail. Every rate carries its own time, so an old quote is never presented as today's.

GET https://nakordoni.eu/api/v2/data/exchange-office — quota class: cheap

ParameterDescription
idOffice id from exchange-offices (required)
langLanguage for city name and page link (default en)

Response fields — inside the data object of the envelope. [] marks a list, so data.items[].name is the name field of each element. A field is null, absent or an empty list when we hold no value for it — never a placeholder.

FieldDescription
data.officeEvery field of an exchange-offices row, plus rates.
data.office.rates.retail[].currencyISO 4217 code; buy and sell are PLN per 1 unit (buy = what the office pays you, sell = what you pay the office).
data.office.rates.retail[].rate_timeWhen this rate was valid, ISO 8601 with the Polish UTC offset (e.g. 2026-10-14T15:47:00+02:00).
data.office.rates.retail[].is_currentfalse = the rate is older than 72 hours; show it only together with rate_time.
data.office.rates.wholesale[].min_amount_plnSmallest transaction (in PLN) the wholesale rate applies to; null when the office does not state one. Other fields as in retail.
data.office.rates.quote_currencyCurrency every rate is quoted in (PLN).

Where the data comes from

Office listings and their rates are collected by Nakordoni from public information the exchange offices publish, checked for errors and shown next to the official National Bank of Poland (NBP) reference rate. Every rate carries the time it was valid; a rate older than 72 hours is marked is_current: false and never ranked.

Exchange offices can see what our reader collects, stop it, or correct or remove their listing at any time. Listings an owner asked us to remove disappear from these products too. NakordoniBot for exchange offices — information and opt-out

Each office row carries url — its page on nakordoni.eu. Link it where you show the data.

Example answer

{
  "ok": true,
  "product": "exchange-office",
  "data": {
    "office": {
      "id": 3, "name": "Kantor …", "city": "przemysl", "address": "…, 37-700 Przemyśl",
      "lat": 49.78449, "lon": 22.776614, "open_now": false, "has_wholesale": true,
      "hours": [ { "day": "mo", "open": "08:00", "close": "17:00" } ],
      "rates": {
        "quote_currency": "PLN",
        "retail":    [ { "currency": "EUR", "buy": 4.33, "sell": 4.41,
                         "rate_time": "2026-10-14T15:47:00+02:00", "is_current": true } ],
        "wholesale": [ { "currency": "EUR", "buy": 4.36, "sell": 4.385, "min_amount_pln": 4000,
                         "rate_time": "2026-10-14T15:47:00+02:00", "is_current": true } ]
      }
    }
  }
}
curl "https://nakordoni.eu/api/v2/data/exchange-office?id=3" \
  -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
🔑 Log in as a developer to try this endpoint live in the sandbox — 50 free test calls a day. Log in

Updated