# Changelog of Company LEI Lookup API (GLEIF Data) (`sourcing-data-studio/lei-lookup-api`) Actor

- **URL**: https://apify.com/sourcing-data-studio/lei-lookup-api/changelog.md
- **Full Actor documentation**: https://apify.com/sourcing-data-studio/lei-lookup-api.md

## Changelog

### 0.1.7 (2026-10-09)

- README: the sentence "About 4 in 100 LEI records are sole proprietors" now carries its count and date. It had no source on file; counted on 2026-10-09 from GLEIF's public API it is 130,065 of 3,457,357 records, 3.76%.
- No change to the code, the input or the output.

### 0.1.6 (2026-10-09)

- README: the Python example now works with version 3 of Apify's Python client, the version `pip install apify-client` installs today (it needs Python 3.11 or later). The example read the dataset id as `run["defaultDatasetId"]`. Client 3 returns a typed object, so that line stopped with `TypeError: 'Run' object is not subscriptable`, after the run had finished and been charged. It now reads `run.default_dataset_id`, and the line above it says `pip install "apify-client>=3"`.
- The faulty example was added on 2026-10-09 and had not been run before it was published. The corrected one was run against this Actor the same day with client 3.3.0. The curl example was run the same day and is unchanged. On Windows, the Python example stops with a `UnicodeEncodeError` when its output is sent to a file and a company name holds a character the default file encoding cannot write; `python -X utf8` avoids that. In a console window it prints as it is.
- No change to the code, the input or the output.

### 0.1.5 (2026-10-09)

- README: the opening now states the price: what one saved row costs on the Free tier and what a typical query costs, from the same figures as the cost section. The sentence above the sample rows no longer names a "quick-test example".
- README: the feature list now names all six statuses of a name or code (it left out `blocked`).
- No source change.

### 0.1.4 (2026-10-09)

- The title is now "Company LEI Lookup API (GLEIF Data)", so that a search for "GLEIF" finds it. The Store address and the technical name are unchanged; the Actor stays unofficial and not affiliated with GLEIF.
- README: the output example now comes right after the feature list; the API section shows a curl, a JavaScript and a Python example; the cost section adds the price of a typical query. No change to the code, the input or the output.

### 0.1.3 (2026-10-06)

- The Actor no longer answers a refusal with another address. A request that the source refuses with HTTP 401, 403 or 407 is not retried: the name or code gets the status `blocked` in the run summary, and nothing is charged. After HTTP 429 the Actor waits as long as the source asks (the `Retry-After` header, at most 60 seconds) and tries again from the same address. If the source asks for a longer wait, or sends `x-ratelimit-remaining: 0`, the request ends as `blocked` at once, with or without a proxy. Without a `Retry-After` header the wait is still at least 10 seconds; with one it is what the header says.
- The Actor keeps one session for the whole run, so a retry leaves from the same proxy address as the try before it. It takes another address only when the connection through the proxy fails. Before, a retry could take another address from the proxy pool or the proxy list.
- The README shows how to read the outcome of every input through the API (the run object and the `RUN_SUMMARY` record), explains the status `blocked` and has a section for AI agents. The search terms and the Store listing texts were rewritten.

### 0.1 (2026-10-05)

- First version: LEI lookup API for the public Global LEI Index (GLEIF). Looks up companies by name or LEI code and returns the legal name, status, jurisdiction, registration number and registered address.
- Records that GLEIF's entity category, the legal form or the legal name marks as a sole proprietor are left out. A sole proprietor that an LEI issuer filed as an ordinary company, with a company-like name and legal form, can remain.
- Records of personal trusts, family settlements, estates of deceased persons and personal pension accounts are left out, by markers in the legal name or legal form. A trust without such a marker can remain.
- Address lines that repeat GLEIF's mail-routing field or carry a care-of or attention marker or a personal title are dropped.
- The run summary has a `withheld` block: how many records of private persons and how many address lines were held back, why, and in which saved records.
- Error messages in the log and the run summary name the HTTP status only, never text from a response.
- An LEI code that belongs to a sole proprietor or another record that is left out gets the status `excluded` in the run summary, not `no-match`.
- Characters that the source reads as search operators are removed from company names, and a name search keeps only records that contain a word of the searched name.
- The run summary lists every name and code with a status, including the ones a run did not reach (`stopped`).
- The run stops after three failed requests in a row. **Retries per request** also applies to connection errors.
