---
title: "Identifiers and listings, reported parent and modern slavery statement"
method: GET
path: "/company/{number}/identifiers"
tags: ["Companies"]
---

# Identifiers and listings, reported parent and modern slavery statement

`GET /company/{number}/identifiers`

## Request

- Base URL: `https://api.companystack.co.uk`
- URL: `https://api.companystack.co.uk/company/{number}/identifiers`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

What three open sources hold for a company, found by its Companies House number. Nothing is matched by name.

- `lei` and `listed_securities`: the company's Legal Entity Identifier from GLEIF, its status and renewal date, and the ISINs GLEIF's ISIN-to-LEI mapping gives it. "Has listed securities (ISIN on record)" means only that: An ISIN identifies a security the company has issued, such as shares or bonds. It does not by itself say which exchange the security is traded on, or that the company's shares are listed. GLEIF's mapping covers the numbering agencies that take part, so there may be more.
- `reported_parent`: the direct and ultimate parent the company reported to its LEI issuer. What the company reported to its LEI issuer, on the accounting definition of a parent (the entity that consolidates it in its accounts). It is not taken from Companies House and can differ from the register of people with significant control. It is a separate source from `GET /company/{number}/group-structure`, which walks the PSC register, and the two are never merged.
- `listings` and `wikidata`: stock exchange and ticker, official website, industry, parent organisation and Wikipedia link, as recorded on Wikidata. Wikidata is edited by volunteers and is not an official record. Check anything important against the source it cites.
- `modern_slavery`: the latest statement the government's registry lists for the company. From the government's modern slavery statement registry. The law asks organisations with an annual turnover of £36 million or more to publish a statement on their own website; adding it to the registry is encouraged, not yet required. So a company that is not on the registry has not been shown to have done anything wrong.

A block is `null` (and `listings` empty) when its source holds nothing for the company; `has_data` is false when none does. Absence is never a finding: most companies have no LEI.

Sources: Global LEI Index (LEI records, reported parents and ISIN mappings) (Global Legal Entity Identifier Foundation (GLEIF)), Creative Commons CC0 1.0 Universal; Modern slavery statement registry (Home Office), Open Government Licence v3.0; Wikidata (Wikimedia Foundation (edited by volunteers)), Creative Commons CC0 1.0 Universal. Each block carries a `source_line` with its date, and `sources` lists the licence and the attribution to show. GLEIF is loaded daily, the registry and Wikidata weekly.

Plans: every plan, API Free included.

## Path parameters

- `number` string, required

## Response `200`

What is held for the company. has_data: false, with a message, when no source holds a record under the number

- object
  - `title` string, required
  - `company_number` string, required
  - `company_name` string, required
  - `has_data` boolean, required
  - `message` string: Only when has_data is false: why that says nothing about the company
  - `lei` object, nullable, required
    - `lei` string
    - `legal_name` string: The legal name in the LEI record
    - `status` string, nullable: GLEIF's registration status of the LEI: ISSUED, LAPSED (not renewed), RETIRED, MERGED, PENDING_TRANSFER, PENDING_ARCHIVAL. Records GLEIF marks DUPLICATE or ANNULLED are never returned
    - `status_label` string
    - `status_note` string, nullable: What the status means, where it could be misread (a lapsed LEI)
    - `entity_status` string, nullable: GLEIF's status of the entity: ACTIVE or INACTIVE
    - `legal_form_code` string, nullable: ISO 20275 entity legal form code, as in the LEI record
    - `first_registered` string, date, nullable
    - `last_updated` string, date, nullable
    - `next_renewal` string, date, nullable
    - `managing_lou` string, nullable: The LEI of the issuer that manages the record
    - `gleif_url` string, uri
    - `line` string
    - `source_line` string
    - `other_leis` string[]: Other LEI records GLEIF holds under the same company number
  - `listed_securities` object, nullable, required
    - `statement` string
    - `total` integer: ISINs mapped to the LEI
    - `isins` string[]: The first 20 in ISIN order. Empty for an issuer with more than 1,000, where only the count is held
    - `note` string
    - `source_line` string
  - `listings` object[], required: Current stock exchange listings as recorded on Wikidata (a listing Wikidata gives an end date is left out)
    - `exchange` string
    - `ticker` string, nullable
    - `line` string
  - `reported_parent` object, nullable, required
    - `title` string
    - `direct` object, nullable
      - `lei` string
      - `name` string, nullable: The parent's legal name in its GLEIF record. null when that record has not been read yet: the parent is then identified by its LEI alone
      - `jurisdiction` string, nullable: Legal jurisdiction as GLEIF gives it: GB, US-DE, JE
      - `country` string, nullable: The country of that jurisdiction, in English
      - `company_number` string, nullable: The parent's Companies House number, when it is registered there
      - `href` string, nullable: The path of the parent's page on companystack.co.uk, when it is held
      - `gleif_url` string, uri
      - `since` string, date, nullable: The start of the relationship period reported
      - `last_updated` string, date, nullable: When GLEIF's relationship record was last updated
      - `line` string: "Direct parent, as reported to GLEIF: <name> (<country>, LEI <lei>)"
    - `ultimate` object, nullable
      - `lei` string
      - `name` string, nullable: The parent's legal name in its GLEIF record. null when that record has not been read yet: the parent is then identified by its LEI alone
      - `jurisdiction` string, nullable: Legal jurisdiction as GLEIF gives it: GB, US-DE, JE
      - `country` string, nullable: The country of that jurisdiction, in English
      - `company_number` string, nullable: The parent's Companies House number, when it is registered there
      - `href` string, nullable: The path of the parent's page on companystack.co.uk, when it is held
      - `gleif_url` string, uri
      - `since` string, date, nullable: The start of the relationship period reported
      - `last_updated` string, date, nullable: When GLEIF's relationship record was last updated
      - `line` string: "Direct parent, as reported to GLEIF: <name> (<country>, LEI <lei>)"
    - `lines` string[]: One or two sentences, ready to show
    - `note` string
    - `source_line` string
  - `wikidata` object, nullable, required
    - `qid` string
    - `url` string, uri
    - `label` string, nullable
    - `official_website` string, uri, nullable: http or https only. Link it with rel="nofollow noopener": it is whatever Wikidata records
    - `industries` string[]
    - `parents` object[]
      - `qid` string
      - `name` string
      - `company_number` string, nullable
    - `wikipedia_url` string, uri, nullable
    - `note` string
    - `source_line` string
  - `modern_slavery` object, nullable, required
    - `title` string
    - `latest` object
      - `year` integer: The statement year the registry files it under
      - `period_start` string, date, nullable
      - `period_end` string, date, nullable
      - `date_approved` string, date, nullable
      - `last_updated` string, date, nullable
      - `group_statement` boolean: The statement covers a group of organisations
      - `submitted_by` string, nullable: The organisation that submitted a group statement
      - `turnover_band` string, nullable: The band the organisation gave the registry, e.g. "£100 million to £500 million"
      - `sectors` string[]
      - `statement_url` string, uri, nullable: The statement on the organisation's own website
      - `registry_url` string, uri: The statement's summary on the government's registry
    - `years` integer[]: Statement years the registry lists for the company, newest first
    - `line` string
    - `note` string
    - `source_line` string
  - `sources` object[], required: The sources that hold something for this company, with the attribution to show
    - `id` 'gleif' | 'modern_slavery' | 'wikidata'
    - `name` string
    - `publisher` string
    - `licence` string
    - `licence_url` string, uri
    - `attribution` string
    - `checked_at` string, date-time, nullable: When our copy was last loaded or found unchanged
  - `notice` string

## Other responses

- `400`: Not a valid company number
- `401`: API key missing, malformed or revoked
- `403`: The key's plan does not include this endpoint (`code: plan_upgrade_required`, with `upgrade_url`), the key may not call it, or the key is beyond the plan's key limit after a downgrade (`code: key_limit_exceeded`: the newest keys are paused until keys are deleted or the plan upgraded)
- `404`: The company is not on the register copy held
- `429`: Per-minute or per-day limit reached (`code: rate_limited`, `window: minute|day`). Wait `Retry-After` seconds; when both windows are full the day is reported. A refused request does not count against either limit. A bulk lookup (`POST /company/bulk`) counts each company number in it as one request, so one that is more than you have left is refused whole, and the body adds `requested` and `fits`.

---

[API](https://skmtc.dev/companystack/apis/companystack-api.md) · [All operations](https://skmtc.dev/companystack/apis/companystack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/companystack/apis/companystack-api/revisions/8f3234237d2d?raw)
