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 20 Aug 2026

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 20 Aug 2026, 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

Alternatives to National Bank of Poland API

If National Bank of Poland does not fit, these finance & crypto apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
CoinGeckoFree cryptocurrency price API covering 10,000+ coins. Live prices, market cap and volume in any currency, no API key on the public tier. Tested curl example.No keyYes19 Aug 2026
Binance Public APIBinance public market data API needs no API key: live ticker prices, order books, klines and 24h stats for every trading pair. Tested curl example and response.No keyYes19 Aug 2026
Coinbase Exchange RatesCoinbase public exchange rates API with no key: convert any cryptocurrency to 100+ fiat currencies in a single request. Tested curl example and live JSON.No keyYes19 Aug 2026
FrankfurterFree currency exchange rate API with no key, built on European Central Bank data. Latest and historical rates, time series and conversion. Tested curl example.No keyYes19 Aug 2026
Nepal Rastra Bank ForexFree Nepal Rastra Bank forex API with no key: official Nepalese rupee buying and selling rates by date range, with per-currency quotation units. Tested example included.No keyYes21 Aug 2026
Norges BankFree Norges Bank API with no key: official Norwegian krone exchange rates, policy interest rates and government bond yields in SDMX-JSON. Tested example.No keyNo20 Aug 2026
All Finance & Crypto APIs

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 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.