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.
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 'https://api.nbp.pl/api/exchangerates/tables/A?format=json'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);import requests
res = requests.get("https://api.nbp.pl/api/exchangerates/tables/A?format=json", timeout=20)
res.raise_for_status()
print(res.json())[
{
"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": 0Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
exchangerates/tables/<table> | path | Required | Table A, B or C. exchangerates/tables/A |
format | string | Required | json — the default is XML. json |
exchangerates/rates/<table>/<code> | path | Optional | One currency's rate. rates/A/EUR |
last/<n> | path | Optional | The last n published rates. last/10 |
cenyzlota | path | Optional | Daily 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
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Percentage Calculator
Calculate what X% of a number is, what percent one number is of another, and percentage increase or decrease between two values — instantly and free.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
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.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| CoinGecko | Free 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 key | Yes | 19 Aug 2026 |
| Binance Public API | Binance 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 key | Yes | 19 Aug 2026 |
| Coinbase Exchange Rates | Coinbase 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 key | Yes | 19 Aug 2026 |
| Frankfurter | Free 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 key | Yes | 19 Aug 2026 |
| Nepal Rastra Bank Forex | Free 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 key | Yes | 21 Aug 2026 |
| Norges Bank | Free Norges Bank API with no key: official Norwegian krone exchange rates, policy interest rates and government bond yields in SDMX-JSON. Tested example. | No key | No | 20 Aug 2026 |
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.