Otwarte API rejestru umów
JSON, bez klucza i logowania, CORS otwarty. Dane z Centralnego Rejestru Umów JSFP, odświeżane co godzinę.
Endpointy
| Endpoint | Opis |
|---|---|
GET /api/agreements | Lista umów (tablica JSON). Obsługuje filtry — patrz niżej. Nagłówek X-Total-Count = liczba wyników przed limit/offset. |
GET /api/agreement/{id} | Pełny rekord jednej umowy (UUID z pola id). |
GET /api/stats | { updatedAt, count, totalValue }. |
GET /api/health | Status serwisu i ostatniego odświeżenia. |
GET /api/openapi.json | Specyfikacja OpenAPI 3.1. |
GET /api/flags | Sygnały: automatycznie wykryte wzorce warte weryfikacji (patrz metodologia niżej). Parametry: typ (salami|koncentracja|adres), limit (≤200). |
GET /data.json | Pełny zrzut wszystkich umów (duży plik!) — do analiz offline. |
GET /llms.txt | Opis serwisu i danych dla asystentów AI. |
Parametry /api/agreements
| Parametr | Opis | Przykład |
|---|---|---|
woj | województwo (nazwa lub slug, bez znaków diakrytycznych też zadziała) | ?woj=zachodniopomorskie |
zam | zamawiający — fragment nazwy urzędu | ?zam=starostwo |
wyk | wykonawca — fragment nazwy firmy | ?wyk=orange |
nip / regon | dokładny NIP/REGON dowolnej strony umowy | ?nip=5832705185 |
q | szukaj w całości (zamawiający, wykonawca, przedmiot, lokalizacja) | ?q=szpital |
min / max | zakres wartości umowy w zł | ?min=1000000 |
od / do | data zawarcia (ISO RRRR-MM-DD) | ?od=2026-07-01 |
sort | wartosc (malejąco), data (najnowsze) lub domyślnie: ostatnio opublikowane | ?sort=wartosc |
limit / offset | stronicowanie: limit domyślnie 100, maksymalnie 1000 | ?limit=50&offset=50 |
Filtry łączą się (AND). Przykłady na żywo:
- umowy z zachodniopomorskiego, od najdroższej
- umowy „szpital" powyżej 100 tys. zł
- wszystkie umowy z wykonawcą „Orange"
- 20 najnowszych od 1 lipca
Rekord umowy — pola
{
"id": "uuid — klucz do /api/agreement/{id} i /umowa/{id}",
"zam": "zamawiający (urząd JSFP)",
"wyk": "pierwszy wykonawca",
"woj": "WOJEWÓDZTWO", "powiat": "…", "gmina": "…",
"wartosc": 123456.78,
"przedmiot": "przedmiot umowy",
"data": "DD.MM.RRRR (zawarcia)", "dataKon": "…", "dataPub": "…",
"numer": "numer umowy lub null", "status": "Aktywna | …",
"nieozn": false, "fin": false, "zmiany": 0,
"strony": [{ "rodzaj": "JSFP|Przedsiębiorca|…", "nazwa": "…",
"nip": "…", "regon": "…", "adr": "…", "kons": false }]
}
Sygnały — metodologia
Endpoint /api/flags zwraca wzorce statystyczne wykryte automatycznie w danych rejestru.
Sygnał nie jest zarzutem — każdy może mieć niewinne wyjaśnienie i wymaga weryfikacji u źródła (linkujemy wszystkie umowy-dowody).
| Typ | Definicja (progi) | Dlaczego warte uwagi |
|---|---|---|
salami | ≥3 umowy tej samej pary urząd↔wykonawca w ≤90 dni, każda 104–160 tys. zł (okolice progu 130 tys. zł netto, od którego stosuje się Prawo zamówień publicznych) | możliwe dzielenie zamówienia dla ominięcia przetargu |
koncentracja | jeden wykonawca ma ≥50% wartości wszystkich umów urzędu (≥5 umów pary, ≥8 umów urzędu, ≥200 tys. zł) | monokultura dostawcy — rynek mógł nie być konkurencyjny |
adres | dwaj różni wykonawcy z tym samym adresem siedziby (KRS/biała lista) i umowami u tego samego urzędu | możliwe podmioty powiązane / pozorna konkurencja |
Zasady
- Dane publiczne; źródłem pierwotnym jest rejestrumow.gov.pl (Ministerstwo Finansów). Cytując, podawaj link do
https://publiczneumowy.org/umowa/{id}. - Bez klucza API i limitów formalnych — prosimy o rozsądek (dane i tak są cache'owane 60 s).
- CORS:
access-control-allow-origin: *— możesz odpytywać z przeglądarki.
Serwis obywatelski — nie jest oficjalnym serwisem Ministerstwa Finansów.
Reprezentujesz jednostkę publiczną? Publikuj umowy w CRU ze zdjęcia →