Romanian company data for agents: 4.2M ONRC firms, ANAF status, financials 2008–2025. Free key.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
A whole-firm profile in one call: the ONRC registry record plus the contacts discovered on that firm's website, each labelled with a confidence and a source. Prefer this over lookup_business followed by extract_contacts when you want everything about one company. cui is its tax code; website overrides the registered one; max_pages bounds the crawl; refresh=true crawls now instead of answering from the cache.
Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted.
true crawls now even if a cached result exists (default false: answer from the cache when there is one).
Optional website override (domain or URL). When omitted, the firm's registered website is used (an error if none is on file).
Maximum number of pages to crawl (1-20, default 5).
A whole-firm profile in one call: the ONRC registry record plus the contacts discovered on that firm's website, each labelled with a confidence and a source. Prefer this over lookup_business followed by extract_contacts when you want everything about one company. cui is its tax code; website overrides the registered one; max_pages bounds the crawl; refresh=true crawls now instead of answering from the cache.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted. |
| refresh | boolean | true crawls now even if a cached result exists (default false: answer from the cache when there is one). |
| website | any | Optional website override (domain or URL). When omitted, the firm's registered website is used (an error if none is on file). |
| max_pages | integer | Maximum number of pages to crawl (1-20, default 5). |
{
"type": "object",
"title": "enrich_companyArguments",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"title": "Cui",
"description": "Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted."
},
"refresh": {
"type": "boolean",
"title": "Refresh",
"default": false,
"description": "true crawls now even if a cached result exists (default false: answer from the cache when there is one)."
},
"website": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Website",
"default": null,
"description": "Optional website override (domain or URL). When omitted, the firm's registered website is used (an error if none is on file)."
},
"max_pages": {
"type": "integer",
"title": "Max Pages",
"default": 5,
"description": "Maximum number of pages to crawl (1-20, default 5)."
}
}
}Crawl a company website and extract emails, phone numbers and social profiles. Accepts a bare domain or a full URL; max_pages (1-20, default 5) bounds the crawl.
| Argument | Type | Description |
|---|---|---|
| website* | string | The website to crawl: a bare domain ('example.com') or a full URL ('https://example.com'). |
| max_pages | integer | Maximum number of pages to crawl (1-20, default 5). |
{
"type": "object",
"title": "extract_contactsArguments",
"required": [
"website"
],
"properties": {
"website": {
"type": "string",
"title": "Website",
"description": "The website to crawl: a bare domain ('example.com') or a full URL ('https://example.com')."
},
"max_pages": {
"type": "integer",
"title": "Max Pages",
"default": 5,
"description": "Maximum number of pages to crawl (1-20, default 5)."
}
}
}Find the Romanian firm behind a website domain (dedeman.ro). Uses the registry's website field, else reads the site's home and legal/contact pages for the CUI or registration number it shows (matchedOn: registry_website, site_cui). Without one, it says so and offers name candidates from the page title or the domain name, each with a confidence (at most 0.7, never a match). One lookup.
| Argument | Type | Description |
|---|---|---|
| domain* | string | The website's domain ('dedeman.ro'); a URL or a www. host is reduced to it. Public domains only. |
| fields | any | Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned. |
| compact | boolean | Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url). |
{
"type": "object",
"title": "find_company_by_domainArguments",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"title": "Domain",
"description": "The website's domain ('dedeman.ro'); a URL or a www. host is reduced to it. Public domains only."
},
"fields": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fields",
"default": null,
"description": "Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned."
},
"compact": {
"type": "boolean",
"title": "Compact",
"default": false,
"description": "Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url)."
}
}
}Show your own allowance: plan, daily limit, lookups used today, how many remain, when it resets (00:00 UTC) and any credit balance. Free and never counted as a lookup. Limits: 30 anonymous MCP calls a day, 50 with a free API key from https://leadgen.adrianhomelab.com/start (an email address, no payment).
No arguments.
{
"type": "object",
"title": "get_usageArguments",
"properties": {}
}Look up a Romanian company by name or CUI (tax code) in the official ONRC registry of 4.2M firms. Diacritic-insensitive ('paval' finds 'PAVAL'); a CUI matches exactly. The first call for a named Romanian company. Ranked with a score: live firms first (exact name, then words), closed ones after; county lifts. For 'firms that do X in Y', use lookup_by_category (an empty result may carry a hint naming it).
| Argument | Type | Description |
|---|---|---|
| query* | string | Company name or CUI (tax ID) to search for. Names are diacritic-insensitive ('paval' finds PAVĂL); a CUI ('2816464', 'RO2816464') matches exactly. |
| county | any | Optional county hint (diacritic-insensitive): firms registered there rank higher. Not a filter. |
| fields | any | Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned. |
| compact | boolean | Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url). |
| max_results | integer | Maximum number of companies to return (1-100, default 10). |
{
"type": "object",
"title": "lookup_businessArguments",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"title": "Query",
"description": "Company name or CUI (tax ID) to search for. Names are diacritic-insensitive ('paval' finds PAVĂL); a CUI ('2816464', 'RO2816464') matches exactly."
},
"county": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "County",
"default": null,
"description": "Optional county hint (diacritic-insensitive): firms registered there rank higher. Not a filter."
},
"fields": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fields",
"default": null,
"description": "Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned."
},
"compact": {
"type": "boolean",
"title": "Compact",
"default": false,
"description": "Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url)."
},
"max_results": {
"type": "integer",
"title": "Max Results",
"default": 10,
"description": "Maximum number of companies to return (1-100, default 10)."
}
}
}Find companies by what they do, not by name: a curated topic ('software', 'retail'), plain words ('dentists', a CAEN class title; see matched) or CAEN codes ('4321,4322'; 6201 also finds Rev.3 6210). Narrow by county; qualify by revenue, headcount, VAT, main activity. active_only (default) drops dead and ANAF-inactive firms.
| Argument | Type | Description |
|---|---|---|
| sort | string | Order of the results: 'newest' registrations first (default), 'revenue' (latest filing's turnover, biggest first) or 'employees' (headcount, biggest first); firms without a filing come last. |
| topic* | string | What the firms do: a curated topic ('software', 'retail'), plain words for a trade ('dentists', 'stomatologie'), a CAEN class title in Romanian or English, or CAEN codes ('6201' or '4321,4322'). Case-, space- and diacritic-insensitive. A number that names another activity in each revision takes a suffix: '4781r3' (Rev.3) or '4781r2' (Rev.2). |
| county | any | Optional county to narrow to (diacritic-insensitive: 'bucuresti', 'cluj'; a county town such as 'Cluj-Napoca' or a Bucharest sector is read as its county); omit for nationwide. An unknown county is an error (unknown_county) with suggestions, not 0 firms. |
| fields | any | Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned. |
| compact | boolean |
Look up many Romanian companies by CUI in one call (up to 100): one result per input, in input order, each with found true/false and the company record. Each row is one lookup; rows past today's allowance come back not_processed (partial: true, remaining: rows to resend after the reset). fields or compact trims each record.
| Argument | Type | Description |
|---|---|---|
| cuis* | any | Up to 100 CUIs, as a list or one comma-separated string ('RO', spaces and leading zeros accepted, as in lookup_business). |
| fields | any | Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned. |
| compact | boolean | Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url). |
{
"type": "object",
"title": "lookup_companiesArguments",
"required": [
"cuis"
],
"properties": {
"cuis": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"title": "Cuis",
"description": "Up to 100 CUIs, as a list or one comma-separated string ('RO', spaces and leading zeros accepted, as in lookup_business)."
},
"fields": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fields",
"default": null,
"description": "Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned."
},
"compact": {
"type": "boolean",
"title": "Compact",
"default": false,
"description": "Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url)."
}
}
}Find Romanian companies by the name of a director or legal representative (ONRC). Diacritic-insensitive. Whole words: 'pop maria' finds POP MARIA, not POPA MARIANA; prefix=true matches prefixes. The registry has no personal ID, so one name can be several people: homonyms and byCounty say so. Use this when you know a person rather than a firm.
| Argument | Type | Description |
|---|---|---|
| name* | string | Director / representative name to search for (e.g. 'Ion Popescu'); diacritic-insensitive, each word a whole word of the name. |
| fields | any | Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned. |
| prefix | boolean | true matches each word as a prefix ('pop' also finds POPA, POPESCU); default false (whole words). |
| compact | boolean | Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url). |
| max_results | integer | Maximum number of companies to return (1-100, default 10). |
{
"type": "object",
"title": "lookup_directorArguments",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Director / representative name to search for (e.g. 'Ion Popescu'); diacritic-insensitive, each word a whole word of the name."
},
"fields": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fields",
"default": null,
"description": "Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned."
},
"prefix": {
"type": "boolean",
"title": "Prefix",
"default": false,
"description": "true matches each word as a prefix ('pop' also finds POPA, POPESCU); default false (whole words)."
},
"compact": {
"type": "boolean",
"title": "Compact",
"default": false,
"description": "Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url)."
},
"max_results": {
"type": "integer",
"title": "Max Results",
"default": 10,
"description": "Maximum number of companies to return (1-100, default 10)."
}
}
}WHOIS plus DNS records (A, MX, NS, TXT) and an SPF/DMARC email-security audit for a domain. Use it to profile a company's web estate or check its email posture. include_dns and include_security toggle the two halves.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain name to look up (e.g. 'example.com'); a URL is reduced to its host. |
| include_dns | boolean | Include DNS records (A, AAAA, MX, NS, TXT, SOA); default true. |
| include_security | boolean | Include the SPF/DMARC email-security check; default true. |
{
"type": "object",
"title": "lookup_domainArguments",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"title": "Domain",
"description": "Domain name to look up (e.g. 'example.com'); a URL is reduced to its host."
},
"include_dns": {
"type": "boolean",
"title": "Include Dns",
"default": true,
"description": "Include DNS records (A, AAAA, MX, NS, TXT, SOA); default true."
},
"include_security": {
"type": "boolean",
"title": "Include Security",
"default": true,
"description": "Include the SPF/DMARC email-security check; default true."
}
}
}Financial analysis of a Romanian company: multi-year revenue trend (YoY, 3/5/10-year CAGR), margins, headcount, solvency and liquidity ratios, a 0–100 health score with its rule-by-rule breakdown, red flags, and peer percentiles within the same CAEN activity and county. Verdict: 'growing', 'stable' or 'distressed'. Use lookup_financials for the raw figures.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted. |
{
"type": "object",
"title": "lookup_financial_ratiosArguments",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"title": "Cui",
"description": "Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted."
}
}
}Annual financial statements for a Romanian company from Ministry of Finance filings, every fiscal year on record since 2008: revenue, profit, headcount and balance-sheet lines in RON with each year's ratios (growth, margins, equity ratio, liquidity), plus a summary (3/5/10-year CAGR, loss years, health score). Resolve the firm with lookup_business first if you only have a name.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted. |
{
"type": "object",
"title": "lookup_financialsArguments",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"title": "Cui",
"description": "Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted."
}
}
}Match a list of up to 500 records (name, optional county, domain or CUI) to Romanian firms: each row gets match {cui, companyName, confidence, matchedOn} and the record, or no_match with up to 3 candidates. A valid CUI wins (confidence 1.0). Each row is one lookup; rows past today's allowance come back not_processed (partial: true, remaining: rows to resend after the reset).
| Argument | Type | Description |
|---|---|---|
| rows* | array | Up to 500 records, each {name, county, domain, cui, ref} (any of them; ref is your own id, echoed back), or a bare string (a CUI, a domain or a name). |
| fields | any | Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned. |
| compact | boolean | Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url). |
{
"type": "object",
"$defs": {
"MatchRow": {
"type": "object",
"title": "MatchRow",
"properties": {
"cui": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cui",
"default": null,
"description": "Optional CUI (tax code); a valid one wins (confidence 1.0)."
},
"ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ref",
"default": null,
"description": "Your own id for the row, echoed back unchanged."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"default": null,
"description": "Company name (diacritic-insensitive; legal-form words ignored)."
},
"county": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "County",
"default": null,
"description": "Optional county hint (diacritic-insensitive): firms there rank higher."
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Domain",
"default": null,
"description": "Optional website domain ('dedeman.ro'), matched to the registry's website field."
}
},
"description": "One record to match: any of name, county, domain, cui; ref (your own id) is echoed back."
}
},
"title": "match_companiesArguments",
"required": [
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/$defs/MatchRow"
},
{
"type": "string"
}
]
},
"title": "Rows",
"description": "Up to 500 records, each {name, county, domain, cui, ref} (any of them; ref is your own id, echoed back), or a bare string (a CUI, a domain or a name)."
},
"fields": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fields",
"default": null,
"description": "Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned."
},
"compact": {
"type": "boolean",
"title": "Compact",
"default": false,
"description": "Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url)."
}
}
}Collect everything the watch tools have found: call it to drain the changeset for every watch owned by your API key, most severe first. Company watches return an 'updated' entry with the changed fields and risk; CAEN and county watches return the 'new' firms registered since the last poll (200 a poll, the rest next).
No arguments.
{
"type": "object",
"title": "poll_watchlistArguments",
"properties": {}
}Report to the person who runs Leadgen what is missing or wrong: a missing field, firm or source (kind 'gap'), a wrong company record ('wrong_record', pass its cui), a bug, an idea. Free, never counted as a lookup. contact is optional (an address for a reply); nothing is mailed to it automatically. Registry records are corrected at the source (ONRC) and arrive with the next snapshot.
| Argument | Type | Description |
|---|---|---|
| cui | any | Optional CUI of the firm the report is about (for 'wrong_record'). |
| kind | string | One of 'gap' (a missing field, firm or source; the default), 'wrong_record' (pass its cui), 'bug', 'idea', 'other'. |
| contact | any | Optional email address for a reply; nothing is mailed to it automatically. |
| message* | string | The report, in plain words: what is missing or wrong. |
{
"type": "object",
"title": "report_issueArguments",
"required": [
"message"
],
"properties": {
"cui": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cui",
"default": null,
"description": "Optional CUI of the firm the report is about (for 'wrong_record')."
},
"kind": {
"type": "string",
"title": "Kind",
"default": "gap",
"description": "One of 'gap' (a missing field, firm or source; the default), 'wrong_record' (pass its cui), 'bug', 'idea', 'other'."
},
"contact": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Contact",
"default": null,
"description": "Optional email address for a reply; nothing is mailed to it automatically."
},
"message": {
"type": "string",
"title": "Message",
"description": "The report, in plain words: what is missing or wrong."
}
}
}Stop watching a company (cui) or a CAEN activity code (code, plus the county it was watched in, if any), on your API key: the watch and its baseline are removed. Unwatching something you do not watch changes nothing (removed: 0). poll_watchlist lists your active watches.
| Argument | Type | Description |
|---|---|---|
| cui | any | CUI of a watched firm (e.g. '2816464'); give this or code. |
| code | any | A watched CAEN activity code (e.g. '6210'); give this or cui. |
| county | any | With code: the county the code was watched in (diacritic-insensitive); omit for a nationwide watch. |
{
"type": "object",
"title": "unwatchArguments",
"properties": {
"cui": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cui",
"default": null,
"description": "CUI of a watched firm (e.g. '2816464'); give this or code."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Code",
"default": null,
"description": "A watched CAEN activity code (e.g. '6210'); give this or cui."
},
"county": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "County",
"default": null,
"description": "With code: the county the code was watched in (diacritic-insensitive); omit for a nationwide watch."
}
}
}Watch a CAEN activity code, optionally scoped to one county, for newly registered firms. A registration-date cutoff is the baseline: only firms registered after it are reported, and poll_watchlist slides the cutoff forward so each new firm surfaces once. A retired CAEN Rev.2 code (6201) also watches its Rev.3 successor (6210), with a warning.
| Argument | Type | Description |
|---|---|---|
| code* | string | CAEN activity code to watch (e.g. '6210'); a retired Rev.2 code also watches its Rev.3 successor. |
| county | any | Optional county name to scope the watch to (diacritic-insensitive); omit to watch nationwide. |
{
"type": "object",
"title": "watch_caenArguments",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"title": "Code",
"description": "CAEN activity code to watch (e.g. '6210'); a retired Rev.2 code also watches its Rev.3 successor."
},
"county": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "County",
"default": null,
"description": "Optional county name to scope the watch to (diacritic-insensitive); omit to watch nationwide."
}
}
}Register a company (by CUI) to monitor. Stores a fingerprint of its current registry record as the baseline; poll_watchlist then reports changes between monthly ONRC snapshots - a new director, a new CAEN activity, an address or status change - and when ANAF declares it fiscally inactive or its VAT status flips.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian tax identification number (CUI) of the firm to watch, e.g. '2816464'. Watching a firm you already watch changes nothing. |
{
"type": "object",
"title": "watch_companyArguments",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"title": "Cui",
"description": "Romanian tax identification number (CUI) of the firm to watch, e.g. '2816464'. Watching a firm you already watch changes nothing."
}
}
}| Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url). |
| vat_payer | any | Optional: true keeps VAT-registered firms only, false only non-VAT payers (ANAF data). Omit for both. |
| legal_form | any | Optional legal form(s) to keep, comma-separated, case-insensitive: 'SRL', 'SA', 'PFA', 'II', or 'SRL,SA' (companies, no sole traders). Default: any form. |
| active_only | boolean | Default true: drop firms that are not a lead (struck off, dissolving, in liquidation, insolvent or bankrupt, activity suspended, or ANAF fiscally inactive). false returns every firm. |
| has_website | boolean | true keeps only firms with a website on file in the registry (default false). |
| max_results | integer | Maximum number of companies to return (1-100, default 10). |
| max_revenue | any | Optional maximum net turnover in RON on the latest filing. |
| min_revenue | any | Optional minimum net turnover in RON on the latest filing (FY2025, else FY2024). Firms without a filing never match a band. |
| max_employees | any | Optional maximum average headcount on the latest filing. |
| min_employees | any | Optional minimum average headcount on the latest filing. |
| main_activity_only | boolean | Default false: a firm matches when the code is ANY of its authorised activities (ONRC lists a dozen per firm, most never practised). true keeps only firms whose DECLARED main activity is one of the codes (ANAF main CAEN, else the CAEN on the latest filing): fewer, more relevant firms. The Leadgen app's lists use true by default. |
{
"type": "object",
"title": "lookup_by_categoryArguments",
"required": [
"topic"
],
"properties": {
"sort": {
"enum": [
"newest",
"revenue",
"employees"
],
"type": "string",
"title": "Sort",
"default": "newest",
"description": "Order of the results: 'newest' registrations first (default), 'revenue' (latest filing's turnover, biggest first) or 'employees' (headcount, biggest first); firms without a filing come last."
},
"topic": {
"type": "string",
"title": "Topic",
"description": "What the firms do: a curated topic ('software', 'retail'), plain words for a trade ('dentists', 'stomatologie'), a CAEN class title in Romanian or English, or CAEN codes ('6201' or '4321,4322'). Case-, space- and diacritic-insensitive. A number that names another activity in each revision takes a suffix: '4781r3' (Rev.3) or '4781r2' (Rev.2)."
},
"county": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "County",
"default": null,
"description": "Optional county to narrow to (diacritic-insensitive: 'bucuresti', 'cluj'; a county town such as 'Cluj-Napoca' or a Bucharest sector is read as its county); omit for nationwide. An unknown county is an error (unknown_county) with suggestions, not 0 firms."
},
"fields": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fields",
"default": null,
"description": "Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned."
},
"compact": {
"type": "boolean",
"title": "Compact",
"default": false,
"description": "Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url)."
},
"vat_payer": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Vat Payer",
"default": null,
"description": "Optional: true keeps VAT-registered firms only, false only non-VAT payers (ANAF data). Omit for both."
},
"legal_form": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Form",
"default": null,
"description": "Optional legal form(s) to keep, comma-separated, case-insensitive: 'SRL', 'SA', 'PFA', 'II', or 'SRL,SA' (companies, no sole traders). Default: any form."
},
"active_only": {
"type": "boolean",
"title": "Active Only",
"default": true,
"description": "Default true: drop firms that are not a lead (struck off, dissolving, in liquidation, insolvent or bankrupt, activity suspended, or ANAF fiscally inactive). false returns every firm."
},
"has_website": {
"type": "boolean",
"title": "Has Website",
"default": false,
"description": "true keeps only firms with a website on file in the registry (default false)."
},
"max_results": {
"type": "integer",
"title": "Max Results",
"default": 10,
"description": "Maximum number of companies to return (1-100, default 10)."
},
"max_revenue": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Revenue",
"default": null,
"description": "Optional maximum net turnover in RON on the latest filing."
},
"min_revenue": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Min Revenue",
"default": null,
"description": "Optional minimum net turnover in RON on the latest filing (FY2025, else FY2024). Firms without a filing never match a band."
},
"max_employees": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Employees",
"default": null,
"description": "Optional maximum average headcount on the latest filing."
},
"min_employees": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Min Employees",
"default": null,
"description": "Optional minimum average headcount on the latest filing."
},
"main_activity_only": {
"type": "boolean",
"title": "Main Activity Only",
"default": false,
"description": "Default false: a firm matches when the code is ANY of its authorised activities (ONRC lists a dozen per firm, most never practised). true keeps only firms whose DECLARED main activity is one of the codes (ANAF main CAEN, else the CAEN on the latest filing): fewer, more relevant firms. The Leadgen app's lists use true by default."
}
}
}