Company KYB Resolver: LEI, EU VAT, and SEC CIK Lookup in One API Call
Resolve a company name to its Legal Entity Identifier (LEI), EU VAT registration status, and SEC EDGAR CIK in a single call. No API key required. Built for KYB onboarding and counterparty verification.
The actor referenced in this article. Pay only for results delivered.
Know Your Business verification typically requires querying three different registries: GLEIF for the Legal Entity Identifier, a national VAT database for EU status, and SEC EDGAR for US-listed entities. Our Company KYB Resolver does all three in a single actor run and returns a merged record.
What you get per company
company_name— input namelei— Legal Entity Identifier (20-character alphanumeric code)lei_status— ISSUED, LAPSED, or PENDINGlei_registration_date— date LEI was first issuedgleif_entity_status— ACTIVE or INACTIVE per GLEIFlegal_address— registered address from GLEIFjurisdiction— country of registrationeu_vat_number— EU VAT registration number (if found via VIES)eu_vat_valid— true/false (VIES validation result)eu_vat_country— VAT issuing countrysec_cik— SEC EDGAR Central Index Keysec_company_name— company name as registered with SECsec_entity_type— corporation, LLC, etc.sec_sic— SIC industry codesources— which registries returned datascraped_at— ISO timestamp
Python example
import requests, time
run = requests.post(
"https://api.apify.com/v2/acts/themineworks~company-identity-resolver/runs",
headers={"Authorization": f"Bearer {APIFY_TOKEN}"},
json={
"companies": [
"Apple Inc",
"ASML Holding",
"SAP SE"
]
}
)
run_id = run.json()["data"]["id"]
while True:
r = requests.get(
f"https://api.apify.com/v2/actor-runs/{run_id}",
headers={"Authorization": f"Bearer {APIFY_TOKEN}"}
).json()
if r["data"]["status"] in ("SUCCEEDED", "FAILED"):
break
time.sleep(5)
entities = requests.get(
f"https://api.apify.com/v2/actor-runs/{run_id}/dataset/items",
headers={"Authorization": f"Bearer {APIFY_TOKEN}"}
).json()
for e in entities:
print(e["company_name"])
print(f" LEI: {e.get('lei','not found')} ({e.get('lei_status','—')})")
print(f" VAT: {e.get('eu_vat_number','not found')} valid={e.get('eu_vat_valid')}")
print(f" CIK: {e.get('sec_cik','not found')}")
Enrich a counterparty list
import pandas as pd
df = pd.read_csv("counterparties.csv") # must have 'company_name' column
companies = df["company_name"].dropna().tolist()
run = requests.post(
"https://api.apify.com/v2/acts/themineworks~company-identity-resolver/runs",
headers={"Authorization": f"Bearer {APIFY_TOKEN}"},
json={"companies": companies}
)
# ... poll and fetch, then merge on company_name
# Flag high-risk: no LEI and no VAT registration
results_df = pd.DataFrame(entities)
unverified = results_df[
results_df["lei"].isna() &
results_df["eu_vat_number"].isna() &
results_df["sec_cik"].isna()
]
print(f"{len(unverified)} companies returned no registry match")
What each registry covers
| Registry | What it verifies | Coverage |
|---|---|---|
| GLEIF (LEI) | Legal entity existence and jurisdiction | 2.5M+ entities globally |
| EU VIES (VAT) | Active EU VAT registration | All 27 EU member states |
| SEC EDGAR (CIK) | US registered issuer | US-listed companies and filers |
A company may appear in one, two, or all three depending on its jurisdiction and regulatory status.
Use cases
Onboarding and KYB. Before onboarding a new business customer, vendor, or partner, resolve their name against all three registries to confirm they are a legally registered entity with traceable identity.
Supplier due diligence. Run your supplier list through the resolver to identify suppliers that lack any verifiable registry presence — a material supply chain risk signal.
Trade finance. Verify counterparty identity before issuing letters of credit or financing trade transactions. An active LEI is increasingly required by correspondent banks under SWIFT standards.
Fintech compliance. Embed entity resolution in your business account opening flow to automate the first layer of KYB before manual review.
Accounts payable fraud prevention. Verify that new vendor registrations in your ERP match a legitimate registered entity before approving for payment.
Pricing
$0.005 per company lookup. Companies that return no match from any registry are still charged (the lookup was performed).
Available on Apify.
Explore the scraper referenced in this article — see inputs, outputs, and pricing, then run it on Apify.
Airbnb Scraper: Listing Prices, Ratings, and Availability Without the API
Airbnb has no public listings API. Here's how to pull nightly price, rating, superhost status and coordinates from Airbnb search results using Python.
Maps Leads: Verified Email Extraction from Google Maps Business Listings
How to pull B2B leads from Google Maps with MX-verified emails, past the official API's 120-result cap, and pay only for contactable businesses.
Realtor.com Scraper: Property and Agent Data Without the MLS Paywall
Scrape Realtor.com listings in Python — price, beds, baths, county, and the listing agent + brokerage office on every record. No login, no API key.