GLEIF LEI Company Registry Scraper - Decoded Firmographics avatar

GLEIF LEI Company Registry Scraper - Decoded Firmographics

Pricing

from $0.90 / 1,000 entity rows

Go to Apify Store
GLEIF LEI Company Registry Scraper - Decoded Firmographics

GLEIF LEI Company Registry Scraper - Decoded Firmographics

[$1.50 / 1K] Search 3.4M+ legal entities in the official GLEIF LEI register. One flat row per company: legal form, registry, region and LOU decoded from GLEIF's raw codes, one canonical address, national registration number, optional parents.

Pricing

from $0.90 / 1,000 entity rows

Rating

0.0

(0)

Developer

WebData Labs

WebData Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

GLEIF LEI Company Registry Scraper

Search the official global LEI register (3.4M+ legal entities) and get back flat, readable company rows - not GLEIF's raw code soup.

The GLEIF LEI register is the authoritative, regulator-backed record of who a company legally is: its legal name, its legal form, the national registry it is filed with, its registration number, its address, and its corporate parents. It is free and open. It is also close to unusable straight out of the API: the legal form comes back as JC0Y, the registry as RA000181, the region as EE-37, and the LEI issuer as another 20-character LEI. The address is scattered across six fields and duplicated between the legal and headquarters sites. This Actor does the decoding and flattening so you get one clean row per company instead of a nested JSON:API document you have to reverse-engineer.

✅ What you get / ❌ what this isn't

✅ What you get❌ What this isn't
legalForm reading "Osaühing", registrationAuthority reading "Commercial Register"Not a passthrough that hands you JC0Y and RA000181 and lets you look them up yourself
One canonical address string plus split city / postalCode / region / countryNot six raw address fragments duplicated across two address blocks
Full result sets past 10,000 rows via cursor paginationNot a page-number implementation that silently stops at 10,000 and looks complete
parentLei and ultimateParentLei resolved on requestNot an ownership graph crawler - direct and ultimate parents only, children are unbounded
registeredAs, the national registry number, to join against local company registersNot a source of financials, filings, employees, or contact details - GLEIF does not carry them
Live API reads, current as of the day you run itNot a stale quarterly dump

🔎 Why use this Actor

  • Codes resolved, not passed through. 3,599 legal forms, 1,071 registration authorities, 5,046 regions and all 41 LEI issuers are bundled and applied to every row, so legalForm and registrationAuthority arrive as words.
  • Past the 10,000-result ceiling. GLEIF's page-based pagination hard-fails above 10,000 results, which silently truncates any country-sized query. This Actor uses cursor pagination and returns the whole slice.
  • Four search modes. Full-text by name, everything in a country, a specific list of LEI codes, or new registrations in a date range sorted newest first.
  • Sentinel legal forms handled. GLEIF uses code 8888 to mean "the real legal form is in a free-text field" and 9999 for "not applicable". Both are unwrapped instead of coming back blank.
  • National registry number exposed. registeredAs is the company's number in its home register, which is the join key back to Companies House, Handelsregister, JUCESP and the rest.
  • Corporate parents on demand. includeHierarchy adds direct and ultimate parent LEI and name, off by default because it costs two extra requests per row.

👥 Who it's for

Compliance, KYC and onboarding teams who need an authoritative legal-entity record, and data and lead-generation teams building a company master list.

  • Resolve a counterparty name to a verified legal entity, jurisdiction and registry number.
  • Build a country-wide list of active registered entities as a firmographic base layer.
  • Screen a list of LEI codes you already hold and refresh their status and addresses.
  • Track newly registered entities in a market week by week.
  • Map a corporate group by resolving direct and ultimate parents.

Example tasks

Ready-made configurations you can open, inspect and duplicate:

⚙️ How to look up companies in the LEI register

  1. Open the Actor and pick a Search mode.
  2. For a name search, leave the mode on fulltext and type a company name into Search query.
  3. For a whole country, switch to country and add one or more two-letter codes such as DE to Countries.
  4. Set Entity status to Active only if you want to exclude dissolved and merged companies.
  5. Set Maximum results to the number of rows you actually want to pay for.
  6. Click Start. Results stream into the dataset as they are fetched, so you can watch and export mid-run from the Output tab or Storage.

Track new registrations on a schedule

Switch Search mode to newRegistrations, set Registered since to your start date, and optionally narrow to one country. The new registrations task is already set up this way. Results come back newest first. Save this as a Task and schedule it, and each run writes a watermark to a named key-value store so you can see exactly what the previous run covered.

📥 Input

{
"searchMode": "country",
"countries": ["DE"],
"entityStatus": "ACTIVE",
"registrationStatus": "ISSUED",
"includeHierarchy": false,
"maxResults": 1000
}
  • searchMode - fulltext, country, leiList or newRegistrations. Defaults to fulltext.
  • query - company name or keyword, used in fulltext mode. Matches legal names, other names and identifiers.
  • countries - two-letter ISO 3166-1 codes of the legal address, used in country mode. Each country is fetched as its own slice. Optional in newRegistrations mode to narrow to one market.
  • leis - exact 20-character LEI codes, used in leiList mode.
  • registeredSince / registeredUntil - ISO dates bounding the initial-registration range in newRegistrations mode. registeredUntil defaults to today.
  • entityStatus - ANY, ACTIVE, INACTIVE or NULL. The entity's own status.
  • registrationStatus - status of the LEI record itself. ISSUED means a currently valid, maintained LEI.
  • cities / postalCodes - advanced, client-side. GLEIF cannot filter on these server-side, so they are applied after fetching and do not reduce how many records are read. Pair them with countries to keep runs small.
  • includeHierarchy - optional. Adds direct and ultimate parent LEI and name. Costs two extra requests per row.
  • includeRaw - optional. Attaches the untouched GLEIF record under raw.
  • maxResults - hard cap on rows delivered. Default 1000, maximum 100000.

📤 Output

leilegalNamelegalFormregisteredAsregistrationAuthoritycitycountryregistrationStatus
529900VGZ27M5ZHAEZ97Siemens Advanta Solutions GmbHGesellschaft mit beschränkter HaftungHRB 269164Commercial RegisterMünchenGermanyISSUED
2138003XX6CNEIKKEJ64ADT SECURITY SERVICES DO BRASIL LTDA.Sociedade Limitada04.125.866/0001-80JUCESP Board of Trade of State of Sao PauloLAPA DE BAIXOBrazilISSUED
9845008O6CAU77451110Brandhouse Baltic OÜOsaühing11431008Commercial RegisterTallinnEstoniaISSUED

Each row also carries entityStatus and a boolean isActive; entityCategory and entitySubCategory; the raw legalFormCode and registrationAuthorityCode alongside their resolved labels, plus the authority's registrationAuthorityOrg and registrationAuthorityWebsite; jurisdiction and jurisdictionName; the split address as street, city, postalCode, region, regionCode, country, countryCode and a joined address; the headquarters site as headquartersAddress, headquartersCity, headquartersCountryCode and a headquartersSameAsLegal flag; the LEI lifecycle as initialRegistrationDate, lastUpdateDate, nextRenewalDate, corroborationLevel, managingLouLei and the resolved managingLou; cross-identifiers bic, mic, ocid and spglobalIds; succession fields expirationDate, expirationReason, successorLei and successorName; a gleifUrl deep link to the public record; and scrapedAt. With includeHierarchy on, rows gain parentLei, parentName, ultimateParentLei and ultimateParentName.

💵 How much does it cost?

[💵 $1.50 / 1K] and no start fee, so you pay per entity row delivered and nothing for starting a run. Client-side cities and postalCodes filtering happens before billing, so you are charged for rows you keep, not rows read. A 1,000-row country slice costs $1.50; looking up 20 specific LEI codes costs three cents. Set maxResults deliberately: the register holds over 3.4 million entities and an uncapped country query will happily return a quarter of a million rows.

🔁 Run it on the Apify platform

Schedule any input as a recurring Task, call the Actor from the API or any Apify client, and export results as JSON, CSV, Excel or XML. Results stream to the dataset during the run, so webhooks and integrations to Make, Zapier, Google Sheets or your CRM can pick rows up as they land rather than waiting for the run to finish.

⚠️ Limits and caveats

  • City, postal code, region and legal form cannot be filtered server-side. GLEIF rejects those filters outright. cities and postalCodes are applied client-side after fetching, so they narrow your output but not your run time. Filtering a large country by one city still reads the whole country slice.
  • The register covers legal entities that have an LEI, not all companies. An LEI is required mainly for entities that trade in financial markets, so small local businesses are usually absent. This is not a general company database.
  • No financials, filings, employees, phone numbers or emails. GLEIF does not publish them, and this Actor does not invent them.
  • Only direct and ultimate parents. Children are not fetched: an entity can have an unbounded number, which would make run time unpredictable. Parent resolution costs two extra requests per row.
  • /lei-records/{lei}/lei-issuer returns HTTP 500 upstream and is deliberately not called. The managing LOU is resolved from a bundled map instead.
  • Reference code lists are bundled at build time. New legal-form or registration-authority codes issued after the last build will come through as a raw code with an empty label until the Actor is rebuilt.
  • Throughput is the source's, not ours. GLEIF serves roughly 125-145 records per second, so a 100,000-row run takes about 12 minutes and the full register would take hours.
  • registeredAs is not normalized. Registries format their numbers differently (HRB 269164, 04.125.866/0001-80), and the value is passed through exactly as filed.
  • Brazil CNPJ Company API - take registeredAs from a Brazilian row and pull full Receita Federal firmographics for it.
  • Sanctions Screening API - screen the legal names and countries this Actor returns against sanctions and watchlists.
  • SEC Financials API - add filings and financials for US entities you have identified here.
  • EU Tenders API - match awarded suppliers back to a verified legal entity and jurisdiction.
  • Website Contact Extractor - once you have a company list, find the contact details GLEIF does not carry.
  • Lead List Deduplicator - merge LEI output with other lead sources without duplicate companies.

❓ FAQ

Am I charged for rows filtered out by cities or postalCodes? No. Client-side filtering runs before rows are pushed, so you are billed only for delivered rows.

Why did my country query return fewer rows than the count in the log? The log prints how many entities GLEIF matched. Delivery stops at your maxResults cap, so raise the cap to get more.

Does this get past GLEIF's 10,000-result limit? Yes. GLEIF's page-based pagination fails above 10,000 results; this Actor uses cursor pagination and has been verified returning 12,000 unique rows in a single German country slice.

Which countries are covered? All of them. The register is global, with 250 country codes and 5,046 regions resolved. Coverage per country varies with how many local entities hold an LEI.

Can I get company owners or subsidiaries? You can get direct and ultimate parents with includeHierarchy. Subsidiary lists are not returned.

Is the data live? Yes, every run reads the GLEIF API directly. GLEIF publishes a daily golden copy, so records are current to the most recent publication.

🛠️ Support

Something wrong or missing? Open an issue on the Actor's Issues tab with the run URL, the input you used, and what you expected instead. That is the fastest way to get it fixed.

⭐ Rate this Actor

If this saved you a decoding job, please leave a rating on the Reviews tab. Review count is the main trust signal buyers use on the Store, and reviews decide what gets built and improved next. If something is broken, please open an issue first so it can be fixed before you rate.