Company Enrichment by Domain (Official Registers)
Pricing
from $25.00 / 1,000 company enricheds
Company Enrichment by Domain (Official Registers)
Enrich company domains with source-backed business data and verify the legal entity against official registers: company number, status, industry, size, officers, VAT, LEI and parent company, plus DNS and tech stack. Every fact names its source; unclear matches stay unmatched.
Pricing
from $25.00 / 1,000 company enricheds
Rating
0.0
(0)
Developer
Benjamin Zsigri
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Domain in. Verified company record out.
Turn company domains into structured B2B data, with official-register verification where a confident match is available.
- Input: domains, a CRM export or an Apify dataset
- Output: legal entity, register status, industry, size, officers, VAT/LEI, parent company, contacts, DNS and tech stack
- The difference: every fact carries its source, and uncertain matches stay uncertain instead of being guessed.
What a row contains depends on the evidence. Register fields are filled only when an official register, the LEI index or a VIES-checked VAT number confirms the company, and size, revenue and officers only where that register publishes them. A domain without a confident match still gets its website, DNS and technology profile, with registry_verified: false.
Price: $0.025 per enriched domain, plus $0.010 when the company is matched in a register: 1,000 domains cost between $25 and $35. Websites that cannot be read are free.
What makes the rows trustworthy
- The website tells us who the company is, the register tells us the facts. The crawler reads the legal notice first (Impressum, mentions légales, company information, site info) and takes the company number, VAT number and legal name the company publishes about itself. That evidence is looked up in the national register.
- No guessed numbers. Headcount and revenue only appear when a register publishes them (for example the INSEE headcount band and the filed accounts in France, the statistical register in the Czech Republic). Nothing is estimated from LinkedIn or from the size of the website.
- A name alone is never enough. A register hit found by name is accepted only when the register address (postcode and town) also appears on the company's website and exactly one candidate fits. Otherwise the row stays unmatched.
- Confidence on every match.
registry_match_confidenceishighwhen an identifier from the company's own website led to the record and the record agrees with the site, andmediumwhen name and address agreed. - Every value names its source.
legal_name_source,address_source,employees_source,registry_matched_byanddata_sourcessay where each fact came from, andregistry_lookuptraces every register query. - Officers with name and role only. Dates of birth, private addresses and personal ID numbers that some registers publish are never copied (see Personal data below).
Quick start
- Paste your domains into Domains or websites, one per line, or set Import domains from a dataset to a dataset ID (a CRM export or a Google Maps Scraper run).
- Optional: add your free Companies House API key so UK companies are read through the official REST API instead of the public service pages.
- Start the run. Each domain becomes one row; the Register data view lines up the register fields, and the switches under Sources turn off what you do not need.
Typical uses
- Fill CRM company records with firmographic data (legal name, company number, industry, size, address) from a domain list.
- Qualify inbound leads and B2B sign-ups by register status, age, size and parent company.
- Segment accounts by email provider, security gateway, DMARC policy, CMS and ecommerce platform.
- Run KYB pre-checks: does the company exist, is it active, is its VAT number valid, who are its officers.
Coverage
| Country | Source | Found by | Officers | Size and financials |
|---|---|---|---|---|
| France | Recherche d'entreprises (INSEE Sirene, RNE) | SIREN, SIRET or VAT on the website; or name and address | Yes (natural persons) | INSEE headcount band; revenue and net income when filed publicly |
| United Kingdom | Companies House (public service pages, or the REST API with your key) | Company number on the website; or name and address | Active directors and secretaries | Not published |
| Czech Republic | ARES (core record, statistical register, commercial register) | IČO or DIČ on the website; or name and address | Current statutory body | CZSO headcount band |
| Finland | YTJ open data (PRH) | Y-tunnus or VAT on the website; or name and address | Not in the open data | Not in the open data |
| Poland | KRS extract and the Ministry of Finance VAT list | KRS, NIP or REGON on the website | Not available (masked in the extract) | Not available |
| Switzerland | UID register (Federal Statistical Office) | UID (CHE number) on the website; or name and address | Not available | Not available |
| Norway | Enhetsregisteret (Brønnøysund) | Organisation number on the website; or name and address | CEO and board | Exact employee count |
| Germany, Netherlands, Belgium, Austria and others | GLEIF LEI index | Commercial register number (HRB, KvK, ...) or legal name with a matching address | Not available | Not available |
| All EU countries | VIES VAT check | VAT number on the website |
LEI records (with direct and ultimate parent) and VIES checks work for every country. Companies outside these registers still get the website, DNS and technology part of the profile.
Output
One row per domain. The overview columns:
| Column | Example |
|---|---|
domain | lumiere-conseil.fr |
legal_name, legal_form | LUMIERE CONSEIL, SAS |
registry_verified | true |
registry_id, registry_id_type, registry_status | 912345675, FR_SIREN, active |
registry_match_confidence, registry_matched_by | high, company_number_on_website |
country, city, postal_code, street | FR, PARIS, 75002, 12 RUE DE LA PAIX |
founded_year | 2022 |
industry, industry_code, industry_section | Activities of head offices; management consultancy activities, 70.22Z, Professional, scientific and technical activities |
employees_range, employees_count, employees_source | 10-19, null, INSEE tranche d'effectif |
revenue, net_income, financial_year, currency | 1250000, 85000, 2024, EUR |
vat_id, vat_valid | FR65912345675, true |
lei, parent_company, ultimate_parent_company | from GLEIF when the company has an LEI |
key_person_name, key_person_role | Claire Martin, Président |
email_provider, email_security_gateway, dmarc_policy | Google Workspace, null, reject |
cms, ecommerce_platform, analytics, marketing_tools | WordPress, null, Google Analytics, null |
primary_email, primary_phone, linkedin | from the website |
The full row adds the complete register record (registry), the LEI record (lei_record), the VIES answer (vat_validation), all key people with their source (key_people), the DNS footprint (email_and_dns), every detected technology with its evidence (technologies), contacts, the identifiers found on the website, a per-register lookup trace (registry_lookup) and the crawled pages. The example above is a fictional company.
Input
- Domains or websites:
acme.com,https://www.acme.com/about, either works. Duplicates are merged. - Dataset import: point to any dataset with a website or domain field (CRM export, Google Maps Scraper). A company name or country in the item helps the register match, and the item's identifying fields are copied to
source_item. Items without a website are skipped; a Google Maps listing link is never taken for the website. - Switches for each source (registers, LEI, VIES, DNS, technologies, contacts), so you only wait for what you use.
- Companies House API key (optional): with your own free key, UK lookups use the official REST API.
Where your list can come from
- Google Maps Scraper: set
datasetIdto its run's dataset. This Actor never searches Google Maps itself; it works on the dataset you bring. - A CSV file or spreadsheet: paste the website or domain column into
websites, one per line. - Your CRM: export the accounts and paste the website or domain column, or push the rows into an Apify dataset with the API and set
datasetIdto it.datasetUrlFieldnames the column when it is not one of the usual names. - Make, n8n, Zapier or Clay: start the Actor through the Apify API (Apify also offers ready-made modules for some of these tools), pass
websitesin the input and read the run's dataset as the output.
Pricing
Pay per event: you pay for results, not for compute time.
| Event | Price | Charged |
|---|---|---|
company-enriched | $0.025 | once per domain whose website answered |
registry-match | $0.010 | once per domain identified in an official register, in the LEI index, or by a VIES-confirmed VAT number whose registered name matches the website |
- 1,000 enriched domains: $25
- 1,000 enriched and register-verified domains: $35
- A real list lands between the two, because only the matched domains add the $0.010.
Domains whose website cannot be read (blocked by robots.txt, offline, not a company website) produce a free row with the reason. When your maximum cost per run is reached, the run stops cleanly; register data that could not be paid for is left out of the row and marked registry_limited_by_cost_limit. The Pricing tab always shows the current prices.
Access rules
- Every website and every register API is read under its own robots.txt. If a robots.txt cannot be read, that site or register is skipped for the run, not worked around. Login pages, CAPTCHAs and other access controls are never bypassed.
- Each register is queried below its published rate limit. A register that keeps failing is switched off for the rest of the run, so one provider's outage never stops the run.
- Emails hidden by Cloudflare protection are flagged, not decoded.
Personal data
Officers come from public registers with name and role only. Dates of birth, private and correspondence addresses, personal ID numbers and bank account lists that some registers publish are never copied. Website contacts are limited to what the company publishes about itself. You are responsible for having a lawful basis (for example legitimate interest in B2B prospecting) and for honouring objections when you process the people in these rows.
Known limits
- Websites that render their content only with JavaScript expose few links to the crawler; their register match depends on the legal notice being reachable as plain HTML.
- Some companies publish their legal notice on a separate domain (for example a
.legaldomain); such pages are not followed. - Norway: at the time of writing, the register API's robots.txt could not be read from our crawler, so Norwegian register lookups are skipped while that lasts. LEI and website data still work.
- Germany has no free register API; German companies are verified through their LEI when the Impressum shows the HRB number, and through VIES, which confirms the VAT number but does not disclose the name.
- Poland's free VAT list allows few lookups per day; the Actor caps its use per run and prefers a KRS number found on the website.
Feedback
Found a domain where the match or a value is wrong? Open an issue on the Issues tab with the domain. Real examples are the fastest way to improve the matching.
Need it done for you?
Want this connected to your CRM or workflow, or adapted to your market? Tribloc, the team behind this Actor, builds these setups. Get in touch at tribloc.co.uk.