๐Ÿฆ– TinyRex Data Toolspractical guides for web data APIs

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

  1. Add LEIs to leis, company names to companyNames (optionally narrowed by country), or BICs and ISINs to bics and isins.
  2. Keep includeParents on to get the direct and ultimate parent, or the reason reported when there is none.
  3. Export as CSV and filter on registrationStatus, renewalOverdue and matchScore to 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

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

More guides