Metodologie
Cum colectăm, clasificăm și expunem autorizațiile de construire emise de primăriile din România. Toate datele sunt publice — noi doar le facem căutabile și citabile.
Ultima actualizare a acestei pagini:
1. Acoperirea datelor
Agregăm autorizațiile de construire publicate în registrele publice ale primăriilor din 16 orașe. Tabelul de mai jos reflectă starea curentă a bazei de date (regenerată la fiecare deploy).
| Oraș | Total | Ani | Sursă oficială | Metodă scraping | Total an curent |
|---|---|---|---|---|---|
| Oradea | 6443 | 2023, 2024, 2025, 2026 | oradea.ro | Tabel paginat | 565 în 2026 |
| Constanța | 3338 | 2023, 2024, 2025, 2026 | pmconline.ro | DevExpress grid (browser) | 222 în 2026 |
| Cluj-Napoca | 3311 | 2023, 2024, 2025, 2026 | primariaclujnapoca.ro | URL enumeration | 180 în 2026 |
| Timișoara | 2988 | 2023, 2024, 2025, 2026 | primariatm.ro | URL enumeration | 300 în 2026 |
| Craiova | 2800 | 2024, 2025, 2026 | eportal.primariacraiova.ro | Lotus Notes view | 390 în 2026 |
| Iași | 2638 | 2023, 2024, 2025, 2026 | primaria-iasi.ro | Lotus Notes view | 305 în 2026 |
| Brașov | 1876 | 2023, 2024, 2025, 2026 | extranet.brasovcity.ro (SharePoint) | POST cu sesiune | 154 în 2026 |
| Arad | 1684 | 2024, 2025, 2026 | primariaarad.ro/dm_arad/portal.nsf | PDF lunar | 231 în 2026 |
| Brăila | 1424 | 2024, 2025, 2026 | webadaptor.gisapp.ro (ArcGIS REST) | API GIS | 136 în 2026 |
| Sibiu | 1320 | 2023, 2024, 2025, 2026 | e-serviciielectronice.sibiu.ro | Carduri paginate | 60 în 2026 |
| Ploiești | 1161 | 2024, 2025, 2026 | ploiesti.ro | PDF lunar | 108 în 2026 |
| Galați | 866 | 2024, 2025, 2026 | cu.primariagalati.ro | API GIS (FIDA) | 68 în 2026 |
| Pitești | 844 | 2024, 2025, 2026 | primariapitesti.ro | PDF anual cumulativ | 93 în 2026 |
| Suceava | 662 | 2024, 2025, 2026 | primariasv.ro | Tabel HTML | 129 în 2026 |
| Târgu Mureș | 646 | 2024, 2025, 2026 | tirgumures.ro | Tabel HTML | 41 în 2026 |
| București | 0 | — | — | n/a |
De ce nu afișăm un procentaj de completitudine?
Tentația ar fi să raportăm „cât de complet e setul nostru de date" ca
count / max(număr),
dar primăriile lasă în mod regulat goluri în numerotare (autorizații anulate,
retrase, returnate — numărul rămâne sărit). În plus, Brăila și sectoarele
Bucureștiului nu folosesc deloc numerotare secvențială. În ambele cazuri
un procentaj ar minți — am avea toate autorizațiile publicate de primărie
și totuși am părea „45% complet". Așa că nu publicăm cifra. Dacă ai nevoie
de o evaluare precisă a acoperirii pentru un oraș anume, scrie-ne.
2. Cum colectăm datele
Fiecare primărie publică datele într-un format diferit. Am implementat un scraper dedicat per primărie, adaptat sursei. Toate sursele sunt accesibile public — colectăm doar ceea ce este deja publicat în temeiul Legii 50/1991 privind autorizarea executării lucrărilor de construcții, completată de Legea 179/2022 privind datele deschise.
code HTML / JSOUP
Pentru primăriile cu pagini HTML accesibile direct (Cluj-Napoca, Timișoara, Sibiu, Oradea, Brașov, Iași etc.) folosim parser-ul Jsoup pentru a extrage date structurate din tabele și liste paginate.
description PDF lunar
Arad, Pitești, Ploiești, Sectoarele 3, 5 și 6 ale Bucureștiului publică liste lunare în PDF. Pentru ele rulăm extragere text + regex pentru a izola fiecare autorizație.
table_chart Excel
Sectoarele 1, 2 și 4 ale Bucureștiului publică fișiere Excel. Le descărcăm automat și extragem direct rândurile.
api API GIS / FeatureServer
Brăila (ArcGIS REST) și Galați (FIDA GIS) expun datele prin API JSON public. Pentru ele folosim direct endpoint-urile structurate.
smart_toy Browser automatizat (Playwright)
Constanța folosește un grid DevExpress cu paginare prin POST-uri ASP.NET cu state-uri opace. Pentru ea rulăm un browser headless Chromium care navighează ca un utilizator.
verified_user Sursa oficială pe fiecare autorizație
Pe pagina de detaliu a fiecărei autorizații apare link-ul Vezi documentul oficial la primărie care duce înapoi la documentul-sursă. Verificarea originalului e la un click distanță.
3. Cum clasificăm cu AI
Descrierile brute ale autorizațiilor sunt scurte și ne-standardizate ("CONSTRUIRE LOCUINȚĂ P+E", "EXTINDERE ȘI SUPRAETAJARE", "BRANȘAMENT APĂ"). Pentru a le face căutabile pe categorii, fiecare descriere este clasificată automat de un model AI lingvistic (instruction-tuned, de tip large language model) care primește descrierea și adresa și returnează o categorie, un tip de lucrare, un scor de încredere și un rezumat scurt.
Schema de clasificare
Intrare: textul descrierii autorizației + adresa.
Ieșire: obiect JSON cu patru câmpuri —
category,
workType,
confidence (0-1) și
summary (rezumat în română, max 15 cuvinte).
23 categorii posibile, grupate astfel:
6 tipuri de lucrare: NEW_CONSTRUCTION, EXTENSION, RENOVATION, DEMOLITION, CHANGE_OF_USE, INFRASTRUCTURE.
Score de încredere: fiecare clasificare are un câmp
confidence
între 0 și 1. Atunci când e sub 0.7, descrierea este considerată
ambiguă — informația apare cu marcaj de incertitudine în rezultate.
Cazurile cele mai dese de încredere scăzută: descrieri foarte scurte
sau lucrări multiple combinate într-un singur text.
Limitele clasificatorului: nu folosim verificare manuală sistematică. Modelul comite erori, în special pentru descrieri foarte scurte sau care combină mai multe lucrări. Pentru analize critice (presă, cercetare, expertize) recomandăm verificarea descrierii originale și a documentului-sursă de la primărie.
Nu folosim AI pentru date factuale. Numărul autorizației, data emiterii, adresa și beneficiarul sunt extrase prin parsing determinist din sursă. AI-ul intervine doar pentru clasificarea semantică a descrierii, NU pentru a extrage sau modifica fapte.
Pentru replicare științifică: detalii suplimentare despre pipeline-ul de clasificare (modelul exact folosit, prompt-ul, parametrii) sunt disponibile la cerere către cercetători și jurnaliști, prin contactul de mai jos.
4. Geocodificare
Adresele autorizațiilor sunt convertite în coordonate geografice (latitudine, longitudine) folosind serviciul public Nominatim (OpenStreetMap), cu respectarea limitelor de utilizare.
Filtru de validare: când Nominatim nu poate localiza
o stradă specifică, returnează zona administrativă a orașului
ca fallback (în răspuns: class=place + type=city/town).
Detectăm explicit aceste cazuri prin metadata Nominatim și le respingem,
indiferent de coordonate. În plus, ca plasă de siguranță, respingem
rezultatele care cad la mai puțin de ~50m de centrul exact al orașului.
Adresele genuine din centrul istoric (Piața Unirii, Strada Republicii etc.)
trec filtrul corect. Autorizațiile fără coordonate rămân disponibile
în căutare textuală, dar nu apar pe hartă.
5. Frecvența actualizărilor
- schedule Scraping zilnic la 09:00 și 18:00 pentru toate cele 16 orașe. Strategia de actualizare incrementală diferă în funcție de formatul publicat de fiecare primărie (vezi capitolul „Limite" de mai jos).
- smart_toy Clasificare AI imediat după scraping — autorizațiile noi sunt clasificate automat în aceeași execuție.
- place Geocodare orară (la fix și jumătate) pentru autorizațiile noi care încă nu au coordonate.
- backup Backup săptămânal al întregii baze de date (duminică 04:00) — datele nu se pierd.
6. Limite și gaps cunoscute
- warning Acoperire parțială pentru orașele cu portaluri JS-heavy. Constanța (DevExpress) și Sibiu (Single Page Application) pot avea întârzieri sau pot fi temporar indisponibile dacă portalul-sursă își schimbă structura. Verifică coloana "Completitudine an curent" din tabelul de mai sus.
- warning Numerotare ne-secvențială. Brăila și sectoarele Bucureștiului emit numere de autorizație care nu cresc liniar (sunt ID-uri ANCPI sau ID-uri interne). Pentru aceste primării nu putem calcula automat completitudinea.
-
warning
Beneficiarul nu este disponibil pentru toate orașele.
Câmpul
beneficiaryeste extras în prezent doar pentru București și Arad (PDF-urile cu text dens necesită extragere AI suplimentară). Pentru celelalte orașe acest câmp este de obicei null. - warning Istoricul în baza de date este limitat la ce am scrapuit până acum, nu la ce există în registrele primăriilor. Majoritatea primăriilor publică autorizații de construire pe mai mulți ani decât avem agregați aici. Am pornit scraping-ul de la anii recenți (2023–2026, în funcție de oraș) și extindem treptat. La cerere — pentru cercetare academică sau investigații specifice — putem extinde colectarea cu istoric mai mare. Scrieți-ne pe [email protected]. Coloana Ani din tabelul de mai sus arată acoperirea curentă, nu maximul disponibil la sursă.
- warning Datele au caracter informativ. Pentru valoare juridică (contestare, expertiză, raport oficial), consultă întotdeauna documentul-sursă de la primărie — link-ul este expus pe pagina fiecărei autorizații.
7. Licență — CC BY 4.0
Creative Commons Attribution 4.0 International
Datele agregate de Cetățeanul Curios sunt publicate sub licența CC BY 4.0. Asta înseamnă că poți:
- ✅ Le poți copia și redistribui în orice mediu sau format.
- ✅ Le poți adapta, transforma, prelucra și folosi inclusiv comercial.
Singura condiție: menționează sursa ("Cetățeanul Curios, cetateanulcurios.ro") și un link înapoi.
Notă: licența CC BY 4.0 acoperă agregarea, structura și clasificarea noastră a datelor. Datele de bază (numele autorizației, descrierea, adresa) provin din registre publice ale primăriilor, care sunt date deschise în temeiul Legii 179/2022.
8. Cum ne citezi
Dacă folosești datele într-un articol, raport, lucrare academică sau prezentare, te rugăm să folosești unul din formatele de mai jos.
Citare scurtă (presă)
Sursa: Cetățeanul Curios (cetateanulcurios.ro), accesat la 2026-05-11, CC BY 4.0.
ISO 690 (cercetare)
DELCEA, Laurentiu. Cetățeanul Curios — Bază de date cu autorizații de construire din România. 2026. Disponibil la: https://cetateanulcurios.ro. Wikidata: Q139619313. Licență: CC BY 4.0.
APA 7
Delcea, L. (2026). Cetățeanul Curios: Romanian building permits database [Data set]. https://cetateanulcurios.ro
BibTeX (LaTeX)
@misc{cetateanulcurios2026,
title = {Cetățeanul Curios — Romanian Building Permits Database},
author = {Delcea, Laurentiu},
year = {2026},
url = {https://cetateanulcurios.ro},
note = {Wikidata: Q139619313, CC BY 4.0}
}
9. Contact pentru presă și cercetare
Laurentiu Delcea
Operator și autor — Cetățeanul Curios
Pentru jurnaliștii care lucrează la o investigație: pot detalia metodologia într-un call de 15 minute, pot extrage filtre custom (ex. autorizații pe o anumită stradă, perioadă, sau dezvoltator) și pot oferi acces direct la API-ul cu atribuire. Răspund de obicei în 24h.
Semnal disponibil la cerere prin email.