BYTETOOLS

National Bank of Poland API

Free National Bank of Poland API with no key: official zloty exchange rates, historical series and daily gold prices from the Polish central bank. Tested.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the National Bank of Poland API?

The National Bank of Poland API is a free, key-free official central bank API providing zloty exchange rates against major and minor currencies, full historical series, and daily gold prices.

These are official central bank reference rates, which makes them the figures acceptable for Polish accounting and tax purposes — a meaningful distinction from commercial FX APIs that use market mid-rates.

Rates are published in tables: table A covers major currencies at mid-rate, table B covers less common currencies, and table C gives separate buy and sell rates. Choosing the wrong table is the usual source of confusion.

Quick facts

Base URL
https://api.nbp.pl/api
Authentication
No API key required.
Rate limit
No published hard limit; fair use expected.
Pricing
Free official central bank data.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the National Bank of Poland API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Fetch official zloty exchange rates

GET https://api.nbp.pl/api/exchangerates/tables/A?format=json

curl
curl 'https://api.nbp.pl/api/exchangerates/tables/A?format=json'
JavaScript (fetch)
const res = await fetch("https://api.nbp.pl/api/exchangerates/tables/A?format=json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.nbp.pl/api/exchangerates/tables/A?format=json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "table": "A",
    "no": "160/A/NBP/2026",
    "effectiveDate": "2026-08-19",
    "rates": [
      {
        "currency": "bat (Tajlandia)",
        "code": "THB",
        "mid": 0.1128
      },
      {
        "currency": "dolar amerykański",
        "code": "USD",
        "mid": 3.7306
      },
      {
        "currency": "dolar australijski",
        "code": "AUD",
        "mid": 2.6403
      },
      {
        "currency": "dolar Hongkongu",
        "code": "HKD",
        "mid": 0.4757
      },
      {
        "currency": "dolar kanadyjski",
        "code": "CAD",
        "mid": 2.6882
      },
      {
        "currency": "dolar nowozelandzki",
        "code": "NZD",
        "mid": 2.1922
      },
      {
        "currency": "dolar singapurski",
        "code": "SGD",
        "mid": 2.9223
      },
      {
        "currency": "euro",
        "code": "EUR",
        "mid": 4.3267
      },
      {
        "currency": "forint (Węgry)",
        "code": "HUF",
        "mid": 0.011851
      },
      {
        "currency": "frank szwajcarski",
        "code": "CHF",
        "mid": 4.6007
      },
      {
        "currency": "funt szterling",
        "code": "GBP",
        "mid": 5.056
      },
      {
        "currency": "hrywna (Ukraina)",
        "code": "UAH",
        "mid": 0.0834
      },
      {
        "currency": "jen (Japonia)",
        "code": "JPY",
        "mid": 0.023438
      },
      {
        "currency": "korona czeska",
        "code": "CZK",
        "mid": 0.179
      },
      {
        "currency": "korona duńska",
        "code": "DKK",
        "mid": 0

Parameters

ParameterTypeRequiredDescription
exchangerates/tables/<table>pathRequiredTable A, B or C. exchangerates/tables/A
formatstringRequiredjson — the default is XML. json
exchangerates/rates/<table>/<code>pathOptionalOne currency's rate. rates/A/EUR
last/<n>pathOptionalThe last n published rates. last/10
cenyzlotapathOptionalDaily gold prices. cenyzlota

Response fields

tablestring
Which rate table this is — A, B or C.
nostring
Publication number, e.g. 160/A/NBP/2026.
effectiveDatestring
Date the rates take effect.
ratesarray
Currency entries.
rates[].currency / codestring
Currency name in Polish and its ISO code.
rates[].midnumber
Mid rate in zloty, on tables A and B.
rates[].bid / asknumber
Buy and sell rates, on table C only.

What you can build with the National Bank of Poland API

  • Convert to zloty using officially recognised rates
  • Support Polish accounting and tax reporting
  • Chart historical zloty exchange rates
  • Track official gold prices in Poland

Common errors and how to fix them

XML instead of JSON

XML is the default format.

Fix: Always append ?format=json.

Currency not in table A

Table A covers major currencies only.

Fix: Less common currencies are in table B; buy/sell spreads are in table C.

404 for a weekend date

Rates publish on working days.

Fix: The API returns 404 rather than the previous day — handle it and step back a day.

National Bank of Poland API — frequently asked questions

Is the NBP API free?

Yes, completely free with no API key. It is the Polish central bank's official data service.

What is the difference between tables A, B and C?

Table A has mid rates for major currencies, table B covers less common currencies, and table C gives separate bid and ask rates. Pick based on whether you need a mid rate or a spread.

Why do I get XML?

XML is the default. Append ?format=json to every request.

Why does a weekend date return 404?

Rates are published on working days only, and NBP returns 404 rather than falling back. Step back to the previous working day in your code.

Tools that pair with this API

National Bank of Poland is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.