Romanian Courts Case Lookup (portal.just.ro)
Pricing
from $60.00 / 1,000 case returned (primary)s
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 file number, or pull a court's cause-list for a date. Penal-matter flag, procedural stage, MCP-native, pay-per-event. Private individuals pseudonymized by design.
Pricing
from $60.00 / 1,000 case returned (primary)s
Rating
0.0
(0)
Developer
Apnoda
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Căutare Dosare Instanțe România (portal.just.ro)
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) + un indicator de materie penală, stadiul procesual, părțile (pseudonimizate acolo unde sunt persoane fizice), ședințele și căile de atac.
Pentru fiecare dosar primești:
- Materia + indicatorul penal: tipul cauzei (
categorieCaz) șiis_penal(adevărat când cauza este una penală, în sensul Codului penal). Un fapt juridic, formulat neutru, niciodată „fraudă"/„suspect". - Stadiul procesual:
Fond/Apel/Recursetc., cu eticheta lizibilă. - Părțile, pseudonimizate prin proiectare: persoanele juridice, PFA/ÎI/IF și instituțiile publice trec nealterate; 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 + indicator penal + 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 4 unelte: lookup_case, search_cases, list_hearings, list_courts. 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ă), derivă indicatorul is_penal, 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
- Lipește numere de dosar în câmpul
caseNumbers(ex.:["6597/2/2021"]) și/sau CUI-uri de firme încompanyCuis(ex.:["14399840"]) și pornește Actorul. - Exportă ca CSV și deschide în Excel / Google Sheets.
- 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ă
| Capabilitate | Acest Actor | Portal public portal.just.ro (gratuit) | Platforme plătite de informații juridice |
|---|---|---|---|
| Căutare litigii după CUI (un apel) | ✅ CUI → denumire | ❌ doar după nume, manual | parțial (în UI) |
| În masă (multe firme/dosare, o rulare) | ✅ până la 100 | ❌ unul câte unul | parțial |
| Acces MCP / agenți AI | ✅ | ❌ | ❌ |
Indicator de materie penală (is_penal) | ✅ | ❌ (materie brută) | ✅ în UI |
| 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-event | gratuit (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 +
is_penal. - 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 sunt vreunele cauze penale?"
- "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, nu pe interogare.
Unelte MCP disponibile (4)
| Unealtă | Ce face |
|---|---|
lookup_case | Un dosar după numărul de înregistrare (ex.: „6597/2/2021"). Returnează instanța, materia (categorieCaz) + indicatorul penal, stadiul procesual, părțile (pseudonimizate unde sunt persoane fizice), ședințele și căile de atac. |
search_cases | Litigiile 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_hearings | Lista 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_courts | Directorul 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. |
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.
{"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").
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)9 dosare is_penal: true → cauze penale, semnalează pentru analiză juridică21 dosare stage: "Apel"/"Recurs" → aflate în căi de atac47 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 - Numere de dosar inexistente (NOT_FOUND), CUI-uri fără litigii și liste de ședințe goale, niciodată taxate.
Costurile de platformă/calcul sunt absorbite în prețul evenimentului, fără taxe ascunse.
| Caz de utilizare | Apel | Rezultate | Cost |
|---|---|---|---|
| Cauți un singur dosar | lookup_case | 1 dosar | ~$0.06 |
| Triezi litigiile unei firme | search_cases | ~8 dosare | ~$0.48 |
| Triezi o firmă cu multe litigii | search_cases (implicit) | 50 dosare (plafonat) | ~$3.00 |
| Triezi un portofoliu de 50 firme | search_cases ×50 | ~300 dosare | ~$18.00 |
| Extragi lista de ședințe a unei instanțe | list_hearings | 1 listă | ~$0.04 |
| Descoperi instanțele interogabile | list_courts | 246 de instanțe | $0 (gratuit) |
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țiepot 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).truncatedsemnalează că există mai multe dosare decât cele returnate, iarresult_countdă numărul total găsit. Rulajul batch (dataset) livrează tot, până la plafonul sursei, și semnalează plafonul sursei prinsearch_truncated(coloana „Search capped"). - Listele de ședințe nu conțin nume de părți (
CautareSedintereturnează 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_minutespoate 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 deQUOTA_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. Metadatele dosarelor sunt publice prin statut.
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.
is_penal/categorieCazsunt fapte juridice, formulate neutru: niciodată „fraudă"/„suspect"/„ilegal".- 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).
- 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) șiCOMPUTE_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 mssearch_cases(căutare după CUI, mai multe dosare): 406 / 582 mslist_hearings(listă de ședințe): 276 / 784 mslist_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.
Î: Ce este indicatorul is_penal?
R: Un fapt juridic, că materia dosarului este una penală (în sensul Codului penal). NU este o acuzație la adresa vreunei părți; este surfacelat pentru ponderarea în due-diligence.
Î: 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-result, 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) + a penal-matter flag, the procedural stage, the parties (pseudonymized where they are private individuals), the hearings, and the appeals.
For each case you get:
- Matter type + penal flag: the case category (
categorieCaz) andis_penal(true when the matter is a penal one, i.e. tried under the Penal Code). A legal fact, phrased neutrally, never "fraud"/"suspect". - 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; 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 + penal flag + 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 4 tools: lookup_case, search_cases, list_hearings, list_courts. 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), derives the is_penal flag, 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
- Paste case file numbers into the
caseNumbersfield (e.g.["6597/2/2021"]) and/or company CUIs intocompanyCuis(e.g.["14399840"]) and start the Actor. - Export as CSV and open in Excel / Google Sheets.
- 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
| Capability | This Actor | portal.just.ro public portal (free) | Paid legal-intelligence platforms |
|---|---|---|---|
| Litigation search by CUI (one call) | ✅ CUI → legal name | ❌ name-only, manual | partial (in UI) |
| Bulk (many companies/cases, one run) | ✅ up to 100 | ❌ one at a time | partial |
| MCP / AI-agent access | ✅ | ❌ | ❌ |
Penal-matter flag (is_penal) | ✅ | ❌ (raw matter type) | ✅ in UI |
| Parties pseudonymized by design (GDPR) | ✅ | ❌ (full names shown) | varies |
| Programmatic API / CSV export | ✅ | ❌ | limited |
| Pay-per-use, no account | ✅ | ✅ (free, manual) | ❌ subscription |
| Pricing model | pay-per-event | free (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 +
is_penal. - 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 are any of them penal matters?"
- "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, not per query.
Available MCP tools (4)
| Tool | What it does |
|---|---|
lookup_case | One case by file number (e.g. "6597/2/2021"). Returns the court, matter type (categorieCaz) + penal flag, procedural stage, parties (pseudonymized where private individuals), hearings, and appeals. |
search_cases | A 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_hearings | A court's cause-list (ședințe) for a given date. Panels, times, and the scheduled cases, no party names. |
list_courts | The 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. |
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.
{"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).
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)9 cases is_penal: true → penal matters, flag for legal review21 cases stage: "Apel"/"Recurs" → under appeal47 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 - Case numbers with no record (NOT_FOUND), CUIs with no litigation, and empty cause-lists are never billed.
Platform/compute costs are absorbed in the event price, no hidden charges.
| Use case | Call | Records | Cost |
|---|---|---|---|
| Look up a single case | lookup_case | 1 case | ~$0.06 |
| Screen one company's litigation | search_cases | ~8 cases | ~$0.48 |
| Screen a heavily-litigated company | search_cases (default) | 50 cases (capped) | ~$3.00 |
| Screen a 50-company portfolio | search_cases ×50 | ~300 cases | ~$18.00 |
| Pull a court's cause-list | list_hearings | 1 list | ~$0.04 |
| Discover the queryable courts | list_courts | 246 courts | $0 (free) |
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țiemay 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).truncatedflags that more cases exist than were returned, andresult_countgives the full number found. The batch/dataset run delivers everything up to the source ceiling and signals it viasearch_truncated(the "Search capped" column). - Cause-lists carry no party names (
CautareSedintereturns 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_minutescan 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 beforeQUOTA_EXCEEDED(which resets at 00:00 UTC). - No risk score, no ONRC, no financial statements.
Data source and legal
- portal.just.ro (portalquery.just.ro): the Romanian courts' public service. Court case metadata is public by statute.
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.
is_penal/categorieCazare legal facts, phrased neutrally: never "fraud"/"suspect"/"illegal".- 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).
- 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) andCOMPUTE_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 mssearch_cases(multi-case CUI query): 406 / 582 mslist_hearings(cause-list): 276 / 784 mslist_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: What is the is_penal flag?
A: A legal fact, that the matter is a penal one (tried under the Penal Code). It is NOT an accusation about any party; it is surfaced for due-diligence weighting.
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