Company Registry Lookup API: KYB, LEI, VAT, Officers avatar

Company Registry Lookup API: KYB, LEI, VAT, Officers

Pricing

from $2.00 / 1,000 company records

Go to Apify Store
Company Registry Lookup API: KYB, LEI, VAT, Officers

Company Registry Lookup API: KYB, LEI, VAT, Officers

Verify companies by name or ID in 10 official registries: UK Companies House, SEC EDGAR, GLEIF LEI, France, Norway, Finland, Czechia, Poland KRS, Latvia, Brazil CNPJ. Status, address, VAT, industry, LEI and officers as one JSON. Not-found rows are free.

Pricing

from $2.00 / 1,000 company records

Rating

0.0

(0)

Developer

Jeremy Lam

Jeremy Lam

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Company Registry Lookup API: KYB, LEI, VAT, Officers (UK, US, EU, Brazil)

Verify any company in seconds from official open registries. Paste company names or registration numbers and get one clean, normalised JSON record per company: legal name, registry ID, status (active / dissolved / in liquidation), legal form, incorporation date, registered address, industry code, VAT / tax ID, LEI, share capital and current directors / officers, with a link to the source.

10 sources in one Actor: UK Companies House · US SEC EDGAR · GLEIF LEI (2.9M+ entities, 200+ countries) · France SIRENE/RNE · Norway Brønnøysund · Finland PRH/YTJ · Czechia ARES · Poland KRS · Latvia Register of Enterprises · Brazil CNPJ.

  • 💸 $3 per 1,000 companies found ($2.50 on Starter, $2 on Scale and above). No start fee. Not-found, invalid and registry-error rows are free.
  • 👥 Officers and LEI are included at no extra cost, not as paid add-ons.
  • 🔎 Mix names and IDs. IDs are auto-detected and checksum-validated (LEI, SIREN/SIRET, orgnr, Y-tunnus, IČO, CNPJ, VAT numbers, KRS, CIK, $TICKER), so a typo is flagged instantly instead of being billed as "not found".
  • 🔗 An LEI resolves to the national record: give LEI 549300A0JPRWG1KI7U06 and you get Nokia Oyj from the Finnish register, plus its LEI status.
  • 🧭 Name search across all registries at once, ranked by match quality and then by size signals (listed, PLC/ASA, LEI holder, active), so "Tesco" returns TESCO PLC, not a dissolved shell.
  • 🛟 Built for batch KYB: up to 5,000 queries per run, polite per-registry rate limits with automatic back-off, partial results instead of failed runs, and a clear list of anything left unprocessed.

What you can look up

RegistryCountryLookup by IDSearch by nameOfficersVAT / tax IDSource licence
Companies House🇬🇧 UKCompany number (00445790, SC123456)✅✅ directors, secretaries–Open Government Licence v3
SEC EDGAR🇺🇸 US (SEC filers)CIK, $TICKER✅–EIN where filedPublic domain
GLEIF🌍 200+ countriesLEI✅––CC0
SIRENE / RNE🇫🇷 FranceSIREN, SIRET, FR VAT✅✅ dirigeants✅ FR VATLicence Ouverte 2.0
Brønnøysund🇳🇴 NorwayOrg. number, NO VAT✅✅ board, CEO✅ (if VAT-registered)NLOD 2.0
PRH / YTJ🇫🇮 FinlandY-tunnus, FI VAT✅– (not published by PRH)✅CC BY 4.0
ARES + Public Register🇨🇿 CzechiaIČO, CZ VAT✅✅ statutory body, board✅Open data
KRS🇵🇱 PolandKRS numbervia GLEIF✅ (masked by the registry)✅ NIP / PL VATPublic information
Register of Enterprises🇱🇻 LatviaReg. code✅––CC0
Receita Federal CNPJ🇧🇷 BrazilCNPJvia GLEIF✅ QSA partners✅ CNPJReceita open data ¹

¹ Receita Federal publishes CNPJ data only as bulk files, so Brazil is served by the open-source mirrors minhareceita.org (primary) and BrasilAPI (fallback). Every record states its source in sourceUrl / sourceLicense.

Input examples

{
"queries": [
"Tesco PLC",
"GB 00445790",
"FR27552032534",
"NO 923609016",
"FI 0112038-9",
"CZ 45274649",
"KRS 0000019193",
"LV 40003245752",
"BR 33.000.167/0001-01",
"LEI 549300A0JPRWG1KI7U06",
"CIK 320193",
"$MSFT"
],
"maxResultsPerQuery": 3,
"includeOfficers": true,
"includeLei": true
}
  • Only some countries: "countries": ["GB", "FR"] limits name searches (and bare numbers) to those registries.
  • Strict matching: "minMatchScore": 95 keeps only same-name matches (ignoring Ltd / Oyj / a.s.).
  • Screening a list: "activeOnly": true drops dissolved and bankrupt companies, and "includeNotFound": true (default) gives one free row per unmatched query so your list reconciles 1:1.

Output

One dataset item per company ("type": "company", charged) plus free rows for not-found, invalid and error queries.

{
"type": "company",
"query": "Tesco",
"matchedBy": "name",
"matchScore": 97,
"registry": "GB",
"registryName": "UK Companies House",
"country": "GB",
"companyId": "00445790",
"idType": "CRN",
"name": "TESCO PLC",
"legalForm": "Public limited Company",
"status": "active",
"statusRaw": "Active",
"incorporationDate": "1947-11-27",
"address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"industryCode": "47110",
"industryScheme": "UK SIC 2007",
"lei": "2138002P5RNKC5W2JZ46",
"leiStatus": "ISSUED",
"officers": [{ "name": "…", "role": "Director", "appointedOn": "2020-…", "isCompany": false }],
"officersCount": 14,
"sourceUrl": "https://find-and-update.company-information.service.gov.uk/company/00445790",
"sourceLicense": "Companies House public register, Open Government Licence v3.0"
}

Every record has the same fields whatever the country (null when a registry doesn't publish a field). Registry-specific extras (SEC latest filings and exchanges, French SIRET/revenue, Czech file number, GLEIF data) are in extra. The dataset has Overview, Officers (one row per officer) and Not found / invalid views, and the key-value store OUTPUT record has run totals and connection statistics.

status is normalised to active, inactive, in-liquidation, bankrupt, dissolved or unknown, and statusRaw keeps the registry's own wording. For SEC filers, status is inferred from filing activity (SEC is a filings database, not a register of incorporation), which is stated in statusRaw.

Pricing

Pay per event, no start fee, no monthly rental:

EventFree planStarterScale and above
Company record (found)$3.00 / 1,000$2.50 / 1,000$2.00 / 1,000
Not found / invalid ID / registry errorfreefreefree

Officers, LEI enrichment and all registry extras are included. Set Maximum cost per run in the run options to cap spend: the Actor stops cleanly at the limit and lists the queries it did not process.

Privacy and fair use

  • Data comes only from official open-data APIs and public registers, under their open licences (listed per record). No paid data brokers, no login-walled sources.
  • For officers, the Actor keeps name, role, appointment date and whether the officer is a company. It never stores dates of birth, home addresses, ages or personal ID numbers, even where a registry shows them. Polish officer names stay masked exactly as the KRS API publishes them.
  • Requests are rate-limited per registry well under each registry's published limits, with a descriptive User-Agent (SEC fair-access policy).
  • You are responsible for using personal data (officer names) lawfully, e.g. for KYB/AML, due diligence or B2B verification under GDPR's legitimate-interest basis.

Tips and limits

  • Brand names vs legal names: registries index legal names. "Air Baltic Corporation" or the registration number finds Latvia's airBaltic, while "airBaltic" alone may not; "LVMH" or "Michelin" alone match small companies literally named LVMH / MICHELIN (the groups are registered as "LVMH Moët Hennessy Louis Vuitton" and "Compagnie Générale des Établissements Michelin"). Use the legal name or the ID for exact hits: IDs are always exact.
  • Germany, Switzerland, Japan and other GLEIF-only countries return the GLEIF record (legal name, LEI, status, registered address, registration number), e.g. "Siemens AG" → Siemens Aktiengesellschaft.
  • SEC records get their LEI via an exact-name GLEIF match for US-incorporated filers; foreign SEC filers (e.g. NOKIA CORP's 20-F filings) may show lei: null, but the home-country record above them carries it.
  • Poland KRS and Brazil CNPJ have no keyless name search; name queries reach them only when GLEIF links the company (most larger companies). Use the KRS or CNPJ number for guaranteed hits.
  • Speed: ID lookups take about 1–2 s each, and name searches (fanned out to 8 registries + GLEIF) take about 3 s, at roughly 1,200 name searches per hour within the registries' rate limits. For very large name batches, raise the run timeout. If a run hits its timeout or cost limit, it saves everything found so far and lists the rest in OUTPUT.remainingQueries.
  • UK data comes from the public Companies House service (OGL).
  • Finland's PRH doesn't publish officers in its open API, so officersNote explains why they're empty.

Roadmap

Germany (Handelsregister), Denmark CVR, Netherlands KvK, Switzerland Zefix, Estonia, Australia ABN, UK PSC (beneficial owners) via an optional Companies House API key, and US state registries. Missing a country or field you need? Open an issue on the Actor page.