Romanian Courts Case Lookup (portal.just.ro) avatar

Romanian Courts Case Lookup (portal.just.ro)

Pricing

from $60.00 / 1,000 case returned (primary)s

Go to Apify Store
Romanian Courts Case Lookup (portal.just.ro)

Romanian Courts Case Lookup (portal.just.ro)

Romanian court case lookup from portal.just.ro for due diligence: search a company's litigation by CUI, look up a case by number, pull a court's cause-list, or get the daily national export of modified cases. MCP-native, pay-per-event. Penal cases excluded; private individuals pseudonymized.

Pricing

from $60.00 / 1,000 case returned (primary)s

Rating

0.0

(0)

Developer

Apnoda

Apnoda

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

12 days ago

Last modified

Share

Căutare Dosare Instanțe România (portal.just.ro)

🇷🇴 Română · 🇬🇧 English


Română

Dosare din instanțele românești (portal.just.ro), livrate ca date structurate pentru due-diligence și agenți AI. Caută litigiile unei firme după CUI, caută un dosar după număr, sau extrage lista de ședințe a unei instanțe pe o zi. Compatibil MCP, plată pe rezultat, fără abonament și fără cont. Numele persoanelor fizice sunt pseudonimizate prin proiectare.

🤖 Pregătit pentru plăți agentice: x402 (automat pentru orice Actor cu preț pay-per-event).

🎬 Demo de 20s:

Ce face acest Actor

Caută dosare în instanțele românești prin serviciul public portal.just.ro (portalquery.just.ro) și livrează înregistrări JSON normalizate: instanța, tipul materiei (categorieCaz), stadiul procesual, părțile (pseudonimizate acolo unde sunt persoane fizice), ședințele și căile de atac.

Pentru fiecare dosar primești:

  • Materia: tipul cauzei (categorieCaz). Dosarele penale nu sunt livrate niciodată: nu avem temei legal să prelucrăm date privind infracțiuni (Art. 10 GDPR), așa că un număr de dosar penal întoarce NOT_FOUND, iar is_penal este mereu false.
  • Stadiul procesual: Fond / Apel / Recurs etc., cu eticheta lizibilă.
  • Părțile, pseudonimizate prin proiectare: persoanele juridice, PFA/ÎI/IF și instituțiile publice trec nealterate (în exportul național zilnic, PFA/ÎI/IF apar cu numele doar în dosarele de litigii cu profesioniștii și faliment, altfel sunt pseudonimizate); persoanele fizice sunt înlocuite cu un token stabil în cadrul dosarului (ex.: Parte-A), astfel încât relațiile de rol se păstrează fără a expune numele.
  • Ședințe + căi de atac: complet, dată, oră, soluție/soluție sumară, tip de cale de atac. Listele de ședințe (CautareSedinte) nu conțin nume de părți.
  • Proveniența join-ului DD: la căutarea după CUI, fiecare dosar poartă matched_company_cui / matched_company_denumire (CUI-ul căutat + numele legal rezolvat), pentru încrucișarea cu ANAF (build #2) și ONRC (build #6).

Datele de bază sunt publice și gratuite pe portal.just.ro, diferența acestui Actor este căutare după CUI + nativ-MCP + pseudonimizat prin proiectare + apelabil de un agent, într-un singur tur.

De ce să folosești acest Actor

Trei profiluri:

Pentru dezvoltatori de agenți AI: Compatibil MCP din prima zi. Te conectezi via mcp.apify.com?tools=apnoda/portal-just și agentul tău are 6 unelte: lookup_case, search_cases, list_hearings, list_courts, get_daily_export, get_upcoming_hearings_export. Fără abonamente, fără chei API, fără infrastructură.

Pentru dezvoltatori care construiesc instrumente de due-diligence: Serviciul portal.just.ro este SOAP, caută după nume și plafonează la 1000 de rezultate per interogare. Acest Actor îl abstractizează, caută litigiile după CUI (rezolvând intern CUI → denumire legală), elimină dosarele penale, atașează proveniența join-ului și pseudonimizează părțile persoane fizice. Output stabil și tipat.

Pentru conformitate, KYC/AML și jurnaliști: Verifică expunerea în instanță a unei liste de contrapărți după CUI într-un singur apel. Export în CSV. Plătești cenți pe dosar returnat. Fără cont la un SaaS de informații juridice.

Încearcă acum

  1. Lipește numere de dosar în câmpul caseNumbers (ex.: ["6597/2/2021"]) și/sau CUI-uri de firme în companyCuis (ex.: ["14399840"]) și pornește Actorul.
  2. Exportă ca CSV și deschide în Excel / Google Sheets.
  3. SAU conectează via MCP și întreabă Claude în limbaj natural (vezi secțiunea următoare).

Plătești doar pe dosar returnat, un număr de dosar inexistent sau un CUI fără litigii (NOT_FOUND / rezultat gol) nu se taxează. Creditul Apify de $5 la înscriere acoperă circa 80 de dosare returnate (la $0.06 fiecare).

Comparație rapidă

CapabilitateAcest ActorPortal public portal.just.ro (gratuit)Platforme plătite de informații juridice
Căutare litigii după CUI (un apel)✅ CUI → denumire❌ doar după nume, manualparțial (în UI)
În masă (multe firme/dosare, o rulare)✅ până la 100❌ unul câte unulparțial
Acces MCP / agenți AI✅❌❌
Părți pseudonimizate prin proiectare (GDPR)✅❌ (nume complete afișate)variabil
API programatic / export CSV✅❌limitat
Plată la utilizare, fără cont✅✅ (gratuit, manual)❌ abonament
Model de prețpay-per-eventgratuit (manual, 1 la 1)abonament

Nișa acestui Actor: stratul de litigii pentru due-diligence, apelabil după CUI, de către agenți, pseudonimizat prin proiectare, peste datele publice ale instanțelor. Datele de bază există gratuit pe portal.just.ro (căutabile după nume). Diferența: livrăm join-ul după CUI, în masă, prin API sau MCP, pseudonimizat, plătit doar la utilizare.

⚠️ Acest Actor NU oferă direct:

  • Căutare după numele unei persoane / al unei părți (gardă de re-identificare GDPR, căutare după CUI + după număr de dosar). Persoanele fizice apar pseudonimizate și în output.
  • Numele reale ale persoanelor fizice (sunt tokenizate prin proiectare; firmele, PFA/ÎI/IF și instituțiile apar cu numele lor).
  • Un scor de risc litigios, pachetul de due-diligence (build #6) îl compune; acest Actor emite câmpurile de intrare.
  • Dosare penale (lipsește temeiul legal pentru date privind infracțiuni, Art. 10 GDPR).
  • Date ONRC (administratori, capital, beneficiari reali), situații financiare sau o interfață vizuală pentru echipă.

Utilizare MCP

Conectează Claude Desktop (sau orice client MCP) adăugând în configurație:

{
"mcpServers": {
"romanian-courts": {
"url": "https://mcp.apify.com?tools=apnoda/portal-just"
}
}
}

Apoi întreabă Claude lucruri precum:

  • "Are firma cu CUI 14399840 dosare pe rol, și în ce stadiu sunt?"
  • "Caută dosarul 6597/2/2021 și rezumă stadiul procesual și părțile."
  • "Listează ședințele de azi de la Curtea de Apel București."

Claude alege unealta potrivită, o apelează și răspunde. Plătești pe dosar returnat / listă de ședințe / export zilnic, nu pe interogare.

Unelte MCP disponibile (6)

UnealtăCe face
lookup_caseUn dosar după numărul de înregistrare (ex.: „6597/2/2021"). Returnează instanța, materia (categorieCaz), stadiul procesual, părțile (pseudonimizate unde sunt persoane fizice), ședințele și căile de atac.
search_casesLitigiile unei firme după CUI, punctul de pârghie pentru DD. Orchestratorul rezolvă CUI → denumire legală și caută dosarele după acea denumire (fără input de tip nume liber). Filtre opționale după instanță + perioadă, plus max_results (implicit 50, maxim 1000) ca plafon de cost predictibil per apel. Livrează dosarele returnate; result_count dă numărul total găsit, iar truncated semnalează că există mai multe.
list_hearingsLista de ședințe (ședințe) a unei instanțe, pentru o anumită zi. Complete, ore și dosarele programate, fără nume de părți.
list_courtsDirectorul celor 246 de instanțe interogabile, fiecare cu token + tip (Judecătorie, Tribunal, Curte de Apel etc.). Gratuit și static: niciun apel live, netarifat. Filtrare opțională după tip. Îl folosești ca să descoperi valoarea exactă court cerută de search_cases și list_hearings.
get_daily_exportUn link de descărcare, valabil scurt timp, pentru o zi întreagă de activitate a tuturor celor 246 de instanțe: fiecare dosar a cărui ultimă modificare cade în acea zi, cu părți și ședințe (fără dosarele penale și fără cele doar între persoane fizice), ca CSV (arhivă zip, un rând pe firmă sau instituție parte, implicit) sau JSONL comprimat gzip (format). Persoanele fizice sunt pseudonimizate; PFA/ÎI/IF apar cu numele doar în dosarele de litigii cu profesioniștii și de faliment. Răspunsul include courts_covered / courts_failed / courts_incomplete, ca să deosebești o zi liniștită de una în care o instanță nu a răspuns, fără să descarci fișierul. Cere contact_email, adresa la care îți trimitem anunțurile de ștergere. O zi încă nepublicată întoarce NOT_FOUND și nu este taxată.
get_upcoming_hearings_exportUn link de descărcare pentru fișierul cu toate ședințele programate la toate cele 246 de instanțe în următoarele 14 zile, cu părțile fiecărui dosar: vezi ce firme au termen și când. Aceleași reguli ca exportul zilnic. Fără date primești cel mai nou fișier. Răspunsul include days_complete și incomplete_days, adică zilele pentru care listele instanțelor nu au fost încă verificate complet. Cere contact_email. Taxat ca exportul zilnic.

Utilizare Apify (non-MCP)

Rulaj standard. Configurezi input-ul, pornești, colectezi rezultatele din dataset. Rularea în lot este axată pe dosare (o înregistrare per dosar rezolvat); list_hearings și list_courts rămân unelte pe suprafața MCP. Exportul național zilnic are propria rulare, descrisă mai jos.

{
"companyCuis": ["14399840", "RO 38150891"],
"caseNumbers": ["6597/2/2021"],
"court": "Curtea de Apel BUCUREŞTI",
"periodStart": "2020-01-01",
"maxAcceptableLagMinutes": 1440
}

Output-ul ajunge într-un dataset Apify standard. Exportă ca JSON, CSV sau XLSX. Trei vederi pre-definite: overview (JSON implicit), csv_export (plat, toate câmpurile scalare, plus scalarii derivați din ședințe: next_hearing_date, latest_hearing_date, latest_solution, ca să răspunzi la întrebările de bază fără să parsezi array-ul de ședințe) și mcp_compact (câmpurile esențiale pentru decizia „merge / nu merge").

Export național zilnic (Task + Schedule, fără cod)

Un fișier pe zi cu fiecare dosar, de la oricare dintre cele 246 de instanțe, a cărui ultimă modificare cade în acea zi, cu părți și ședințe. Dosarele penale nu sunt incluse, nici cele în care toate părțile sunt persoane fizice: fiecare dosar are printre părți cel puțin o firmă sau o instituție publică. PFA/ÎI/IF sunt persoane fizice, așa că apar cu numele doar în dosarele despre activitatea lor comercială (litigii cu profesioniștii și faliment) și pseudonimizate în rest. Pentru integratori și departamente juridice care îl caută singuri după denumirea firmei.

  1. Salvezi input-ul de mai jos ca Task.
  2. Adaugi un Schedule, de exemplu în fiecare zi la 08:00, fus orar Europe/Bucharest (fișierul este gata până la 07:00).
  3. În fiecare dimineață primești pe e-mail linkul de descărcare al zilei precedente.
{
"dailyExport": true,
"exportFormat": "csv",
"contactEmail": "juridic@firma.ro",
"notifyEmail": "juridic@firma.ro"
}
  • CSV (implicit): o arhivă zip cu un rând pe fiecare firmă sau instituție parte în dosar (și pe fiecare PFA/ÎI/IF în dosarele de litigii cu profesioniștii și faliment), cu ; ca separator și UTF-8, așa că Excel în limba română o deschide direct. Fiecare rând are dosarul, instanța, stadiul, partea și calitatea ei, ultimul termen cu soluția lui și următorul termen (dată, oră, complet). Persoanele fizice nu au rânduri proprii: fiecare rând spune câte sunt și în ce calitate (private_parties, private_party_roles, de exemplu „Apelant 36”). Filtrezi coloana party_name după denumirea firmei.
  • JSONL: cu "exportFormat": "jsonl" primești un dosar complet pe linie, cu toate ședințele și căile de atac, pentru import programatic.
  • Linkul este valabil 7 zile de la primire (mai puțin doar pentru o zi mai veche de 21 de zile: linkul expiră odată cu fișierul, la 28 de zile de la generare). Oricine îl are poate descărca fișierul până la expirare, așa că nu îl redistribui.
  • E-mailul pleacă din contul tău Apify, prin Actor-ul apify/send-mail (câțiva cenți de consum de platformă); apnoda nu primește și nu păstrează această adresă. Pe planul gratuit Apify, e-mailul poate merge doar la adresa contului tău.

Condiții pentru destinatarii exportului

Descărcând exportul zilnic sau fișierul cu ședințele viitoare accepți aceste condiții, pe lângă condițiile de reutilizare ale portal.just.ro:

  • Fără reidentificare. Persoanele fizice apar ca simboluri (Parte-A). Nu încerca să afli cine sunt, de exemplu căutând numărul dosarului pe portal.just.ro sau combinându-l cu alte date, și nu publica sau transmite datele într-un mod care le permite altora să o facă.
  • Păstrare de cel mult 12 luni. Șterge datele despre părți provenite din export cel târziu la 12 luni de la descărcare, sau mai devreme dacă nu mai ai nevoie de ele.
  • Ștergere transmisă mai departe. Când te anunțăm că datele unei persoane trebuie șterse (de exemplu în urma unei cereri întemeiate pe art. 17 GDPR), șterge-le din copiile tale în cel mult 30 de zile.
  • Adresă de contact obligatorie. Anunțurile de ștergere le trimitem pe e-mail, la adresa din câmpul contactEmail (în rularea dailyExport) sau contact_email (în unealta MCP). Fără ea exportul nu se livrează. apnoda păstrează adresa, împreună cu fișierul, ziua și formatul descărcate, 13 luni de la descărcare și o folosește doar pentru aceste anunțuri.

Cum nu pierzi niciun dosar

Fișierele sunt un flux de modificări, nu o fotografie completă. Fișierul zilei D conține fiecare dosar a cărui ultimă modificare, în momentul în care fișierul este generat (în jurul orei 05:00, ora României, în dimineața următoare), cade în ziua D. Un dosar modificat din nou a doua zi dimineață, înainte de generare, apare doar în fișierul zilei următoare.

  • Descarcă fiecare zi, în ordine. Un dosar modificat în mai multe zile apare în mai multe fișiere. Încarcă fișierele în ordinea datei și actualizează după court + case_number, păstrând rândul cu cel mai nou last_modified_at. Un dosar care lipsește dintr-un fișier nu este închis sau șters: doar nu s-a modificat în acea zi.
  • Nu sări nicio zi. Un dosar modificat doar într-o zi pe care ai sărit-o nu apare în niciun alt fișier. Fiecare zi rămâne disponibilă 28 de zile, așa că o zi ratată o ceri cu exportDate (sau date în MCP) cât timp este încă disponibilă.
  • Programează rularea după ora 07:00. Fără dată, rularea cere ziua precedentă. Dacă pornește înainte ca fișierul să fie gata, primește „indisponibil”, iar rularea de a doua zi trece deja la ziua următoare, așa că ziua rămâne descoperită dacă nu o ceri explicit.
  • Verifică acoperirea. Dacă courts_failed sau courts_incomplete este peste 0, din acea zi lipsesc dosare de la instanțele respective. Instanțele care nu au răspuns sunt reluate automat la 06:30 și la 12:00, ora României (05:30 și 11:00 iarna), iar ziua este completată; cere-o din nou după ora 13:00 ca să primești fișierul completat.
  • O zi generată din nou are mai puține dosare. Dacă un fișier este generat din nou mai târziu (de exemplu după o întrerupere), dosarele modificate între timp nu mai sunt în el, ci în fișierul zilei ultimei lor modificări. Dacă încarci fiecare zi, nu pierzi nimic.
  • Fără e-mail: linkul este în OUTPUT-ul rulării, iar același input trimis la API-ul run-sync întoarce direct JSON-ul cu linkul.
  • O zi ratată o ceri explicit cu "exportDate": "2026-10-05", oricând în cele 28 de zile.
  • Taxare: $1.00 per zi livrată (daily_export_returned), plus $0.01 pornirea. O zi încă nepublicată nu se taxează: rularea eșuează cu un mesaj clar și, dacă ai pus o adresă, primești un e-mail.
  • Fișierul zilei precedente se generează noaptea; programează Task-ul la 08:00 sau mai târziu.
  • Doar zilele lucrătoare: fiecare rulare aduce ziua precedentă, deci programează de marți până sâmbătă. Un program de luni până vineri ar aduce duminica și ar rata vinerea.
  • Denumirile firmelor și instituțiilor apar neschimbate, iar ale PFA/ÎI/IF în dosarele de litigii cu profesioniștii și de faliment; persoanele fizice apar ca Parte-A, Parte-B. Portalul nu publică CUI-ul părților, deci fișierul conține denumiri, nu CUI.

Ședințele viitoare (următoarele 14 zile)

Cu "exportKind": "upcoming" primești, în locul exportului zilnic, fișierul cu toate ședințele programate la toate instanțele, din ziua generării până peste 13 zile, cu părțile fiecărui dosar. Cauți în el firmele care te interesează și vezi când și unde au termen.

  • CSV: un rând pe ședință și firmă sau instituție parte, cu instanța, numărul dosarului, data, ora, completul, materia, stadiul și obiectul. JSONL: o ședință pe linie, cu toate părțile.
  • Se generează în fiecare dimineață, de obicei până la ora 12:00, ora României. Fără dată primești cel mai nou fișier (cel de azi sau, până e gata, cel de ieri); programează Task-ul după ora 12:00 ca să primești fișierul zilei.
  • Zilele apropiate sunt cele mai complete. Pentru fiecare zi luăm lista de ședințe publicată de fiecare instanță și completăm părțile din dosare. Listele pentru următoarele 2 zile le verificăm din nou în fiecare noapte, ca să prindem dosarele completate în ultimul moment. incomplete_days arată zilele încă neverificate complet: pentru ele fișierul conține doar ședințele deja cunoscute din dosare.
  • Fiecare fișier e complet în sine, nu un flux de modificări: nu trebuie să le combini, ia-l pe cel mai nou.
  • Taxare: $1.50 per fișier livrat (upcoming_export_returned), plus $0.01 pornirea. Un fișier nepublicat nu se taxează. Fișierele se păstrează 28 de zile.

Ce primești

Fiecare înregistrare este un dosar (exemplu ilustrativ, părți generice):

{
"case_number": "6597/2/2021",
"registered_at": "2021-03-15",
"court": "Curtea de Apel BUCUREŞTI",
"department": "Secția a VIII-a Contencios Administrativ și Fiscal",
"category": "Litigii cu profesioniștii",
"is_penal": false,
"stage": "Fond",
"subject": "pretenții",
"last_modified_at": "2024-11-18",
"party_count": 3,
"hearing_count": 1,
"appeal_count": 1,
"next_hearing_date": null,
"latest_hearing_date": "2024-10-18",
"latest_solution": "Amânat",
"parties": [
{ "name": "EXEMPLU CONSTRUCT S.R.L.", "role": "Reclamant", "is_pseudonymized": false },
{ "name": "PRIMĂRIA EXEMPLU", "role": "Pârât", "is_pseudonymized": false },
{ "name": "Parte-A", "role": "Intervenient", "is_pseudonymized": true }
],
"hearings": [
{ "panel": "C5", "date": "2024-10-18T00:00:00", "time": "09:00", "solution": "Amânat", "solution_summary": null, "ruling_date": null, "document_type": "Încheiere", "document_number": null, "document_date": "2024-10-18T00:00:00" }
],
"appeals": [
{ "appeal_type": "Apel", "declaring_party": "EXEMPLU CONSTRUCT S.R.L.", "declaring_party_is_pseudonymized": false, "declared_date": "2024-11-15" }
],
"matched_company_cui": "14399840",
"matched_company_denumire": "EXEMPLU CONSTRUCT S.R.L.",
"search_truncated": false,
"as_of": "2026-06-10T20:04:32.000Z",
"lag_minutes": 12,
"is_stale": false,
"source": "cache"
}

Adnotarea de prospețime (as_of / lag_minutes / is_stale / source) urmărește momentul ultimei extrageri din portal.just.ro, astfel încât agentul tău știe cât de proaspete sunt datele. is_stale este întotdeauna false prin construcție, un rând de cache expirat este re-extras, nu servit.

Exemplu real: trierea unui portofoliu de contrapărți

Apelezi search_cases pentru o listă de CUI-uri de furnizori și citești semnalele:

12 CUI-uri căutate → 47 dosare returnate la 9 firme (3 fără litigii)
21 dosare stage: "Apel"/"Recurs" → aflate în căi de atac
47 dosare părți pseudonimizate acolo unde sunt persoane fizice (token-uri, nu nume)

Costul întregii trieri: ~$2.83 (47 × $0.06 + $0.01 pornire). Timp de răspuns: câteva secunde. Exact genul de verificare pe care echipele de DD, KYC/AML și jurnaliștii o rulează înainte de a contracta.

Calculator de costuri

Prețuri:

  • Pornire Actor: $0.01 (o dată per rulaj / pornire la rece în standby)
  • Per dosar returnat (case_returned): $0.06, evenimentul principal
  • Per listă de ședințe nevidă (hearing_list_returned): $0.04
  • Per export zilnic livrat (daily_export_returned): $1.00, un link pentru o zi întreagă, taxat fix, nu per dosar
  • Per fișier cu ședințele viitoare livrat (upcoming_export_returned): $1.50, un link pentru 14 zile, taxat fix, nu per ședință
  • Numere de dosar inexistente (NOT_FOUND), CUI-uri fără litigii, liste de ședințe goale și zile de export încă nepublicate, niciodată taxate.

Costurile de platformă/calcul sunt absorbite în prețul evenimentului, fără taxe ascunse.

Caz de utilizareApelRezultateCost
Cauți un singur dosarlookup_case1 dosar~$0.06
Triezi litigiile unei firmesearch_cases~8 dosare~$0.48
Triezi o firmă cu multe litigiisearch_cases (implicit)50 dosare (plafonat)~$3.00
Triezi un portofoliu de 50 firmesearch_cases ×50~300 dosare~$18.00
Extragi lista de ședințe a unei instanțelist_hearings1 listă~$0.04
Descoperi instanțele interogabilelist_courts246 de instanțe$0 (gratuit)
Descarci activitatea națională a unei zileget_daily_export sau o rulare dailyExport1 link (o zi, toate instanțele)~$1.00
Descarci ședințele din următoarele 14 zileget_upcoming_hearings_export sau o rulare cu "exportKind": "upcoming"1 link (14 zile, toate instanțele)~$1.50

search_cases plafonează implicit la 50 de dosare per apel (max_results), deci un singur apel nu depășește ~$3.00 chiar pentru o firmă foarte litigioasă; ridici max_results (maxim 1000) când vrei tot, iar result_count îți arată mereu numărul real de dosare.

Fiecare rulare (sau pornire la rece în standby) adaugă, o singură dată, și tariful actor_start de $0.01.

Limitări cunoscute

Sincer, de la început:

  • Fără căutare după nume / parte. Input-ul este exclusiv CUI (firme) + număr de dosar: gardă de re-identificare GDPR.
  • Părțile persoane fizice sunt pseudonimizate. Primești token-uri stabile în cadrul dosarului (ex.: Parte-A), nu nume. Firmele, PFA/ÎI/IF și instituțiile publice trec cu numele lor.
  • Filtrul de instanță folosește lista oficială. Dă un nume de instanță („Curtea de Apel București", cu sau fără diacritice) sau token-ul portal.just.ro; o instanță nerecunoscută întoarce INVALID_INPUT (nu se consumă cotă). Lasă gol pentru a căuta în toate instanțele.
  • Câmpurile text liber nu sunt scanate NER. obiect / soluție pot conține incidental un nume pe care pseudonimizarea (axată pe câmpul de parte) nu îl prinde: un reziduu acceptat și documentat; câmpurile structurate ale părților sunt pseudonimizate.
  • 50 de dosare livrate implicit per căutare după CUI (max_results, plafon de cost predictibil; îl ridici până la 1000, plafonul sursei). truncated semnalează că există mai multe dosare decât cele returnate, iar result_count dă numărul total găsit. Rulajul batch (dataset) livrează tot, până la plafonul sursei, și semnalează plafonul sursei prin search_truncated (coloana „Search capped").
  • Listele de ședințe nu conțin nume de părți (CautareSedinte returnează complete + dosare).
  • Prospețime din cache, la cerere. Rezultatele provin din cache-ul nostru, re-extras la cerere (cu limită de cotă); fiecare înregistrare poartă adnotarea de prospețime, iar max_acceptable_lag_minutes poate strânge (niciodată lărgi) fereastra. Fiecare unealtă MCP facturabilă întoarce și cota de fetch live rămasă (quota: {count, cap, remaining}), ca un agent să se poată auto-limita înainte de QUOTA_EXCEEDED (se resetează la 00:00 UTC).
  • Fără scor de risc, fără ONRC, fără situații financiare.

Sursa datelor și aspecte legale

  • portal.just.ro (portalquery.just.ro): serviciul public al instanțelor din România; accesul programatic este documentat oficial de Ministerul Justiției. Metadatele dosarelor sunt publice prin statut.
  • Drepturi asupra conținutului: © Ministerul Justiției și instanțele de judecată din România. Reproducerea este autorizată cu menționarea sursei, în limitele legislației drepturilor de autor și a celei privind protecția datelor cu caracter personal (termenii portalului). Instanțele dețin proprietatea asupra bazelor de date și a conținutului acestora.

Acest Actor împachetează datele publice ale instanțelor pentru consum automat și agenți AI, pseudonimizând părțile persoane fizice.

Confidențialitate & date personale

apnoda-daas este operatorul de date; Apify, Cloudflare și Hetzner sunt persoane împuternicite conform Art. 28. Controalele de confidențialitate sunt arhitecturale, nu improvizate per sursă:

  • Persoanele fizice sunt pseudonimizate (token stabil în cadrul dosarului); persoanele juridice, PFA/ÎI/IF și instituțiile publice trec nealterate.
  • Doar input CUI: fără căutare după nume (garda de re-identificare).
  • CNP și datele de contact sunt eliminate.
  • categorieCaz este un fapt juridic, formulat neutru: niciodată „fraudă"/„suspect"/„ilegal".
  • Dosarele penale nu sunt stocate și nu sunt livrate (Art. 10 GDPR): sunt eliminate imediat după primirea de la portal.just.ro, înainte de orice arhivare.
  • DPIA pe dosar, ROPA menținut (Art. 30), retenție documentată, ștergere per-înregistrare în arhiva R2 (unitatea de ștergere este dosarul, după numărul de dosar).
  • Utilizare permisă (Regulamentul UE privind IA): rezultatul este metadate publice de dosar, nu un scor și nu o decizie. Nu îl folosi ca intrare într-un sistem automat de evaluare a bonității sau de stabilire a unui scor de credit pentru persoane fizice (inclusiv PFA/ÎI/IF), nici pentru decizii automate de angajare ori de acces la servicii esențiale. Acestea sunt utilizări de risc ridicat (Anexa III) și te fac pe tine furnizorul sau implementatorul acelui sistem, cu obligațiile care decurg.
  • Cereri ale persoanelor vizate (DSR): scrie la privacy@apnoda.com: răspuns în 30 de zile (Art. 12(3) GDPR).
  • Notă publică de confidențialitate: apnoda.com/privacy.

Fiabilitate

  • Mediat prin /compute, cache-first; fiecare înregistrare poartă prospețime (as_of / lag_minutes / is_stale / source ∈ cache / live).
  • COMPUTE_UNREACHABLE (pană tranzitorie) = reîncearcă în ~30s; QUOTA_EXCEEDED = plafon zilnic atins, reîncearcă după miezul nopții UTC (căutările din cache nu sunt afectate); COMPUTE_UNAVAILABLE (serviciul nu este activat pe orchestrator, problemă de configurare apnoda) și COMPUTE_BAD_REQUEST (eroare de integrare) = permanente, raportează, reîncercarea nu ajută.
  • Backup la fiecare 6 ore, retenție 7 zile în Cloudflare R2 (criptat AES-256); exercițiu DR bilunar. Infrastructura este permanentă, niciodată „șterge-și-reconstruiește".

Transparență privind utilizarea platformei

Calea MCP rulează în modul standby Apify.

  • Memorie standby: 1024 MB (RSS de vârf măsurat ~64 MB, marjă confortabilă).

  • Profil de latență (warm), p50 / p95 (măsurat 2026-07-14 împotriva URL-ului standby de producție, N=30 per categorie, cache warm):

    • lookup_case (un singur dosar): 261 / 388 ms
    • search_cases (căutare după CUI, mai multe dosare): 406 / 582 ms
    • list_hearings (listă de ședințe): 276 / 784 ms
    • list_courts (gratuit, director static): 145 / 156 ms
    • pornire la rece (primul apel după inactivitate prelungită): ~5850 ms (provizionare container Apify + pornire Node; afectează doar primul apel)

    Un cache miss declanșează o preluare live de la portal.just.ro, care adaugă runda SOAP a sursei și este mai lentă și variabilă; acest profil este calea cu cache warm.

  • Calcul de platformă: absorbit în prețul pe eveniment, fără taxe ascunse. Facturarea standby este bazată pe timp: containerul rămâne activ ~5 minute între apeluri (coada de inactivitate), deci costul dominant este timpul de standby în timp real, nu apelul activ de sub o secundă.

Suport

  • Probleme sau întrebări: folosește formularul de contact din pagina Actorului din Apify Store.
  • Alți Actori: răsfoiește profilul apnoda pentru instrumente de date birocratice România/CEE.

Întrebări frecvente

Î: Datele sunt în timp real? R: Reflectă cache-ul nostru, re-extras la cerere din portal.just.ro (cu limită de cotă). Fiecare înregistrare poartă adnotarea de prospețime (as_of / lag_minutes / is_stale), iar agentul poate cere o reîmprospătare cu max_acceptable_lag_minutes.

Î: De ce nu pot căuta după numele unei persoane? R: Gardă de re-identificare GDPR, căutarea de firme este exclusiv după CUI, plus căutarea după numărul de dosar. Părțile persoane fizice apar pseudonimizate și în output.

Î: De ce nu apar dosarele penale? R: Datele privind infracțiuni pot fi prelucrate doar sub controlul unei autorități publice sau când o lege o permite expres (Art. 10 GDPR), iar pentru noi nu există o astfel de lege. Serviciul portal.just.ro nu poate filtra după materie, așa că dosarele penale sunt eliminate imediat după primire, fără a fi stocate. Câmpul is_penal rămâne în răspuns pentru compatibilitate și este mereu false.

Î: Pot obține numele reale ale persoanelor fizice? R: Nu, sunt pseudonimizate prin proiectare. Firmele, PFA/ÎI/IF și instituțiile publice apar cu numele lor reale.

Î: Pot folosi datele într-un produs comercial? R: Da, dosarele instanțelor sunt publice. Nu poți revinde datele brute ca un portal.just.ro concurent.

Î: Cum controlez cheltuielile? R: Plată pe eveniment, pe dosar returnat / listă de ședințe, fără abonament. Setezi limite per-rulaj și lunare în Apify Console. Dosarele NOT_FOUND și rezultatele goale nu se taxează.

Î: Care e diferența față de portalul public gratuit portal.just.ro? R: Căutare a litigiilor după CUI (nu doar după nume/număr), în masă, nativ-MCP, pseudonimizat prin proiectare, cu export API/CSV, într-un singur apel, apelabil de un agent.

Versiunea 1.0 · Actualizat iunie 2026


English

Romanian court case-files (portal.just.ro) as structured data for due diligence and AI agents. Search a company's litigation by CUI, look up a case by file number, or pull a court's cause-list for a date. MCP-native, pay-per-event, no subscription and no account. Private individuals' names are pseudonymized by design.

🤖 Agentic-payments ready: x402 (automatic for any pay-per-event Actor).

🎬 20-second demo:

What this Actor does

Looks up Romanian court cases through the public portal.just.ro service (portalquery.just.ro) and returns normalized JSON records: the court, the matter type (categorieCaz), the procedural stage, the parties (pseudonymized where they are private individuals), the hearings, and the appeals.

For each case you get:

  • Matter type: the case category (categorieCaz). Penal cases are never returned: we have no lawful basis to process criminal-offence data (GDPR Art. 10), so a penal case number looks up as NOT_FOUND and is_penal is always false.
  • Procedural stage: Fond / Apel / Recurs (first instance / appeal / second appeal) etc., with the readable label.
  • Parties, pseudonymized by design: legal entities, sole traders (PFA/ÎI/IF), and public institutions pass through unaltered (the daily national export names sole traders only in commercial-litigation and bankruptcy cases, and pseudonymizes them elsewhere); private individuals are replaced with a within-case-stable token (e.g. Parte-A), so role relationships survive without exposing names.
  • Hearings + appeals: panel, date, time, solution / summary, appeal type. Cause-lists (CautareSedinte) carry no party names.
  • DD-join provenance: on a CUI search, every case carries matched_company_cui / matched_company_denumire (the searched CUI + its resolved legal name), for cross-referencing with ANAF (build #2) and ONRC (build #6).

The underlying data is public and free on portal.just.ro, this Actor's difference is CUI-keyed search + MCP-native + pseudonymized by design + agent-callable, in one round-trip.

Why use this Actor

Three buyer profiles:

For AI-agent developers: MCP-native from day one. Connect via mcp.apify.com?tools=apnoda/portal-just and your agent has 6 tools: lookup_case, search_cases, list_hearings, list_courts, get_daily_export, get_upcoming_hearings_export. No subscriptions, no API keys, no infrastructure.

For developers building due-diligence tools: portal.just.ro is a SOAP service, searches by name, and caps at 1000 results per query. This Actor abstracts it, searches litigation by CUI (resolving CUI → legal name internally), drops penal cases, attaches join provenance, and pseudonymizes private-individual parties. Output is stable and typed.

For compliance, KYC/AML, and journalists: Vet a list of counterparties' court exposure by CUI in one call. Export to CSV. Pay cents per case returned. No account with a legal-intelligence SaaS required.

Try it now

  1. Paste case file numbers into the caseNumbers field (e.g. ["6597/2/2021"]) and/or company CUIs into companyCuis (e.g. ["14399840"]) and start the Actor.
  2. Export as CSV and open in Excel / Google Sheets.
  3. OR connect via MCP and ask Claude in natural language (see the next section).

You pay only per case returned, a case number with no record, or a company CUI with no litigation (NOT_FOUND / empty result), is not billed. Apify's $5 signup credit covers around 80 returned cases (at $0.06 each).

Quick comparison

CapabilityThis Actorportal.just.ro public portal (free)Paid legal-intelligence platforms
Litigation search by CUI (one call)✅ CUI → legal name❌ name-only, manualpartial (in UI)
Bulk (many companies/cases, one run)✅ up to 100❌ one at a timepartial
MCP / AI-agent access✅❌❌
Parties pseudonymized by design (GDPR)✅❌ (full names shown)varies
Programmatic API / CSV export✅❌limited
Pay-per-use, no account✅✅ (free, manual)❌ subscription
Pricing modelpay-per-eventfree (manual, 1-at-a-time)subscription

This Actor's niche: the litigation layer for due diligence, CUI-keyed, agent-callable, pseudonymized by design, over the courts' public data. The base data exists for free on portal.just.ro (name-searchable). The difference: we deliver the CUI-join, in bulk, via API or MCP, pseudonymized, pay-per-use only.

⚠️ This Actor does NOT provide directly:

  • Name-based / party search (GDPR re-identification guardrail, search is by CUI + by case number). Private individuals appear pseudonymized in the output too.
  • The real names of private individuals (they are tokenized by design; companies, PFA/ÎI/IF, and institutions appear under their names).
  • A litigation-risk score, the due-diligence bundle (build #6) composes that; this Actor emits the input fields.
  • Penal cases (there is no lawful basis for criminal-offence data, GDPR Art. 10).
  • ONRC data (administrators, share capital, beneficial owners), financial statements, or a visual team UI.

MCP-first usage

Connect Claude Desktop (or any MCP client) by adding this to your config:

{
"mcpServers": {
"romanian-courts": {
"url": "https://mcp.apify.com?tools=apnoda/portal-just"
}
}
}

Now ask Claude things like:

  • "Does the company with CUI 14399840 have any open court cases, and at what stage are they?"
  • "Look up case 6597/2/2021 and summarize its procedural stage and parties."
  • "List today's cause-list for Curtea de Apel București."

Claude picks the right tool, calls it, and answers. You pay per case returned / per cause-list / per daily export, not per query.

Available MCP tools (6)

ToolWhat it does
lookup_caseOne case by file number (e.g. "6597/2/2021"). Returns the court, matter type (categorieCaz), procedural stage, parties (pseudonymized where private individuals), hearings, and appeals.
search_casesA company's litigation by CUI, the DD leverage point. The orchestrator resolves CUI → legal name and searches cases by that name (no free-text name input). Optional court + period filters, plus max_results (default 50, max 1000) as a predictable per-call spend cap. Delivers the returned cases; result_count gives the full number found and truncated flags that more exist.
list_hearingsA court's cause-list (ședințe) for a given date. Panels, times, and the scheduled cases, no party names.
list_courtsThe directory of all 246 queryable courts, each as token + tier (Judecătorie, Tribunal, Curte de Apel, etc.). Free and static: no live call, never billed. Optional type filter. Use it to discover the exact court value that search_cases and list_hearings expect.
get_daily_exportA short-lived download link for one full day of activity across all 246 courts: every case whose latest update falls on that day, with parties and hearings (penal cases and cases between private individuals only excluded), as CSV (a zip, one row per company or institution party, the default) or gzipped JSONL (format). Private individuals are pseudonymized; sole traders (PFA/ÎI/IF) are named only in commercial-litigation and bankruptcy cases. The response carries courts_covered / courts_failed / courts_incomplete, so you can tell a quiet day from one where a court did not answer, without downloading the file. Requires contact_email, where we send erasure notices. A day not yet published returns NOT_FOUND and is never billed.
get_upcoming_hearings_exportA download link for the file of every hearing scheduled at all 246 courts in the next 14 days, with the parties of each case: see which companies are due in court, and when. Same rules as the daily export. Without date you get the newest file. The response carries days_complete and incomplete_days, the days whose court lists have not been fully checked yet. Requires contact_email. Billed like the daily export.

Apify usage (non-MCP)

Standard Actor run. Configure inputs, start, collect dataset results. The batch run is case-focused (one record per resolved case); list_hearings and list_courts stay MCP-surface tools. The daily national export has its own run, described below.

{
"companyCuis": ["14399840", "RO 38150891"],
"caseNumbers": ["6597/2/2021"],
"court": "Curtea de Apel BUCUREŞTI",
"periodStart": "2020-01-01",
"maxAcceptableLagMinutes": 1440
}

Output lands in a standard Apify dataset. Export as JSON, CSV, or XLSX. Three pre-built views: overview (default JSON), csv_export (flat, all scalar fields, plus the derived hearing scalars next_hearing_date, latest_hearing_date, and latest_solution so you can answer "is it moving? / next hearing? / last solution?" without parsing the hearings array), and mcp_compact (the go/no-go due-diligence fields).

Daily national export (Task + Schedule, no code)

One file a day with every case, across all 246 courts, whose latest update falls on that day, with parties and hearings. Penal cases are not included, and neither are cases where every party is a private individual: every case has at least one company or public institution among its parties. Sole traders (PFA/ÎI/IF) are natural persons, so they appear by name only in cases about their trade (commercial litigation and bankruptcy) and pseudonymized elsewhere. For integrators and legal departments who search it themselves by company name.

  1. Save the input below as a Task.
  2. Add a Schedule, for example every day at 08:00, time zone Europe/Bucharest (the file is ready by 07:00).
  3. Every morning you get the previous day's download link by email.
{
"dailyExport": true,
"exportFormat": "csv",
"contactEmail": "legal@company.ro",
"notifyEmail": "legal@company.ro"
}
  • CSV (default): a zip holding one row per company or institution party in the case (and per sole trader in commercial-litigation and bankruptcy cases), ;-separated UTF-8, so Romanian-locale Excel opens it directly. Every row carries the case, court, stage, the party and its role, the last hearing with its outcome, and the next hearing (date, time, panel). Private individuals get no rows of their own: every row says how many there are and in which roles (private_parties, private_party_roles, for example "Apelant 36"). Filter the party_name column for a company's name.
  • JSONL: with "exportFormat": "jsonl" you get one full case per line, with every hearing and appeal, for programmatic import.
  • The link is valid for 7 days from delivery (less only for a day older than 21 days: the link expires with the file, 28 days after it was built). Anyone holding it can download the file until it expires, so do not forward it.
  • The email is sent from your own Apify account, through the apify/send-mail Actor (a few cents of platform usage); apnoda never receives or stores this address. On Apify's free plan, mail can only go to your own account's address.

Terms for recipients of the export

By downloading the daily export or the upcoming-hearings file you accept these terms, in addition to portal.just.ro's own terms of reuse:

  • No re-identification. Private individuals appear as tokens (Parte-A). Do not try to find out who they are, for example by looking the case number up on portal.just.ro or matching it with other data, and do not publish or pass on the data in a way that lets others do so.
  • Keep it for at most 12 months. Delete the party data you took from the export no later than 12 months after downloading it, or sooner if you no longer need it.
  • Pass erasure on. When we notify you that a person's data must be erased (for example after a request under Art. 17 GDPR), delete it from your copies within 30 days.
  • A contact address is required. We send erasure notices by email, to the address in contactEmail (in a dailyExport run) or contact_email (in the MCP tool). Without it the export is not delivered. apnoda keeps the address, with the file, day and format downloaded, for 13 months from the download and uses it only for these notices.

Using it without missing a case

The files are a change feed, not a full snapshot. Day D's file holds every case whose latest update, at the moment the file is built (around 05:00 Romanian time the next morning), falls on day D. A case updated again the next morning, before the build, is only in the next day's file.

  • Load every day, in order. A case updated on several days appears in several files. Load the files in date order and upsert on court + case_number, keeping the row with the newest last_modified_at. A case missing from a file is not closed or deleted: it simply did not change that day.
  • Do not skip a day. A case updated only on a day you skipped is in no other file. Every day stays available for 28 days, so request a missed day with exportDate (or date over MCP) while it is still available.
  • Schedule the run after 07:00 Romanian time. With no date, a run asks for the previous day. If it starts before that day's file is ready it gets "not available", and the next day's run has already moved on to the next day, so the day stays uncovered unless you request it explicitly.
  • Check coverage. If courts_failed or courts_incomplete is above 0, that day is missing cases from those courts. Courts that did not answer are walked again automatically at 06:30 and 12:00 Romanian time (05:30 and 11:00 in winter) and the day is completed; request it again after 13:00 Romanian time to get the completed file.
  • A rebuilt day has fewer cases. If a file is built again later (for example after an outage), cases updated since are no longer in it; they are in the file for the day of their newer update. If you load every day, nothing is lost.
  • Without email: the link is in the run's OUTPUT, and the same input sent to the run-sync API returns that JSON directly.
  • A missed day can be requested explicitly with "exportDate": "2026-10-05", any time within the 28 days.
  • Billing: $1.00 per delivered day (daily_export_returned), plus the $0.01 start. A day that is not published yet is not billed: the run fails with a clear message and, if you set an address, you get an email.
  • The previous day's file is built overnight; schedule the Task for 08:00 or later.
  • Weekdays only: each run fetches the previous day, so schedule Tuesday to Saturday. A Monday-to-Friday schedule would fetch Sunday and miss Friday.
  • Company and institution names pass through unchanged, and sole traders' (PFA/ÎI/IF) in commercial-litigation and bankruptcy cases; private individuals appear as Parte-A, Parte-B. The portal does not publish the parties' CUI, so the file carries names, not CUIs.

Upcoming hearings (the next 14 days)

With "exportKind": "upcoming" you get, instead of the daily export, the file of every hearing scheduled at every court from the day it was built through the next 13 days, with the parties of each case. Search it for the companies you follow and see when and where they are due in court.

  • CSV: one row per hearing and company or institution party, with the court, case number, date, time, panel, matter, stage and subject. JSONL: one hearing per line, with all its parties.
  • Built every morning, usually ready by 12:00 Romanian time. Without a date you get the newest file (today's, or yesterday's until today's is ready); schedule the Task after 12:00 to receive the day's file.
  • Nearer days are the most complete. For each day we take every court's own published hearing list and fill in the parties from the case files. The lists for the next 2 days are checked again every night, to catch cases completed at the last moment. incomplete_days names the days not yet fully checked: for those, the file holds only the hearings already known from the case files.
  • Each file is complete on its own, not a change feed: no need to combine them, take the newest.
  • Billing: $1.50 per delivered file (upcoming_export_returned), plus the $0.01 start. A file that is not published is not billed. Files are kept 28 days.

What you get

Every record is one case (illustrative example, generic parties):

{
"case_number": "6597/2/2021",
"registered_at": "2021-03-15",
"court": "Curtea de Apel BUCUREŞTI",
"department": "Secția a VIII-a Contencios Administrativ și Fiscal",
"category": "Litigii cu profesioniștii",
"is_penal": false,
"stage": "Fond",
"subject": "pretenții",
"last_modified_at": "2024-11-18",
"party_count": 3,
"hearing_count": 1,
"appeal_count": 1,
"next_hearing_date": null,
"latest_hearing_date": "2024-10-18",
"latest_solution": "Amânat",
"parties": [
{ "name": "EXEMPLU CONSTRUCT S.R.L.", "role": "Reclamant", "is_pseudonymized": false },
{ "name": "PRIMĂRIA EXEMPLU", "role": "Pârât", "is_pseudonymized": false },
{ "name": "Parte-A", "role": "Intervenient", "is_pseudonymized": true }
],
"hearings": [
{ "panel": "C5", "date": "2024-10-18T00:00:00", "time": "09:00", "solution": "Amânat", "solution_summary": null, "ruling_date": null, "document_type": "Încheiere", "document_number": null, "document_date": "2024-10-18T00:00:00" }
],
"appeals": [
{ "appeal_type": "Apel", "declaring_party": "EXEMPLU CONSTRUCT S.R.L.", "declaring_party_is_pseudonymized": false, "declared_date": "2024-11-15" }
],
"matched_company_cui": "14399840",
"matched_company_denumire": "EXEMPLU CONSTRUCT S.R.L.",
"search_truncated": false,
"as_of": "2026-06-10T20:04:32.000Z",
"lag_minutes": 12,
"is_stale": false,
"source": "cache"
}

The freshness annotation (as_of / lag_minutes / is_stale / source) tracks when the result was last fetched from portal.just.ro, so your agent knows how fresh the data is. is_stale is always false by construction, a stale cache row is refetched, not served.

Real example: screening a counterparty portfolio

Call search_cases for a list of supplier CUIs and read the signals:

12 CUIs searched → 47 cases returned across 9 companies (3 had none)
21 cases stage: "Apel"/"Recurs" → under appeal
47 cases parties pseudonymized where private individuals (tokens, not names)

Cost of the whole screen: ~$2.83 (47 × $0.06 + $0.01 start). Time to return: a few seconds. Exactly the kind of check DD, KYC/AML, and investigative teams run before contracting.

Cost calculator

Pricing:

  • Actor start: $0.01 (once per run / standby cold boot)
  • Per case returned (case_returned): $0.06, the primary event
  • Per non-empty cause-list (hearing_list_returned): $0.04
  • Per daily export delivered (daily_export_returned): $1.00, one link for a full day, flat rather than per case
  • Per upcoming-hearings file delivered (upcoming_export_returned): $1.50, one link for 14 days, flat rather than per hearing
  • Case numbers with no record (NOT_FOUND), CUIs with no litigation, empty cause-lists, and export days not yet published are never billed.

Platform/compute costs are absorbed in the event price, no hidden charges.

Use caseCallRecordsCost
Look up a single caselookup_case1 case~$0.06
Screen one company's litigationsearch_cases~8 cases~$0.48
Screen a heavily-litigated companysearch_cases (default)50 cases (capped)~$3.00
Screen a 50-company portfoliosearch_cases ×50~300 cases~$18.00
Pull a court's cause-listlist_hearings1 list~$0.04
Discover the queryable courtslist_courts246 courts$0 (free)
Download a day of national court activityget_daily_export or a dailyExport run1 link (one day, all courts)~$1.00
Download the hearings of the next 14 daysget_upcoming_hearings_export or a run with "exportKind": "upcoming"1 link (14 days, all courts)~$1.50

search_cases caps at 50 cases per call by default (max_results), so one call never exceeds ~$3.00 even for a heavily-litigated company; raise max_results (max 1000) when you want them all, and result_count always shows the true case count.

Each run (or standby cold boot) also adds the one-time actor_start fee of $0.01.

Known limitations

Being honest up front:

  • No name-based / party search. Input is CUI-only (companies) + case number: a GDPR re-identification guardrail.
  • Private-individual parties are pseudonymized. You get within-case-stable tokens (e.g. Parte-A), not names. Companies, PFA/ÎI/IF, and public institutions pass through under their names.
  • The court filter uses the official court list. Pass a court name ("Curtea de Apel București", diacritics optional) or its portal.just.ro token; an unrecognized court returns INVALID_INPUT (no quota drawn). Leave it blank to search all courts.
  • Free-text fields are not NER-scrubbed. obiect / soluție may incidentally contain a name the (party-field-focused) pseudonymizer doesn't catch: an accepted, documented residual; the structured party fields are pseudonymized.
  • 50 cases delivered per CUI search by default (max_results, a predictable spend cap; raise it up to 1000, the source ceiling). truncated flags that more cases exist than were returned, and result_count gives the full number found. The batch/dataset run delivers everything up to the source ceiling and signals it via search_truncated (the "Search capped" column).
  • Cause-lists carry no party names (CautareSedinte returns panels + scheduled cases).
  • Cached freshness, on demand. Results come from our cache, refetched on demand (quota-bounded); every record carries the freshness annotation, and max_acceptable_lag_minutes can tighten (never loosen) the window. Each billable MCP tool also returns the remaining live-fetch quota (quota: {count, cap, remaining}) so an agent can self-throttle before QUOTA_EXCEEDED (which resets at 00:00 UTC).
  • No risk score, no ONRC, no financial statements.
  • portal.just.ro (portalquery.just.ro): the Romanian courts' public service; programmatic access is officially documented by the Ministry of Justice. Court case metadata is public by statute.
  • Content rights: © Ministerul Justiției și instanțele de judecată din România (the Ministry of Justice and the courts of Romania). Reproduction is authorised with attribution of the source, within the limits of copyright law and of data-protection law (the portal's terms). The courts own the databases and their contents.

This Actor packages the courts' public data for machine consumption and AI agents, pseudonymizing private-individual parties.

Privacy & personal data

apnoda-daas is the data controller; Apify, Cloudflare, and Hetzner are Article 28 processors. The privacy controls are architectural, not per-source improvisation:

  • Private individuals are pseudonymized (a within-case-stable token); legal entities, PFA/ÎI/IF, and public institutions pass through unaltered.
  • CUI-only input: no name search (the re-identification guardrail).
  • CNP and contact fields are stripped.
  • categorieCaz is a legal fact, phrased neutrally: never "fraud"/"suspect"/"illegal".
  • Penal cases are neither stored nor returned (GDPR Art. 10): they are dropped as soon as portal.just.ro returns them, before anything is archived.
  • DPIA on file, ROPA maintained (Art. 30), documented retention, per-record erasure in the R2 raw archive (the erasure unit is the case, keyed on the case number).
  • Permitted use (EU AI Act): the output is public case metadata, not a score and not a decision. Do not use it as an input to an automated creditworthiness assessment or credit score for natural persons (including PFA/ÎI/IF sole traders), nor for automated employment or essential-services eligibility decisions. Those are high-risk uses (Annex III) and they make you the provider or deployer of that system, with the obligations that follow.
  • Data Subject Requests (DSR): write to privacy@apnoda.com: answered within 30 days (Art. 12(3) GDPR).
  • Public privacy notice: apnoda.com/privacy.

Reliability

  • /compute-mediated, cache-first; every record carries freshness (as_of / lag_minutes / is_stale / source ∈ cache / live).
  • COMPUTE_UNREACHABLE (transient outage) = retry in ~30s; QUOTA_EXCEEDED = daily cap hit, retry after UTC midnight (cached lookups are unaffected); COMPUTE_UNAVAILABLE (service not enabled on the orchestrator, an apnoda-side config issue) and COMPUTE_BAD_REQUEST (integration error) = permanent, report it, retrying won't help.
  • Backups every 6 hours, 7-day retention in Cloudflare R2 (AES-256 encrypted); bi-monthly DR drill. The infrastructure is permanent, never "delete-and-rebuild".

Platform-usage transparency

The MCP path runs in Apify standby mode.

  • Standby memory: 1024 MB (measured peak RSS ~64 MB, comfortable headroom).

  • Warm latency profile, p50 / p95 (measured 2026-07-14 against the production standby URL, N=30 per category, warm cache hit):

    • lookup_case (single case): 261 / 388 ms
    • search_cases (multi-case CUI query): 406 / 582 ms
    • list_hearings (cause-list): 276 / 784 ms
    • list_courts (free, static directory): 145 / 156 ms
    • cold-spawn (first call after extended idle): ~5850 ms (Apify container provisioning + Node start; affects only the first call)

    A cache miss triggers a live portal.just.ro fetch, which adds the source's SOAP round-trip and is slower and variable; this profile is the warm cache-hit path.

  • Platform compute: absorbed in the per-event price, no hidden charges. Standby billing is time-based: the container stays warm for a ~5 minute idle-tail between calls, so the dominant cost is wall-clock standby time, not the sub-second active call.

Support

  • Issues or questions: use the Apify Store contact form on this Actor's page.
  • Other Actors: browse the apnoda profile for Romanian/CEE bureaucratic-data tools.

FAQ

Q: Is the data real-time? A: It reflects our cache, refetched on demand from portal.just.ro (quota-bounded). Every record carries the freshness annotation (as_of / lag_minutes / is_stale), and your agent can request a refresh with max_acceptable_lag_minutes.

Q: Why can't I search by a person's name? A: A GDPR re-identification guardrail, company search is CUI-only, plus case-number lookup. Private-individual parties appear pseudonymized in the output too.

Q: Why are penal cases missing? A: Criminal-offence data may only be processed under the control of official authority or where a law expressly allows it (GDPR Art. 10), and no such law covers us. portal.just.ro cannot filter by matter type, so penal cases are dropped as soon as they arrive, without being stored. The is_penal field stays in the response for compatibility and is always false.

Q: Can I get the real names of private individuals? A: No, they are pseudonymized by design. Companies, PFA/ÎI/IF, and public institutions appear under their real names.

Q: Can I use the data in a commercial product? A: Yes, court records are public. You can't resell the raw data as a competing portal.just.ro API.

Q: How do I control spend? A: Pay-per-event, per case returned / per cause-list, no subscription. Set per-run and monthly spend limits in Apify Console. NOT_FOUND cases and empty results are not billed.

Q: How is this different from the free portal.just.ro portal? A: Litigation search by CUI (not just name/number), in bulk, MCP-native, pseudonymized by design, with API/CSV export, in one call, callable by an agent.

Version 1.0 · Updated June 2026