How to validate LEI codes and find the LEI for a list of companies in bulk
Updated 2026-10-28 ยท Tool used: LEI Lookup - Bulk GLEIF LEI Search, Validation & Parents on Apify ยท Price: $1 per 1,000 LEI records found; invalid check digits and no-match rows are free
Compliance, onboarding and regulatory reporting teams often need the LEI of hundreds of counterparties, or need to check that the LEIs in a CRM are still valid and renewed. The GLEIF website search is built for one entity at a time.
This guide shows how to check a whole list in one run against the official GLEIF API (open CC0 data): verify LEI check digits, look up legal name, legal and head office address, register number, entity status and renewal date, find the LEI from a company name, BIC or ISIN, and add the direct and ultimate parent company.
Open LEI Lookup on Apify โSteps
- Add LEIs to
leis, company names tocompanyNames(optionally narrowed bycountry), or BICs and ISINs tobicsandisins. - Keep
includeParentson to get the direct and ultimate parent, or the reason reported when there is none. - Export as CSV and filter on
registrationStatus,renewalOverdueandmatchScoreto spot lapsed LEIs and weak name matches.
Example input
{
"leis": [
"HWUPKR0MPOU8FGXBT394",
"7LTWFZYICNSX8D621K86"
],
"companyNames": [
"Siemens AG"
]
}
Example output (one item, shortened)
{
"query": "HWUPKR0MPOU8FGXBT394",
"queryType": "lei",
"found": true,
"matchScore": 1,
"lei": "HWUPKR0MPOU8FGXBT394",
"legalName": "Apple Inc.",
"otherNames": [
"Apple Computer, Inc."
],
"entityStatus": "ACTIVE",
"registrationStatus": "ISSUED",
"category": "GENERAL",
"legalFormId": "H1UM",
"jurisdiction": "US-CA",
"registeredAs": "806592",
"registrationAuthorityId": "RA000598",
"legalAddress": {
"lines": "C/O C T Corporation System, 330 N. Brand Blvd, Suite 700",
"city": "Glendale",
"region": "US-CA",
"postalCode": "91203",
"country": "US"
},
"headquartersAddress": {
"lines": "One Apple Park Way",
"city": "Cupertino",
"region": "US-CA",
"postalCode": "95014",
"country": "US"
},
"entityCreationDate": "1977-01-03T00:00:00Z",
"initialRegistrationDate": "2012-06-06T15:53:00Z",
"lastUpdateDate": "2026-03-03T16:34:33Z",
"nextRenewalDate": "2027-03-08T17:27:20Z",
"renewalOverdue": false,
"managingLou": "5493001KJTIIGC8Y1R12",
"corroborationLevel": "FULLY_CORROBORATED",
"bic": [
"APLEUS66XXX"
],
"successorLei": null,
"gleifUrl": "https://search.gleif.org/#/record/HWUPKR0MPOU8FGXBT394",
"directParent": {
"lei": null,
"name": null,
"country": null,
"exception": "NATURAL_PERSONS"
},
"ultimateParent": {
"lei": null,
"name": null,
"country": null,
"exception": "NATURAL_PERSONS"
},
"checksumValid": true,
"error": null
}
Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.
Run it from code
Python
from apify_client import ApifyClient # pip install apify-client
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"leis": [
"HWUPKR0MPOU8FGXBT394",
"7LTWFZYICNSX8D621K86"
],
"companyNames": [
"Siemens AG"
]
}
run = client.actor("tinyrex/gleif-lei-lookup").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)JavaScript / Node.js
import { ApifyClient } from 'apify-client'; // npm i apify-client
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/gleif-lei-lookup').call({
"leis": [
"HWUPKR0MPOU8FGXBT394",
"7LTWFZYICNSX8D621K86"
],
"companyNames": [
"Siemens AG"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);curl (no SDK)
# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~gleif-lei-lookup/run-sync-get-dataset-items?format=csv" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"leis": ["HWUPKR0MPOU8FGXBT394", "7LTWFZYICNSX8D621K86"], "companyNames": ["Siemens AG"]}' > results.csv
Get your API token in Apify Console โ Settings โ API & Integrations. The free Apify plan includes monthly credit that is enough to try this.
Use it from an AI agent (MCP)
The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=tinyrex/gleif-lei-lookup",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
}
Then ask in plain language, e.g. "Bulk lei lookup for this list and give me a table".
Use cases
- KYB and onboarding: confirm a new client's legal name, address and LEI status.
- MiFIR and EMIR reporting: check that every counterparty LEI is issued and not lapsed.
- CRM clean-up: add LEIs and parent companies to an account list.
- Ownership research: map subsidiaries to their ultimate parent.
Pricing
Pay per result: $1 per 1,000 LEI records found; invalid check digits and no-match rows are free. You can cap the cost of every run in the run options.
FAQ
How do I check if an LEI is valid?
The actor first verifies the ISO 17442 check digits, so typos are flagged without a request and cost nothing. Valid codes are then looked up at GLEIF; registrationStatus and renewalOverdue show lapsed LEIs.
Can I find the LEI from a company name?
Yes. Name search matches legal-form suffixes both ways (AG and Aktiengesellschaft, Ltd and Limited), prefers the head office over branches and returns a matchScore, where 1 means an exact legal name match.
Is GLEIF data free to use?
Yes. GLEIF publishes LEI data as open data under CC0, so you can use the results commercially.
Can I map a BIC or ISIN to an LEI?
Yes, through GLEIF's official BIC-to-LEI and ISIN-to-LEI mappings.
Try it on Apify โRelated guides
- How to look up hundreds of UK companies on Companies House at once (profile, officers, PSC)
- How to look up French companies by SIREN or SIRET and build a B2B list from Sirene
- How to download SEC filings (10-K, 10-Q, 8-K, Form 4) by ticker and search EDGAR full text
- How to look up Norwegian companies by organisation number and build lead lists from Brreg
More guides
- Bulk tech stack lookup: a Wappalyzer / BuiltWith alternative for thousands of domains
- How to scrape Greenhouse, Lever and Ashby jobs (plus Personio, Teamtailor, Recruitee)
- How to export all products from any Shopify store to CSV or JSON
- How to scrape jobs from Workday career sites (myworkdayjobs.com)
- How to export products from any WooCommerce store to CSV or JSON
- How to export EU public tenders from TED (Tenders Electronic Daily) to CSV or JSON
- How to scrape remote jobs from Himalayas, Remote OK, We Work Remotely and more in one run
- How to export open EU funding calls (Horizon Europe, Digital Europe, cascade funding) to CSV or JSON
- How to turn any RSS or Atom feed into JSON or CSV (bulk, with monitoring)
- How to extract emails, phone numbers and social links from a list of company domains
- How to take bulk website screenshots from a URL list and save them to CSV or Google Drive
- How to export US federal (SAM.gov) and UK (Contracts Finder) tenders to CSV or JSON
- How to look up French companies by SIREN or SIRET and build a B2B list from Sirene
- How to look up Norwegian companies by organisation number and build lead lists from Brreg
- How to download SEC filings (10-K, 10-Q, 8-K, Form 4) by ticker and search EDGAR full text
- How to validate NPI numbers in bulk and build US healthcare provider lists from NPPES
- How to look up hundreds of UK companies on Companies House at once (profile, officers, PSC)
- How to look up Finnish companies by Y-tunnus and build B2B lead lists from the YTJ register
- How to extract all URLs from a website's sitemap (and find broken links)
- How to transcribe hundreds of audio and video files to text and subtitles with Whisper
- How to extract text from hundreds of PDFs, including scanned ones, in one run
- How to clean an email list before a campaign: bulk MX, disposable and typo check
- How to get Dutch public tenders from TenderNed into a spreadsheet, with daily alerts
- How to audit titles, meta descriptions, H1s and canonicals for hundreds of pages at once
- How to find every broken link and redirect on a website, with the pages to fix
- How to run Lighthouse on hundreds of URLs and get Core Web Vitals in one table