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

Best Exchange Rates API Online

Where to buy or sell one currency for PLN in one city right now: the offices with the best RETAIL rates, ranked, next to the official NBP reference rate. Only rates no older than 6 hours compete, and quotes far off the city median are left out as likely errors. Wholesale rates never enter the ranking.

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

ParameterDescription
cityCity id from exchange-cities, e.g. warszawa (required)
currencyCurrency to compare against PLN, ISO 4217 code such as EUR (required)
limitOffices per list, 1-20 (default 5)
langLanguage for city name and page links (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.best_to_buy_currency[]Offices with the LOWEST sell rate — where you buy the currency cheapest. rate is that sell rate in PLN per 1 unit.
data.best_to_sell_currency[]Offices with the HIGHEST buy rate — where you get the most PLN for the currency.
data.best_to_buy_currency[].vs_nbp_pctDifference between rate and the NBP mid rate, in percent.
data.best_to_buy_currency[].rate_timeWhen the rate was valid, ISO 8601 with the Polish UTC offset; also office_id, name, address, lat, lon, buy, sell, spread_pct and url.
data.candidatesOffices with a recent enough rate; fewer than 2 means both lists are empty — there is nothing to compare.
data.nbpNational Bank of Poland reference rate: mid (table A), bid/ask (table C) where published, table and effective_date; null for a currency NBP does not publish.
data.max_rate_age_minutesOldest rate allowed into the ranking (360).

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-best-rates",
  "data": {
    "city": "warszawa",
    "currency": "EUR",
    "quote_currency": "PLN",
    "kind": "retail",
    "candidates": 51,
    "best_to_buy_currency": [
      { "office_id": 197, "name": "Kantor …", "rate": 4.38, "buy": 4.365, "sell": 4.38,
        "spread_pct": 0.34, "vs_nbp_pct": 0.22, "rate_time": "2026-10-14T21:50:35+02:00",
        "url": "https://nakordoni.eu/en/exchange/warszawa/…" }
    ],
    "best_to_sell_currency": [ "…" ],
    "nbp": { "currency": "EUR", "mid": 4.3706, "bid": null, "ask": null,
             "table": "200/A/NBP/2026", "effective_date": "2026-10-14" }
  }
}
curl "https://nakordoni.eu/api/v2/data/exchange-best-rates?city=warszawa&currency=EUR&limit=5" \
  -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