Rejestry API → BZP API

BZP API

GET /v1/bzp/{nip}

Postępowania, w których podmiot wystąpił jako wykonawca albo zamawiający. Parametr limit (domyślnie 50, maksimum 200) ogranicza liczbę zwróconych ogłoszeń.

{
  "status": "found",
  "data": {
    "summary": { "asContractor": 0, "asOrganization": 2,
                 "latestPublicationDate": "2026-07-02T07:13:35.000Z" },
    "coverage": { "from": "2025-07-26T05:15:20.000Z",
                  "to": "2026-07-26T08:34:58.000Z",
                  "noticesIndexed": 545503 },
    "notices": [
      {
        "noticeNumber": "2026/BZP 00318648/01",
        "noticeType": "ContractNotice",
        "publicationDate": "2026-07-02T07:13:35.000Z",
        "role": "organization",
        "orderObject": "„Przebudowa wraz z modernizacją Szkoły Podstawowej…”",
        "cpvCode": "45000000-7 (Roboty budowlane)",
        "organizationName": "Gmina Pyrzyce"
      }
    ]
  },
  "warnings": [
    { "code": "bzp_coverage",
      "message": "Odpowiedź obejmuje ogłoszenia z zakresu 2025-07-26 – 2026-07-26. Poza tym zakresem nie wiemy…" }
  ]
}

To nasz indeks, nie proxy — i mówimy, co w nim jest. API Biuletynu nie potrafi wyszukiwać po NIP, nie ma paginacji i ucina wynik na 500 rekordach, więc zbudowaliśmy własny indeks. Pole data.coverage podaje zakres, który realnie mamy zaindeksowany. Pusta lista nie jest dowodem braku postępowań poza tym zakresem — i dlatego ostrzeżenie bzp_coverage jest w każdej odpowiedzi.

Szukamy po wszystkich znanych identyfikatorach podmiotu (NIP, KRS, REGON), bo zamawiający wpisują je zamiennie w jedno pole — na realnej próbce 19% wykonawców miało tam coś innego niż NIP. Bez tego wyszukiwanie gubiłoby co piątego wykonawcę.

Zanim wyślesz pierwsze zapytanie

Zasady wspólne dla wszystkich źródeł opisuje strona przeglądowa: uwierzytelnianie kluczem, koperta odpowiedzi, różnica między not_found a unavailable, rozliczenie zapytań i limity. Pełny kontrakt: /v1/openapi.json.

Uzyskaj dostęp do API →