Referința API — registrul firmelor din România (ONRC)

Fiecare endpoint, cu exemple pe care le poți rula direct din pagină. Trimite cheia în header-ul X-API-Key. Fără cheie ai 5 interogări pe zi pentru fiecare adresă IP; o cheie gratuită de la /start îți dă 25; ziua se resetează la 00:00 UTC. Fiecare răspuns 401, 402 sau 429 conține get_a_key. GET /usage îți arată cât ți-a mai rămas (nu se numără ca interogare), iar fiecare răspuns la o interogare are headerele RateLimit-Limit, RateLimit-Remaining și RateLimit-Reset (secunde până la resetare).

Gratuit în perioada de lansare. Toate endpoint-urile și filtrele sunt gratuite azi, în limita zilnică. Când pornesc planurile plătite, istoricul financiar complet 2008–2025, indicatorii, scorul de sănătate și percentilele, filtrele după cifră de afaceri, angajați și TVA, exportul CSV și listele mai lungi de 25 de rânduri trec în Pro (9 €/lună ≈ 47,96 lei, 500 de interogări pe zi); Business (29 €/lună ≈ 154,53 lei) are 5.000 de interogări pe zi. Free păstrează profilul firmei, starea și riscul, datele ANAF, cifrele ultimului an și listele de până la 25 de rânduri. Vezi toate planurile. Echivalentul în lei este orientativ, la cursul BNR din 20.10.2026 (1 € = 5,3285 lei); plata se face în euro.

Exemple pentru date firme după CUI, verificare ONRC și ANAF și export după CAEN →

Loturi, potrivire și răspunsuri compacte

POST /lookup_companies primește până la 100 de CUI-uri, iar POST /match_companies până la 500 de înregistrări (nume, județ, domeniu sau CUI); fiecare răspunde cu un rând pentru fiecare intrare, în aceeași ordine. Fiecare rând se numără ca o interogare: un lot mai mare decât ce ți-a rămas azi primește răspuns pentru rândurile care încap, iar restul sunt marcate not_processed (nu se numără; partial: true, processed, remaining: trimite-le din nou după resetare); fără nimic rămas, lotul e refuzat (429). Rândurile greșite nu se numără (câmpul metering arată ce s-a numărat). GET /find_company_by_domain găsește firma din spatele unui site. Adaugă fields=companyName,cui,county,risk sau compact=true la o listă ca să primești doar acele câmpuri. /record/{cui} este o fișă datată, cu surse, de tipărit sau salvat ca PDF (?format=json pentru date); fiecare rând cu o firmă trimite la ea prin url (null pentru persoane fizice autorizate și alte persoane fizice), iar o listă de firme are appUrl, aceeași listă în aplicație. Uneltele MCP cu aceleași nume se numără la fel.

Site-uri și domenii

GET /extract_contacts?website= citește până la max_pages pagini dintr-un site (1-20, implicit 5) și găsește emailuri, telefoane și profiluri sociale. GET /enrich_company?cui= întoarce fișa din registru plus contactele de pe site-ul firmei, fiecare cu un grad de încredere și o sursă (din cache; refresh=true citește site-ul acum). GET /lookup_domain?domain= dă WHOIS, DNS și auditul SPF/DMARC. Fiecare apel este o interogare. Se citesc doar site-uri publice: localhost, un IP privat sau un nume intern primesc 400, la fel un site care nu poate fi citit; acestea nu se numără. Uneltele MCP cu aceleași nume răspund la fel.

Fără cod: un workflow n8n

Descarcă workflow-ul n8n (îl imporți în n8n cu Import from file): citește un CSV sau un Google Sheet, trimite rândurile cu CUI la POST /lookup_companies și pe celelalte (nume, județ, site) la POST /match_companies, cu cheia ta în header-ul X-API-Key (credențial Header Auth), și scrie lista înapoi cu CUI-ul, starea, riscul, telefonul, mărimea fiecărei firme și încrederea potrivirii. Fiecare rând se numără ca o interogare, ca mai sus. Pașii, în română și engleză, sunt în README-ul lui (docs/integrations/n8n).

Skill pentru Claude

Skill-ul Leadgen pentru Claude (format Agent Skills; sursa pe GitHub) îi spune lui Claude ce unealtă să folosească pentru o listă de firme, o verificare înainte de o afacere, potrivirea unei liste de clienți sau monitorizare, și cum să răspundă: citează data snapshot-ului, spune ce nu s-a verificat, numește sursa datelor. claude.ai / Claude Desktop: Settings → Capabilities → Skills → încarcă arhiva zip. Claude Code: dezarhiveaz-o în ~/.claude/skills/. Merge împreună cu serverul MCP de mai sus.

Exemple de cod

curl -H "X-API-Key: lg_your_key" "https://leadgen.adrianhomelab.com/lookup_business?query=DEDEMAN&max_results=3"

Conectează un client MCP

Rulează o dată într-un terminal (adaugă --scope user ca să-l ai în toate proiectele):

claude mcp add --transport http leadgen https://leadgen-mcp.adrianhomelab.com/mcp
# cu o cheie:
claude mcp add --transport http leadgen https://leadgen-mcp.adrianhomelab.com/mcp --header "Authorization: Bearer lg_your_key"

Sau împarte-l cu echipa în fișierul .mcp.json al proiectului (linia "type": "http" e obligatorie):

{
  "mcpServers": {
    "leadgen": {
      "type": "http",
      "url": "https://leadgen-mcp.adrianhomelab.com/mcp",
      "headers": { "Authorization": "Bearer lg_your_key" }
    }
  }
}

Fără cheie, omite header-ul: 5 interogări pe zi pentru fiecare adresă IP. Cu o cheie gratuită de la leadgen.adrianhomelab.com/start (25 de interogări/zi în loc de 5), înlocuiește lg_your_key cu cheia ta.

Licență și atribuire

Datele despre firme sunt date publice deschise, nu ale noastre: Oficiul Național al Registrului Comerțului (ONRC) și Ministerul Finanțelor le publică pe data.gov.ro sub licența CC BY 4.0 (situațiile financiare 2008–2010 sub licența OGL-ROU-1.0), iar plătitorul de TVA, e-Factura și inactivitatea vin din serviciul public ANAF pentru contribuabili. Când afișezi sau livrezi aceste date în produsul tău, menționează sursa cu acest rând:

Sursa: ONRC și Ministerul Finanțelor (data.gov.ro, CC BY 4.0; situațiile financiare 2008–2010 sub OGL-ROU-1.0) și ANAF, prin Leadgen (leadgen.adrianhomelab.com)

Fiecare răspuns cu firme conține același rând în câmpul attribution (source numește stratul: onrc, mfp, anaf), iar fiecare export CSV se încheie cu el. Licențele cer menționarea sursei; nu interzic folosirea comercială. Păstrează adresa de la finalul rândului: îi spune celui care îți citește copia de unde provine.

Ce nu acoperă Leadgen

O primă privire, nu o verificare completă: Buletinul procedurilor de insolvență (BPI), datoriile la ANAF, dosarele din instanță, asociații, SEAP și Monitorul Oficial nu sunt încărcate, iar fiecare bloc de risc o spune în notChecked. Sursele și prospețimea fiecăreia: acoperire.

Jurnal de modificări și modificări incompatibile

Fiecare modificare apare cu data ei în jurnalul de modificări. O modificare incompatibilă e anunțată cu cel puțin 14 zile înainte, acolo și pe email, fiecărui deținător de cheie care a apelat endpoint-ul afectat în ultimele 30 de zile.

Semnalează ce lipsește sau o înregistrare greșită

Folosește pagina de feedback, POST /feedback cu {"message", "kind", "cui", "email"} (tipuri: gap, wrong_record, bug, idea, other) sau unealta MCP report_issue. Niciuna nu se numără ca interogare. O înregistrare greșită din registru se corectează la sursă (ONRC) și ajunge la noi cu următorul snapshot.

Endpoint-uri

Referința interactivă de mai jos (Swagger UI) este în engleză, ca schema OpenAPI; numele parametrilor și câmpurilor sunt cele din API.

  • POST /api/subscribe — Pornește un abonament Pro sau Business
  • GET /api/billing/intent (u) — Ce plan numește un link semnat de upgrade, pentru pagina de plată
  • GET /api/billing/company/{cui} (cui) — Datele de facturare ale unei firme din registrul nostru (denumire, adresă, statut TVA), ca să precompleteze plata, și dacă se poate abona
  • POST /api/billing/portal — Deschide portalul abonamentului pentru cheia din X-API-Key
  • POST /api/billing/portal-link — Trimite pe email un link de unică folosință către portalul abonamentului
  • GET /api/fx/eur-ron — Cursul BNR al euro în lei și data lui, pentru afișarea prețurilor și în lei
  • GET /health — Disponibilitatea serviciului, versiunea registrului ONRC servită și vechimea ei
  • GET /lookup_business (query, max_results, county, fields, compact) — Caută o firmă după nume sau CUI
  • GET /lookup_director (name, max_results, prefix, fields, compact) — Firmele unui administrator sau reprezentant legal, după nume
  • GET /lookup_by_category (category, topic, county, max_results, legal_form, active_only, has_website, min_revenue, max_revenue, min_employees, max_employees, vat_payer, main_activity_only, exclude_anaf_inactive, sort, format, lang, fields, compact) — Listă de firme după un domeniu predefinit sau după codul CAEN
  • POST /lookup_companies — Mai multe CUI-uri într-un singur apel
  • GET /lookup_companies (cuis, fields, compact) — Mai multe CUI-uri într-un singur apel, în query string
  • POST /match_companies — Potrivește până la 500 de înregistrări cu firmele din registru
  • GET /find_company_by_domain (domain, fields, compact) — Firma din spatele unui domeniu web
  • GET /extract_contacts (website, max_pages) — Emailuri, telefoane și profiluri sociale găsite pe un site
  • GET /enrich_company (cui, website, max_pages, refresh) — Profilul complet al unei firme
  • GET /lookup_domain (domain, include_dns, include_security) — WHOIS, înregistrări DNS și un audit SPF/DMARC pentru un domeniu
  • GET /financials/{cui} (cui) — Toate situațiile financiare anuale ale unei firme (din 2008)
  • GET /financials/{cui}/ratios (cui) — Indicatori financiari calculați pentru o firmă: marje, solvabilitate, scor de sănătate, percentile
  • GET /topics — Domeniile predefinite și seturile de coduri CAEN din spatele lor
  • GET /usage — Planul tău, limita zilnică și cât ți-a rămas azi
  • POST /register — Emite o cheie API gratuită pentru o adresă de email
  • POST /delete-data — Șterge-mi datele
  • POST /recover — Ai pierdut cheia? O trimitem la adresa pentru care a fost emisă
  • POST /rotate-key — Cheia mea a fost expusă: înlocuiește-o
  • POST /alerts/email — Pornește rezumatele pe email pentru firmele urmărite cu această cheie (cu confirmare)
  • GET /alerts/email — Unde merg alertele acestei chei și dacă adresa e confirmată
  • DELETE /alerts/email (lang) — Oprește alertele pe email ale acestei chei sau anulează o cerere neconfirmată
  • GET /watches — Firmele și codurile CAEN urmărite cu cheia ta, fiecare cu ce s-a schimbat de la ultima verificare
  • POST /watches — Urmărește firme și/sau coduri CAEN într-un singur apel
  • DELETE /watches (kind, target, county) — Oprește urmărirea unei firme sau a unui cod CAEN
  • POST /watches/seen — Marchează toate schimbările ca văzute
  • GET /record/{cui} (cui, format, snapshot) — Fișa datată a unei firme, cu surse, de tipărit sau salvat
  • POST /feedback — Semnalează ce lipsește sau ce e greșit