API Wykazu VAT (Biała Lista) po NIP
REST/JSON bez klucza
Status VAT i dane podmiotu z Wykazu VAT (Biała Lista, Ministerstwo Finansów) po numerze NIP — jednym zapytaniem GET, w odpowiedzi czysty JSON. Bez klucza API, bez rejestracji i bez dziennego limitu zapytań. To warstwa nad API Wykazu VAT MF, która zdejmuje z Ciebie sesje, daty w URL i parsowanie odpowiedzi.
Jeden GET, jeden JSON
Endpoint jest publiczny, metoda GET, a parametr ?format=json zwraca dane maszynowo (bez niego dostajesz stronę HTML dla człowieka). Dane z Wykazu VAT są w polu bl (Biała Lista):
curl "https://skanfirmy.pl/nip/5260250995?format=json"
W odpowiedzi dostajesz status VAT, oficjalną nazwę, REGON, adres, numer KRS i znacznik czasu z Ministerstwa Finansów — prosto z Wykazu VAT:
{
"nip": "5260250995",
"source": "krs",
"bl": {
"nip": "5260250995",
"name": "ORANGE POLSKA SPÓŁKA AKCYJNA",
"regon": "012100784",
"statusVat": "Czynny",
"address": "ALEJE JEROZOLIMSKIE 160, 02-326 WARSZAWA",
"krs": "0000010681",
"registrationLegalDate": "1996-01-01",
"mfRequestDateTime": "25-08-2026 14:59:57"
},
"krs": { ... },
"checkedAt": "2026-08-25"
}
Bez klucza API, bez rejestracji, bez limitu
Endpoint działa od razu — nie musisz zakładać konta, generować klucza API ani pilnować dziennego limitu zapytań. To celowa różnica względem komercyjnych nakładek na Wykaz VAT: chcemy, żeby weryfikację statusu VAT dało się wpiąć w minutę, także z poziomu agenta AI. Serwis jest utrzymywany bezpłatnie; przy dużym, automatycznym ruchu prosimy tylko o rozsądek (pojedyncze zapytania inicjowane przez użytkowników, nie masowy scraping).
Co zwraca pole bl
Wykaz VAT (Biała Lista) prowadzi Ministerstwo Finansów. Pole bl w odpowiedzi /nip/{nip} zawiera dane podatnika VAT po NIP:
| Pole | Znaczenie |
|---|---|
statusVat | Literał MF: Czynny — czynny podatnik VAT, Zwolniony — podatnik zwolniony, Niezarejestrowany — brak w rejestrze VAT |
name | Oficjalna nazwa podatnika z Wykazu VAT |
regon | Numer REGON podmiotu |
address | Adres z Wykazu VAT (siedziba lub stałe miejsce prowadzenia działalności) |
krs | Numer KRS (jeśli podmiot jest w Krajowym Rejestrze Sądowym) |
registrationLegalDate | Data rejestracji jako podatnik VAT |
mfRequestDateTime | Znacznik czasu odpowiedzi Ministerstwa Finansów — dowód, na jaki moment aktualny jest status (przydatne do celów dowodowych) |
Do rozgałęzień w kodzie porównuj zawsze surowy literał MF ("Czynny", "Zwolniony", "Niezarejestrowany") — nie tłumacz go przed porównaniem, bo tłumaczenie zmieniłoby wartość, na której opierasz logikę.
Uwaga: to nie jest lista rachunków bankowych
Endpoint /nip/{nip} nie zwraca listy rachunków bankowych z Wykazu VAT. Zwraca status VAT i dane podmiotu (pole bl), ale nie tablicy numerów kont. Jeśli chcesz sprawdzić, czy konkretny rachunek (NRB, 26 cyfr) figuruje na Białej Liście dla danego NIP, użyj narzędzia MCP sprawdz_rachunek — weryfikuje ono pojedynczy rachunek względem Wykazu VAT. W interfejsie zrobisz to samo w narzędziu Weryfikacja rachunku. Nie zakładaj, że endpoint zwróci wszystkie konta podmiotu — po prostu ich nie ma w odpowiedzi.
W Pythonie
Z biblioteką requests całość to kilka linii. Zwróć uwagę na porównanie do surowego literału "Czynny":
import requests
def status_vat(nip: str) -> str:
r = requests.get(f"https://skanfirmy.pl/nip/{nip}?format=json", timeout=10)
r.raise_for_status()
return r.json()["bl"]["statusVat"]
s = status_vat("5260250995")
# porównuj do surowego literału MF, nie do przetłumaczonej etykiety
if s == "Czynny":
print("Czynny podatnik VAT")
else:
print("Uwaga — status:", s)
# ORANGE POLSKA SPÓŁKA AKCYJNA → Czynny
Podmiot spoza rejestru zwraca 404, a NIP z błędną sumą kontrolną — 400. Warto obsłużyć oba przypadki, zamiast zakładać, że każdy NIP ma wpis.
W JavaScripcie
const r = await fetch("https://skanfirmy.pl/nip/5260250995?format=json");
if (r.ok) {
const { bl } = await r.json();
console.log(bl.name, "→", bl.statusVat);
// bl.statusVat === "Czynny" — porównuj do surowego literału
}
W PHP
$ch = curl_init("https://skanfirmy.pl/nip/5260250995?format=json");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$bl = json_decode(curl_exec($ch), true)["bl"];
echo $bl["name"] . " · VAT: " . $bl["statusVat"];
// ORANGE POLSKA SPÓŁKA AKCYJNA · VAT: Czynny
Wiele NIP-ów naraz
Do sprawdzenia statusu VAT dla listy podmiotów jednym zapytaniem użyj /nips/{lista}?format=json — NIP-y rozdzielasz przecinkami, a w odpowiedzi dostajesz wpis (z polem bl) dla każdego z nich:
curl "https://skanfirmy.pl/nips/5260250995,7010001454?format=json"
Więcej niż status VAT — jednym NIP-em
Odpowiedź /nip/{nip}?format=json łączy Wykaz VAT (pole bl) z danymi z KRS (pole krs) w jednej odpowiedzi. Jeśli potrzebujesz też danych z REGON albo walidacji unijnego numeru VAT, użyj osobnych endpointów (wszystkie GET → JSON, bez klucza):
/nip/{nip}— status VAT (Wykaz VAT) + KRS + REGON/nips/{lista}— wiele NIP-ów naraz (rozdzielonych przecinkami)/regon/{nip}— dane z rejestru REGON (GUS) — zobacz API GUS (REGON)/vies/{kraj}/{numer}— walidacja unijnego numeru VAT (VIES, Komisja Europejska) — zobacz API VIES
Dane z KRS wyciągane po tym samym NIP-ie opisuje API KRS, a dane z REGON — API GUS (REGON).
Dla agentów AI pod adresem https://skanfirmy.pl/mcp stoi serwer Model Context Protocol (MCP) z narzędziem sprawdz_nip (te same dane, w tym pole bl) oraz sprawdz_rachunek (weryfikacja konkretnego rachunku bankowego względem Wykazu VAT) — również bez klucza. Mapa endpointów dla modeli jest w llms.txt. Weryfikację po NIP w interfejsie zrobisz w narzędziu Biała Lista VAT.
Publiczny endpoint a typowe płatne API Wykazu VAT
Większość komercyjnych nakładek REST na Wykaz VAT działa w modelu freemium — konto, klucz API i dzienny limit zapytań w bezpłatnym progu. Ten endpoint jest publiczny i bez opłat. Różnice w skrócie:
| Typowe płatne API Wykazu VAT | skanfirmy.pl /nip | |
|---|---|---|
| Klucz API | wymagany | niepotrzebny |
| Rejestracja / konto | tak | nie |
| Limit zapytań | zwykle jest | brak twardego limitu (prosimy o rozsądek) |
| Format odpowiedzi | REST/JSON | REST/JSON |
| Serwer MCP dla agentów AI | zwykle brak | tak |
| Zakres | zwykle sam status VAT | VAT + KRS + REGON + VIES (osobne endpointy) |
| Model | freemium / abonament | bezpłatnie |
To nie jest oficjalne API Wykazu VAT — dane pochodzą z tego samego źródła (Wykaz VAT prowadzony przez Ministerstwo Finansów), tylko udostępnione jednym zapytaniem GET.
Skąd pochodzą dane i czym to nie jest
Dane pochodzą wprost z Wykazu VAT (Biała Lista) prowadzonego przez Ministerstwo Finansów. To niezależne narzędzie — nie jest oficjalnym API MF ani z nim powiązane; jedynie udostępnia jego dane w wygodniejszej formie. Zakres i aktualność danych są takie, jak w Wykazie VAT; znacznik mfRequestDateTime mówi, na jaki moment status został pobrany z MF.
Najczęstsze pytania
Jak sprawdzić status VAT firmy po NIP w formacie JSON?
Wyślij GET na https://skanfirmy.pl/nip/{NIP}?format=json i odczytaj pole bl.statusVat. Zwraca ono literał Ministerstwa Finansów: Czynny, Zwolniony lub Niezarejestrowany. W tym samym polu bl dostajesz też nazwę, REGON, adres i numer KRS.
Czy potrzebny jest klucz API albo rejestracja?
Nie. Endpoint /nip/{nip} jest publiczny — zwraca JSON po dodaniu ?format=json, bez klucza API, bez zakładania konta i bez dziennego limitu zapytań.
Czy endpoint zwraca listę rachunków bankowych z Białej Listy?
Nie. Pole bl zawiera status VAT i dane podmiotu (nazwa, REGON, adres, KRS), ale nie listy rachunków bankowych. Żeby sprawdzić, czy konkretny rachunek (NRB) figuruje na Białej Liście dla danego NIP, użyj narzędzia MCP sprawdz_rachunek lub narzędzia /rachunek w interfejsie.
Jakie wartości przyjmuje statusVat i jak je porównywać?
Pole statusVat przyjmuje surowe literały Ministerstwa Finansów: Czynny, Zwolniony lub Niezarejestrowany. W kodzie porównuj zawsze do surowego literału (np. == "Czynny") i nie tłumacz go przed rozgałęzieniem — tłumaczenie zmieniłoby wartość, na której opiera się logika.
Czy korzystanie jest płatne?
Nie. Endpoint jest bezpłatny i bez rejestracji. Dane pochodzą wprost z Wykazu VAT (Biała Lista) prowadzonego przez Ministerstwo Finansów.