Legal Entity Resolver Domain to Company Number VAT Clay
Pricing
from $5.95 / 1,000 domain resolveds
Legal Entity Resolver Domain to Company Number VAT Clay
Company domain in, the registered legal entity out: legal name, company number, jurisdiction, status, LEI and VAT number. Only returns a match when the legal names are identical after normalization, so an unresolved domain comes back null instead of a confidently wrong company number.
Pricing
from $5.95 / 1,000 domain resolveds
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 minutes ago
Last modified
Categories
Share
๐๏ธ What can Legal Entity Resolver do?
Give it a company domain and it returns the registered legal entity behind it: legal name, company number, jurisdiction, status, LEI and VAT number. One flat row per domain, 24 fields, ready for Clay or a CRM.
| ๐ฆ What you get | โ๏ธ Features and integrations |
|---|---|
| ๐๏ธ Legal name and company number, as the register spells them ๐ Jurisdiction and status, active or dissolved, straight from the register ๐ LEI, the 20 character global identifier ๐งพ VAT number, validated live against EU VIES ๐งพ A full audit trail of what was rejected and why | ๐ Three registers queried: UK Companies House, GLEIF and SEC EDGAR ๐ฏ Exact name matching only, so a null is trustworthy ๐งฉ Domain keyed, no need to know the legal name first โก Cached 90 days for a resolved company, 7 days for a null โฌ๏ธ Export to JSON, CSV, Excel, HTML or XML |
Built for anyone who has a domain and needs the company behind it: KYB and onboarding, contracting and invoicing, sanctions screening, or just telling apart five similarly named companies before a deal.
โ ๏ธ A null is the product, not a gap. Register search endpoints are fuzzy and they always return something. On our five company test sample, taking the top search result would have returned a confidently wrong company number on three of them, plus a UK subsidiary in place of its US parent and a holding group in place of the operating bank. This actor only accepts a match when the legal names are identical after normalization. That is why about 6 domains in 10 resolve instead of 10 in 10, and why the 6 are worth acting on.
๐ซ This is not a company database and not a credit or risk product. It does not score companies, rate them, or tell you whether to trade with them. It answers one question: which registered legal entity sits behind this domain. Nothing here is an assessment of a company's health, size or standing.
๐ฏ Why use Legal Entity Resolver?
| If you need to | Read these fields |
|---|---|
| Verify who you are actually contracting with | legal_name, company_number, jurisdiction |
| Check the company still legally exists | entity_status, entity_type |
| Screen against sanctions or counterparty lists | lei, legal_name, company_number |
| Invoice a European customer correctly | vat_number, vat_valid, vat_registered_name |
| Prove the match was not a guess | match_method, match_confidence, rejected_candidates |
| Tell "not found" from "not looked for" | registers_queried, register_source, fetch_status |
๐ Why exact matching beats a best guess
Every register search endpoint here is fuzzy. Ask Companies House for Stripe, LLC and it returns 4,061 results with an unrelated company at the top. Ask GLEIF for the same string and it returns 189,994 records, with the right one ranked first purely by luck of relevance scoring.
Measured on the build sample, taking each register's top hit:
| Query | Top hit returned | Correct? |
|---|---|---|
Stripe, LLC | AALG, LLC. | No, unrelated |
Swish Data Corporation | AZTEC DATA CORPORATION LTD | No, unrelated |
AACON General Contractors | AACONNECTED LTD | No, unrelated |
GitLab Inc. | GITLAB UK LIMITED | No, the UK subsidiary |
Monzo Bank Limited | MONZO BANK HOLDING GROUP LIMITED | No, the parent |
Five for five wrong. This actor scans the whole first page of results and accepts only an identical normalized name, so all five are rejected and recorded in rejected_candidates where you can see them.
๐ What data can Legal Entity Resolver extract?
24 fields per domain. The ones buyers actually use:
| Field | What it holds |
|---|---|
legal_name | The registered legal name, spelled as the register spells it |
company_number | The register's identifier, for example 09446231 |
company_number_scheme | GB-COH, LEI-REGISTEREDAS, US-SEC-CIK or US-STATE-FILE |
jurisdiction | ISO-2 country code |
entity_status | active, dissolved, closed, as the register words it |
entity_type | The register's own type string, for example ltd |
lei | 20 character Legal Entity Identifier |
lei_status | Whether that LEI is current |
vat_number | The VAT number the company publishes on its own pages |
vat_valid | EU VIES confirmation, true, false or null |
vat_registered_name | The name VIES holds, as a cross-check on legal_name |
register_source | Which register matched |
registers_queried | Which registers were asked |
match_method | exact_normalized, input_hint_exact, fuzzy_scored or none |
match_confidence | 100 for exact, 40 to 90 for fuzzy, null for no match |
legal_name_candidates | Every name read off the site, with its source |
rejected_candidates | Every near miss thrown away, and why |
pages_attempted, pages_reached | How much of the site was readable |
fetch_status, fetch_error | What happened |
โ ๏ธ
legal_namepopulated withcompany_numbernull is a real answer, not a failure. It means the legal name was read off the company's own site but no register we can query for free holds it. Small US corporations are the common case: most have no LEI and are registered at state level, which has no free national search.fetch_statuswill readno_register_match. Throwing that row away loses the half that worked.
๐ How to find the registered company behind a domain
- Open the Input tab and put a single domain in
domain, for examplemonzo.com. Protocol and path are stripped. - Leave
match_strictnessonexact. This is the setting that makes a null trustworthy. - Leave
validate_vaton to check any VAT number found against EU VIES. - Run it. One flat row comes back per domain.
- Read
fetch_statusfirst, thencompany_number. Iffetch_statusisno_register_match,legal_nameis still populated and still useful.
๐งฉ How to use it in Clay
Add it as an enrichment on a company table, map your domain column to domain, and pull legal_name, company_number, jurisdiction and entity_status into columns. Every field is flat snake_case with null rather than a missing key, so no unnesting is needed.
If you already have the legal name and only want the register record, put it in legal_name_hint. That skips the page fetch entirely and goes straight to the registers.
๐ How to narrow it to one country
Set jurisdiction_hint to an ISO-2 code. GB asks Companies House and GLEIF. US asks GLEIF and SEC EDGAR. Anything else asks GLEIF. It cuts latency, and registers_queried records which registers were actually asked so a null is never ambiguous.
๐ฐ How much does it cost to resolve a domain?
| Plan | Per domain |
|---|---|
| Free | $0.007 |
| Bronze | $0.00665 |
| Silver | $0.0063 |
| Gold | $0.00595 |
๐ณ Every domain is billed, including the ones that come back null. The two hop lookup runs either way. Charging only for matches would push this actor toward guessing, which is the exact failure it is built to avoid. The one thing never billed is a domain that could not be reached at all.
โจ๏ธ Input
Set everything on the Input tab. Only domain is required.
| Field | Default | What it does |
|---|---|---|
domain | required | One company domain, for example monzo.com |
legal_name_hint | empty | Skips the page fetch and queries the registers with this name |
jurisdiction_hint | empty | ISO-2 code. Narrows which registers are asked |
match_strictness | exact | exact or fuzzy. See the warning below |
validate_vat | true | Checks any VAT number found against EU VIES |
skipCache | false | true forces a fresh lookup |
โ ๏ธ
fuzzywill hand you the wrong company on most domains. It exists because some buyers deliberately want the near miss. It capsmatch_confidenceat 90 and writes a warning intorejected_candidatesnaming what exact matching would have returned instead, which on our sample was usually nothing. Leave it onexact.
๐ค Output
Export to JSON, CSV, Excel, HTML or XML, or pull it straight from the API. One row per domain.
{"domain": "monzo.com","legal_name": "MONZO BANK LIMITED","company_number": "09446231","company_number_scheme": "GB-COH","jurisdiction": "GB","entity_status": "active","entity_type": "ltd","lei": "213800PLUYXGZ8LU7T61","lei_status": "ISSUED","vat_number": null,"vat_valid": null,"vat_registered_name": null,"register_source": "companies_house,gleif","registers_queried": "companies_house,gleif,sec_edgar","match_method": "exact_normalized","match_confidence": 100,"legal_name_source": "legal_page","rejected_candidates": "[{\"name\":\"MONZO BANK HOLDING GROUP LIMITED\",\"register\":\"gleif\",\"reason\":\"name mismatch under exact normalized matching\"}]","pages_attempted": 9,"pages_reached": 4,"fetch_status": "ok","fetch_error": null,"run_date": "2026-08-10T09:12:04.118Z"}
๐ก Tips
- Read
fetch_statusbefore you readcompany_number. It tells you whether a null means "not in the register" or "we could not look". rejected_candidatesis worth reading on any row that surprises you. It shows the answer a less careful tool would have given.- A company's own legal pages name other companies. Its subsidiaries, its parent, its credit reference agencies. Those are found, matched and then rejected as a different company, and they appear in
rejected_candidates. - Batch through Clay one domain per row. The cache holds a resolved company for 90 days and a null for only 7, so re-running a batch is cheap and newly registered companies are picked up quickly.
- German, Austrian and Dutch companies almost always have a VAT number. US companies never do, because there is no equivalent.
โ ๏ธ Known limits
- About 6 domains in 10 resolve to a register record. Measured on real companies spanning US enterprise, UK regulated, mid-market and a small contractor.
- The US SEC register is currently unreachable.
sec.govreturns HTTP 403 to automated requests from our infrastructure, measured at 7 of 7 runs on 2026-08-10. SEC EDGAR is only ever a corroborator here and can never be the sole source of a company number, so US companies still resolve through GLEIF when they hold an LEI. What it means for you: a US company with no LEI that would have been corroborated by an SEC filing comes backnullinstead. It is still queried on every row, andregisters_queriedandfetch_errorrecord the outcome. - Coverage is UK, US and LEI holders. Companies House covers all UK registered companies. GLEIF covers any entity worldwide holding an LEI, which skews to financial counterparties and larger firms. There is no free national register API for most countries, and no US federal company register at all.
- A subsidiary is not the parent and we will not swap one for the other. Both were returned by register searches on the build sample and both were rejected.
rejected_candidatesshows what was set aside. company_number_schemeofLEI-REGISTEREDASis not always a company registration number. It is the identifier the entity's home register holds, and for a regulated firm that can be the financial regulator's reference. Measured: GLEIF returns730427for one UK bank, which is its FCA firm reference, not its Companies House number. When Companies House answers,GB-COHis used and that ambiguity does not arise.- VAT numbers only come from what the company publishes. There is no way to search for a company's VAT number by name. The EU service can only validate a number you already have, so we read it from terms, legal and Impressum pages.
- UK lookups are rate limited to 600 requests every five minutes. On a large batch some rows come back with
fetch_status: register_errorrather than a match. Re-run those rows; the cache skips the ones that already resolved. - Some sites block a plain fetch. Requests carry full browser headers and
robots.txtis honored. When a site blocks us anyway,pages_reachedis lower thanpages_attemptedand the row says so. fetch_status: partialmeans it resolved and something that could have improved the answer failed. Readfetch_error. A row can beokand still carry afetch_errorwhen the thing that failed could not have changed the answer.
โ FAQ
Why does it return null so often? Because the alternative is worse. Every register search is fuzzy and always returns something, so a tool that always answers is a tool that is often wrong. See the table above: five for five wrong on top hits.
Can I use it if I already know the legal name?
Yes. Put it in legal_name_hint and it skips straight to the registers.
Does it return company directors or owners? No, and it never will. This actor names companies, not people. There are no directors, no officers and no persons of significant control anywhere in the output.
Which registers does it query?
UK Companies House, GLEIF and SEC EDGAR. registers_queried tells you which were asked on each row and register_source tells you which answered.
Is the data licensed for commercial use? Yes. See the sourcing note at the bottom.
How fresh is a cached row?
A resolved company is cached for 90 days, a null for 7. Pass skipCache: "true" to force a fresh lookup.
๐งฉ Want other GTM data?
Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store, so our users get the same tooling we build under contract.
Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.
๐ ๏ธ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.
๐ Support
Something wrong, or a domain that should resolve and does not? Open an issue on the Issues tab with the domain and the row you got back. rejected_candidates and registers_queried are the two fields that make a report easy to act on.
Sourcing and licensing. Contains public sector information licensed under the Open Government Licence v3.0. Company data comes from UK Companies House, GLEIF (published under CC0), SEC EDGAR, the EU VIES VAT validation service, and the companies' own public web pages. This actor returns registered company information only. It contains no personal data, no directors and no beneficial owners, and it is not an assessment of any company's creditworthiness, risk or standing.
Built by Mamba Labs.