Dla programistów · REST i MCP

API GUS (REGON) po NIP
REST/JSON bez klucza

Dane podmiotu z rejestru REGON (GUS BIR) po numerze NIP — jednym zapytaniem GET, w odpowiedzi czysty JSON. Bez klucza API, bez rejestracji i bez dziennego limitu zapytań. To warstwa nad usługą GUS BIR (SOAP), która zdejmuje z Ciebie logowanie, sesje i XML.

Jeden GET, jeden JSON

Endpoint jest publiczny, metoda GET, a parametr ?format=json zwraca dane maszynowo (bez niego dostajesz stronę HTML dla człowieka):

curl "https://skanfirmy.pl/regon/5260250995?format=json"

W odpowiedzi dostajesz oficjalną nazwę, numer REGON, adres siedziby i formę prawną (u osób fizycznych i spółek cywilnych od 27.09.2026 tylko nazwę, formę, miejscowość i status działalności — szczegóły niżej) — prosto z rejestru REGON prowadzonego przez GUS:

{
  "nip": "5260250995",
  "source": "regon-gus",
  "regon": "012100784",
  "dane": {
    "regon": "012100784",
    "nip": "5260250995",
    "nazwa": "ORANGE POLSKA SPÓŁKA AKCYJNA",
    "wojewodztwo": "MAZOWIECKIE",
    "powiat": "Warszawa",
    "gmina": "Ochota",
    "miejscowosc": "Warszawa",
    "kodPocztowy": "02-326",
    "ulica": "Aleje Jerozolimskie",
    "nrNieruchomosci": "160",
    "typ": "P",
    "dataZakonczenia": ""
  },
  "privacy": null,
  "checkedAt": "2026-08-23"
}

Bez klucza API, bez rejestracji, bez limitu dziennego

Endpoint działa od razu — nie musisz zakładać konta, generować klucza API ani pilnować dziennego limitu zapytań. Jedyne ograniczenie chroni serwis przed nadużyciami: najwyżej 20 zapytań na 10 sekund z jednego adresu IP (po przekroczeniu kod 429 przez 10 sekund; od 25.09.2026). To celowa różnica względem komercyjnych nakładek na GUS: chcemy, żeby integrację dało się wpiąć w minutę, także z poziomu agenta AI. Serwis jest bezpłatny i służy do pojedynczych zapytań inicjowanych przez użytkowników lub ich agentów, nie do masowego pobierania danych.

Zamiast GUS BIR SOAP

Oficjalna usługa GUS to BIR 1.1 — SOAP z sekwencją Zaloguj → DaneSzukajPodmioty → Wyloguj, identyfikatorem sesji w nagłówku, kopertami XML i odpowiedziami w formacie MTOM. Działa, ale integracja potrafi zająć popołudnie. Nasz endpoint robi to wszystko po stronie serwera i zwraca gotowy JSON — Ty wysyłasz jeden GET.

Co zwraca /regon/{nip}:

PoleZnaczenie
regonNumer REGON podmiotu (poza osobami fizycznymi i spółkami cywilnymi)
nazwaOficjalna nazwa z rejestru REGON
wojewodztwo, powiat, gmina, miejscowosc, kodPocztowy, ulica, nrNieruchomosci, nrLokaluAdres siedziby (dla osób prawnych). Dla osób fizycznych (typ F, LF) i spółek cywilnych od 27.09.2026 tylko miejscowosc
typLiterał GUS: P — osoba prawna, F — osoba fizyczna (m.in. JDG), LP/LF — jednostki lokalne
dataZakonczeniaData zakończenia działalności (pusta, jeśli podmiot działa)
forma, statusTylko osoby fizyczne i spółki cywilne (od 27.09.2026, zamiast REGON, adresu i dat): forma (osoba fizyczna, jednostka lokalna osoby fizycznej, spółka cywilna) i status działalności (active albo ended)
privacyOd 26.09.2026, obok pola dane: dla typu F i LF oraz spółek cywilnych informacja, co pominęliśmy (hidden), dlaczego (reason) i gdzie jest pełny wpis (officialSource — wyszukiwarka REGON GUS); dla pozostałych null

Dla jednoosobowych działalności (osoby fizyczne, typ F i LF) i spółek cywilnych (GUS zapisuje je jako typ P, więc rozpoznajemy je po nazwie: „S.C.” albo „spółka cywilna” jako ostatnie oznaczenie formy) od 27.09.2026 zwracamy w dane tylko NIP, nazwę, typ, formę (forma) i miejscowość oraz status działalności (status: active albo ended) — bez numeru REGON, adresu, gminy, powiatu, województwa i dat (RODO, zasada minimalizacji danych; od 26.09.2026 bez ulicy, numeru i kodu pocztowego). Numer REGON i pełny wpis publikuje GUS w wyszukiwarce REGON. Takie odpowiedzi mają nagłówki X-Robots-Tag: noindex i Cache-Control: private, max-age=3600. Tak samo działa narzędzie MCP sprawdz_regon, a /firma-po-regon/{regon} dla REGON-u osoby fizycznej nie zwraca żadnych danych (to byłoby ustalanie tożsamości po samym numerze) — tylko odesłanie do wyszukiwarki GUS.

W Pythonie

Z biblioteką requests całość to kilka linii:

import requests

def dane_regon(nip: str) -> dict:
    r = requests.get(f"https://skanfirmy.pl/regon/{nip}?format=json", timeout=10)
    r.raise_for_status()
    return r.json()["dane"]

d = dane_regon("5260250995")
print(d["nazwa"], "· REGON", d["regon"])
# ORANGE POLSKA SPÓŁKA AKCYJNA · REGON 012100784

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/regon/5260250995?format=json");
if (r.ok) {
  const { dane } = await r.json();
  console.log(dane.nazwa, dane.regon);
}

W PHP

$ch = curl_init("https://skanfirmy.pl/regon/5260250995?format=json");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$dane = json_decode(curl_exec($ch), true)["dane"];
echo $dane["nazwa"] . " · REGON " . $dane["regon"];

Więcej niż REGON — jednym NIP-em

Jeśli oprócz danych GUS potrzebujesz statusu VAT i wpisu w KRS, użyj /nip/{nip}?format=json — łączy Wykaz VAT (Biała Lista, Ministerstwo Finansów), KRS i numer REGON (poza osobami fizycznymi) w jednej odpowiedzi. Pozostałe endpointy (wszystkie GET → JSON, bez klucza):

  • /regon/{nip} — dane z rejestru REGON (GUS)
  • /nip/{nip} — status VAT + Biała Lista + KRS + REGON (poza osobami fizycznymi)
  • /nips/{lista} — wiele NIP-ów naraz (rozdzielonych przecinkami)
  • /vies/{kraj}/{numer} — walidacja unijnego numeru VAT (VIES, Komisja Europejska)

Dla agentów AI pod adresem https://skanfirmy.pl/mcp stoi serwer Model Context Protocol (MCP) z narzędziem sprawdz_regon (i kilkoma innymi do NIP, KRS i VIES) — również bez klucza. Mapa endpointów dla modeli jest w llms.txt, a pełna specyfikacja maszynowa w OpenAPI 3.1. Weryfikację po NIP w interfejsie zrobisz w narzędziu REGON (GUS).

Publiczny endpoint a typowe płatne API GUS

Większość komercyjnych nakładek REST na rejestr GUS działa w modelu freemium — konto, klucz API i dzienny limit zapytań w darmowym progu. Ten endpoint jest publiczny i bezpłatny. Różnice w skrócie:

Typowe płatne API GUSskanfirmy.pl /regon
Klucz APIwymaganyniepotrzebny
Rejestracja / kontotaknie
Limit w darmowym proguzwykle jest20 zapytań na 10 s z jednego IP, bez limitu dziennego
Format odpowiedziREST/JSONREST/JSON
Serwer MCP dla agentów AIzwykle braktak
Zakreszwykle same dane GUS/REGONREGON + Biała Lista VAT, KRS, VIES (osobne endpointy)
Modelfreemium / abonamentbezpłatnie

To nie jest oficjalne API GUS — dane pochodzą z tego samego źródła (rejestr REGON, usługa BIR), tylko udostępnione jednym zapytaniem GET.

Skąd pochodzą dane i czym to nie jest

Dane pochodzą wprost z rejestru REGON prowadzonego przez Główny Urząd Statystyczny (usługa BIR). To niezależne narzędzie — nie jest oficjalnym API GUS ani z nim powiązane; jedynie udostępnia jego dane w wygodniejszej formie. Zakres i aktualność danych są takie, jak w rejestrze GUS.

Najczęstsze pytania

Czy potrzebny jest klucz API albo rejestracja?

Nie. Endpoint /regon/{nip} jest publiczny — zwraca JSON po dodaniu ?format=json, bez klucza API, bez zakładania konta i bez dziennego limitu zapytań.

Czym to się różni od usługi GUS BIR (SOAP)?

Oficjalna usługa GUS BIR 1.1 to SOAP z logowaniem, sesją, kopertami XML i odpowiedziami MTOM. Nasz endpoint wykonuje tę sekwencję po stronie serwera i zwraca gotowy JSON, więc po Twojej stronie zostaje jedno zapytanie GET.

Jak pobrać dane firmy z GUS po NIP w formacie JSON?

Wyślij GET na https://skanfirmy.pl/regon/{NIP}?format=json. W odpowiedzi dostaniesz nazwę, numer REGON, adres siedziby i formę prawną podmiotu z rejestru REGON; u osób fizycznych i spółek cywilnych od 27.09.2026 tylko nazwę, formę, miejscowość i status działalności (RODO).

Czy działa dla jednoosobowej działalności (JDG)?

Tak, w ograniczonym zakresie. Dla osób fizycznych prowadzących działalność (typ F i LF) i spółek cywilnych zwracamy od 27.09.2026 tylko NIP, nazwę, formę, miejscowość i status działalności (aktywna albo zakończona) — bez numeru REGON, adresu i dat (RODO). Numer REGON takiej firmy znajdziesz w wyszukiwarce REGON GUS.

Czy korzystanie jest płatne?

Nie. Endpoint jest bezpłatny i bez rejestracji. Dane pochodzą wprost z rejestru REGON prowadzonego przez Główny Urząd Statystyczny.