LEI, VAT and Company Identity Extractor avatar

LEI, VAT and Company Identity Extractor

Pricing

$6.00 / 1,000 identity row delivereds

Go to Apify Store
LEI, VAT and Company Identity Extractor

LEI, VAT and Company Identity Extractor

One row per company identity: GLEIF entity with parent chain, EU VIES VAT validation with consultation number, annual accounts where a free register has them, and domain registration facts. Give a domain, VAT number, LEI or company name.

Pricing

$6.00 / 1,000 identity row delivereds

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

One row per company identity, joined across the public registers that actually hold the facts. Give a Legal Entity Identifier, an EU VAT number, a national registry number, a company name or a website domain, and get back the legal entity with its LEI, its registry number, its parent chain, its VAT consultation number and whatever annual accounts a free public register will hand over. This is the KYB lookup that turns "who is behind this counterparty" into one canonical record you can approve or reject against.

What you get

  • The GLEIF Level 1 identity: legal name, jurisdiction, national registry number (entity.registeredAs), legal form, entity status, creation date and both address blocks (legal seat and headquarters).
  • GLEIF registration trust flags: registration.status (ISSUED, LAPSED, MERGED, RETIRED), nextRenewalDate, managingLou, corroborationLevel (FULLY_CORROBORATED versus ENTITY_SUPPLIED_ONLY) and the validation reference on the record.
  • The joins: BIC codes, ISIN instruments, conformity flag and the registeredAt registry authority.
  • GLEIF Level 2 parent chain: the direct parent and the ultimate parent, each as a full mini-record, or the reporting-exception reason when no parent is being reported (NATURAL_PERSONS, NO_KNOWN_PERSON, NON_CONSOLIDATING and the rest). Plus a count of direct children.
  • EU VIES VAT validation: the valid flag, the userError code, and the requestIdentifier consultation number that is the proof-of-check token your compliance file needs. Where the member state returns them, the row also carries the trader name and address, plus the approximate-match codes (matchName, matchCity, matchStreet, matchPostalCode, matchCompanyType) when you send candidate trader fields.
  • Annual accounts from a free public register where one exists, with the source named on the row and honest nulls where it does not. UK Companies House filing history when you bring a Companies House API key. Nothing is invented and nothing is interpolated: a missing year stays missing.
  • For a domain input: RDAP registration facts (registrar, registrant where published, creation and expiry dates, nameservers, status codes) plus the site's own title and a couple of trivial technology hints.

Why scrape company identity

Compliance teams onboard sellers and suppliers from a webshop domain or a marketplace handle. The registers that answer the question are split: GLEIF holds the legal entity and its ownership chain, the EU VIES service holds the VAT finding, the national registries hold the accounts, and RDAP holds the domain. Nobody joins them for you. A VAT number on its own says a seller is registered; it does not say who owns them or whether the LEI on their invoice is still ISSUED.

The decision this changes is binary. A marketplace that checks a seller gets a VIES result of valid: true with consultation number WAPIAAAA on the file, while GLEIF shows no LEI and no parent chain and the registration has lapsed, so the account goes to enhanced due diligence instead of straight through. A comparative score ("97% of sellers validated") changes nothing in that moment. The joined row does.

Input

FieldRequiredWhat it does
leione of these20-character Legal Entity Identifier, exact record lookup
vat_numberone of theseEU VAT number. The country prefix is stripped before the VIES call, so LU26375245 and 26375245 both work once the member state is known
registered_asone of theseNational registry number: Dutch KvK, German HRB, UK company number
company_nameone of theseLegal name for the GLEIF name search when you have no identifier
domainone of theseWebsite domain. Adds RDAP and the site title, and can seed the name search
jurisdictionoptionalTwo-letter country code that narrows fuzzy name search and decides which accounts register to consult
company_numberoptionalCompanies House number for the UK accounts door
fiscal_yearoptionalFiscal year to look for in the accounts register
requester_member_state_codeoptionalYour own member state code
requester_numberoptionalYour own VAT number. With the requester member state this is what makes VIES return a consultation number

Give at least one of the five identifiers. The actor resolves whichever you gave and enriches the row with whatever else it can reach.

Output

One row per entity. A trimmed example:

{
"lei": "H1FJE8H61JGM1JSGM897",
"legal_name": "Koninklijke Philips N.V.",
"jurisdiction": "NL",
"registered_as": "17001910",
"legal_form_id": "D9OW",
"entity_status": "ACTIVE",
"creation_date": "1991-09-30T00:00:00Z",
"registration_status": "ISSUED",
"next_renewal_date": "2027-06-26",
"managing_lou": "5493001KJTII",
"corroboration_level": "FULLY_CORROBORATED",
"bic": ["PHNLNL2A"],
"isins": ["NL0000000953"],
"direct_parent": null,
"direct_parent_reporting_exception": {
"category": "DIRECT_ACCOUNTING_CONSOLIDATION_PARENT",
"reason": "NO_KNOWN_PERSON"
},
"direct_children_count": 8,
"vat_number": "NL00017001910B01",
"vies": {
"valid": true,
"request_identifier": "WAPIAAAAaDUdDiAE",
"name": "TRADER NAME WHERE THE MEMBER STATE RETURNS ONE",
"address": "TRADER ADDRESS WHERE THE MEMBER STATE RETURNS ONE",
"vat_derived_from_registry_id": true,
"trader_match_codes": {"match_name": "NOT_PROCESSED"}
},
"jaarcijfers": {
"source": "nl_public_registers",
"available": false,
"reason": "no free machine-readable per-company figure door in NL",
"filings": []
},
"sources": ["gleif", "vies"],
"completeness": {"gleif": true, "vies": true, "jaarcijfers": false, "domain": false}
}

Fields that no register could supply come back null or with an explicit reason, never with a plausible-looking guess.

Use cases

Marketplaces and B2B payment platforms onboarding sellers. A seller signs up with a webshop domain. The actor resolves the domain to a legal entity, returns the LEI and the registry number, checks the VAT number and stamps the consultation number into the onboarding file, and shows the parent chain so the compliance officer can see whether the seller is a subsidiary of a group you already know. One call replaces five register lookups and a spreadsheet.

Distributors and PE/M&A teams resolving counterparties before money moves. Give the target's legal name and jurisdiction, get the LEI, the registration status, the renewal date and the ownership chain. A lapsed LEI or a FULLY_CORROBORATED absence of parents is a finding you can act on, not a metric.

Credit teams sizing a counterparty from its last filed year. Point the actor at a UK company number and bring a Companies House key; the filing history comes back attached to the right legal entity rather than to a name string. Where no free register publishes figures, the row says so and hands you the registry id so you can buy the extract.

Brand and grey-import checks. A listing claims to be an authorised distributor of brand B. The LEI record either sits inside brand B's ownership chain or it does not. The direct-children count and the parent links are what settle it.

How it compares

This actorLEI-only lookup actorsStandalone VAT checkers
GLEIF L1 + L2 identityyesyesno
Parent chain + reporting exceptionsyessometimesno
VIES validation + consultation numberyesnoyes
Trader name and address where returnedyesnosometimes
Annual accounts where freeyesnono
Domain / RDAP resolutionyesnono
One joined row instead of two exportsyesnono
Price per 1k rows$6.00from $2.00from $5.00

The LEI-only lookups on the Store are cheaper per record and should be your pick if all you want is a single LEI. The standalone VAT checkers are cheaper per check and should be your pick if all you want is a validity flag. This actor exists for the join: one row that carries the VAT finding and the legal identity and the ownership chain together, so the two answers can never drift apart in your file.

Pricing

$0.006 per identity row. All pricing is pay-per-event — you only pay for results you receive. No actor-start fee, no per-compute-unit charges.

Limits and gotchas

  • Give at least one identifier. A run with nothing to resolve fails fast with bad_input rather than returning an empty row.
  • Bare national digits for VIES. LU26375245 is accepted and normalised; sending the prefix twice is the one form the service refuses.
  • The consultation number only appears when you also send requester_member_state_code and requester_number. Without them VIES still validates, it just does not issue a proof-of-check token.
  • Member states differ on what they disclose. Some return trader name and address; some strip both; Spain answers through approximate matching only. The row reports what came back and leaves the rest null.
  • VIES rate-limits concurrency per member state and signals it inside the response body rather than with an HTTP status. The actor reads that, treats it as a retry and never records it as an INVALID result. If a member state stays busy you get a user_error of MS_MAX_CONCURRENT_REQ with valid: null — re-run it.
  • Annual accounts coverage is uneven by design. The UK door needs a Companies House API key in the environment. The NL door reports honestly that no free machine-readable per-company figure source exists rather than filling the gap with an estimate.
  • A VAT number derived from a registry id is a conventional construction, not a guarantee. The actor builds the standard Dutch form from a KvK number, checks it against VIES and reports what came back, including valid: false. When you hold the real VAT number, send it.
  • Name search is fuzzy. When you have an LEI, a registry number or a VAT number, use it; a name alone can land on a similarly named entity, so check registered_as and jurisdiction on the row before trusting it.
  • Cold start is a few seconds. The registers are queried live; there is no stale cache standing between you and the current record.

FAQ

Can I look up a company by LEI and get its VAT number in one call? Yes. Give the LEI. The actor fetches the GLEIF record, derives the Dutch VAT form from the registry number where the jurisdiction allows it, checks it against VIES and returns both the identifier and the consultation number on the same row.

Does a GLEIF record contain a VAT number? No. The LEI record has no tax-number field at all. The join from entity.registeredAs to a VAT identifier is the part this actor does for you, and the VIES result is what proves the join landed on a real registration.

What is a VIES consultation number and why do I need one? requestIdentifier, the consultation number, is the token the EU service issues to the requester as proof a specific check happened at a specific time. Your compliance file wants that token next to the finding. You only get one by sending your own requester member state and number.

How do I find the ultimate owner of a company from its LEI? The row carries ultimate_parent as a mini-record. When there is no ultimate parent being reported, ultimate_parent_reporting_exception gives the category and reason instead of a silent null, so you can tell "not disclosed" apart from "not looked up".

Can this actor give me annual accounts for a Dutch BV? Not the figures. No free public register publishes per-company Dutch annual accounts as machine-readable data. The row returns the registry id and an explicit reason so you can buy the extract. The UK door does return filing history when you bring a Companies House key.