Dokumentacja techniczna

API Reference

Endpointy, parametry, kody odpowiedzi i przykłady zapytań REST API DataPort.pl.

Base URL
https://dataport.pl/api
Version
v1
Authentication
API Key (Header)

Endpoints

GET /api/v1/company/{nip} Pobierz dane firmy po NIP

Opis

Pobiera dane firmy z GUS BIR1.1 na podstawie numeru NIP. Jeśli firma nie istnieje w lokalnej bazie, zostanie automatycznie pobrana z GUS i zapisana. Wykorzystuje inteligentny cache.

Path Parameters

Nazwa Typ Wymagany Opis
nip string Tak 10-cyfrowy numer NIP firmy (bez myślników)

Query Parameters

Nazwa Typ Wymagany Opis
format string Nie Format odpowiedzi: simple (podstawowy) lub full (rozszerzony). Gdy GUS zwróci datę zakończenia działalności, pole data_zakonczenia_dzialalnosci zostanie dodane automatycznie. Domyślnie: simple

Headers

Nazwa Typ Wymagany Opis
X-API-Key string Tak Klucz autoryzacji API
Accept string Nie Typ odpowiedzi. Wartość: application/json

Responses

200 OK
404 Not Found
401 Unauthorized
429 Rate Limit
Format: simple
Pole data_zakonczenia_dzialalnosci jest opcjonalne i pojawia się tylko wtedy, gdy GUS zwróci tę informację.
{
  "success": true,
  "nip": "1234567890",
  "regon": "123456789",
  "nazwa": "PRZYKŁADOWA FIRMA SP. Z O.O.",
  "adres": "ul. Testowa 123/45, 00-001 Warszawa",
  "data_zakonczenia_dzialalnosci": "2024-12-31"
}
Format: full
W formacie full pole jest zwracane na tej samej zasadzie.
{
  "success": true,
  "nip": "1234567890",
  "regon": "123456789",
  "nazwa": "PRZYKŁADOWA FIRMA SP. Z O.O.",
  "ulica": "ul. Testowa",
  "numer_budynku": "123",
  "numer_lokalu": "45",
  "kod_pocztowy": "00-001",
  "miasto": "Warszawa",
  "data_zakonczenia_dzialalnosci": "2024-12-31"
}
Firma nie istnieje w GUS
{
  "success": false,
  "message": "Firma nie istnieje"
}
Nieprawidłowy lub brakujący klucz API
{
  "success": false,
  "message": "Nieprawidłowy klucz API",
  "error": "INVALID_API_KEY"
}
Przekroczono dzienny limit zapytań
{
  "success": false,
  "message": "Przekroczono dzienny limit zapytań dla Twojego konta",
  "error": "RATE_LIMIT_EXCEEDED",
  "limit": 10,
  "used": 11,
  "info": "Limit dotyczy wszystkich Twoich kluczy API łącznie"
}

Przykład zapytania

curl -X GET "https://dataport.pl/api/v1/company/1234567890?format=simple" \
  -H "X-API-Key: your_api_key_here" \
  -H "Accept: application/json"
POST /api/v1/company Wyszukaj firmę po NIP (POST)

Opis

Alternatywna metoda wyszukiwania firmy po NIP używając metody POST. Zwraca te same dane co endpoint GET. Użyteczne gdy NIP jest przekazywany w body żądania.

Query Parameters

Nazwa Typ Wymagany Opis
format string Nie Format odpowiedzi: simple lub full. Domyślnie: simple

Headers

Nazwa Typ Wymagany Opis
X-API-Key string Tak Klucz autoryzacji API
Content-Type string Tak Typ zawartości. Wartość: application/json
Accept string Nie Typ odpowiedzi. Wartość: application/json

Request Body

application/json
Nazwa Typ Wymagany Opis
nip string Tak 10-cyfrowy numer NIP firmy
{
  "nip": "1234567890"
}

Responses

200 OK
404 Not Found
400 Bad Request
401 Unauthorized
429 Rate Limit
Pomyślne pobranie danych
Pole data_zakonczenia_dzialalnosci jest opcjonalne i zależy od odpowiedzi GUS.
{
  "success": true,
  "nip": "1234567890",
  "regon": "123456789",
  "nazwa": "PRZYKŁADOWA FIRMA SP. Z O.O.",
  "adres": "ul. Testowa 123/45, 00-001 Warszawa",
  "data_zakonczenia_dzialalnosci": "2024-12-31"
}
Firma nie istnieje w GUS
{
  "success": false,
  "message": "Firma nie istnieje"
}
Nieprawidłowy format danych lub brak NIP
{
  "success": false,
  "message": "Pole nip jest wymagane",
  "error": "VALIDATION_ERROR"
}
Nieprawidłowy lub brakujący klucz API
{
  "success": false,
  "message": "Nieprawidłowy klucz API",
  "error": "INVALID_API_KEY"
}
Przekroczono dzienny limit zapytań
{
  "success": false,
  "message": "Przekroczono dzienny limit zapytań dla Twojego konta",
  "error": "RATE_LIMIT_EXCEEDED",
  "limit": 10,
  "used": 11
}

Przykład zapytania

curl -X POST "https://dataport.pl/api/v1/company?format=simple" \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"nip":"1234567890"}'
POST /api/v1/companies/batch Sprawdź wiele NIPów (batch)

Opis

Sprawdza do 20 numerów NIP w jednym żądaniu i zwraca zbiorczą odpowiedź. Każdy unikalny, poprawny NIP liczy się jako 1 zapytanie w dziennym limicie konta. Duplikaty w tablicy są pomijane (liczone raz). Niepoprawne NIPy zwracane są w wynikach z błędem INVALID_NIP i nie obciążają limitu.

Przed przetwarzaniem API sprawdza, czy masz wystarczający limit na dzisiaj. Limit jest pobierany dopiero po pomyślnym zakończeniu batcha. Czas odpowiedzi zależy od cache — przy danych z cache ~100 ms, przy wielu zapytaniach do GUS nawet 10–40 s.

Headers

Nazwa Typ Wymagany Opis
X-API-Key string Tak Klucz autoryzacji API
Content-Type string Tak Typ zawartości. Wartość: application/json
Accept string Nie Typ odpowiedzi. Wartość: application/json

Request Body

application/json
Nazwa Typ Wymagany Opis
nips string[] Tak Tablica NIPów (min. 1, max. 20). Każdy element: 10 cyfr.
format string Nie Format danych firm: simple lub full. Domyślnie: simple
{
  "nips": ["5261040828", "1234567890", "9876543210"],
  "format": "simple"
}

Responses

200 OK
422 Unprocessable
429 Rate Limit
401 Unauthorized
Batch przetworzony — status per NIP w tablicy results
{
  "success": true,
  "summary": {
    "requested": 3,
    "unique_valid": 3,
    "duplicates_skipped": 0,
    "invalid": 0,
    "found": 2,
    "not_found": 1,
    "errors": 0
  },
  "meta": {
    "processing_time_ms": 74.12,
    "format": "simple",
    "quota": {
      "charged": 3,
      "used_today": 23,
      "daily_limit": 10,
      "remaining": 0
    }
  },
  "results": [
    {
      "success": true,
      "nip": "5261040828",
      "regon": "123456789",
      "nazwa": "PRZYKŁADOWA FIRMA SP. Z O.O.",
      "adres": "ul. Testowa 1, 00-001 Warszawa"
    },
    {
      "nip": "1234567890",
      "success": false,
      "error": "NOT_FOUND",
      "message": "Firma o podanym NIP nie istnieje w rejestrze GUS"
    }
  ]
}
Brak poprawnych NIPów do sprawdzenia
{
  "success": false,
  "message": "Brak poprawnych NIPów do sprawdzenia.",
  "error": "NO_VALID_NIPS",
  "results": [
    {
      "input": "123",
      "success": false,
      "error": "INVALID_NIP",
      "message": "Nieprawidłowy format NIP. Wymagane 10 cyfr."
    }
  ]
}
Niewystarczający limit przed rozpoczęciem batcha
{
  "success": false,
  "message": "Niewystarczający dzienny limit zapytań dla tego batcha.",
  "error": "RATE_LIMIT_EXCEEDED",
  "required": 15,
  "remaining": 10,
  "limit": 10,
  "used": 0,
  "info": "Limit dotyczy wszystkich Twoich kluczy API łącznie. Duplikaty NIPów liczone są raz."
}
Nieprawidłowy lub brakujący klucz API
{
  "success": false,
  "message": "Nieprawidłowy klucz API",
  "error": "INVALID_API_KEY"
}

Przykład zapytania

curl -X POST "https://dataport.pl/api/v1/companies/batch" \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"nips":["5261040828","1234567890"],"format":"simple"}'

Status Codes

200
OK
Zapytanie wykonane pomyślnie
400
Bad Request
Nieprawidłowe parametry zapytania
401
Unauthorized
Brak lub nieprawidłowy klucz API
404
Not Found
Firma nie istnieje w GUS
429
Too Many Requests
Przekroczono dzienny limit zapytań
500
Server Error
Błąd serwera lub problem z GUS