crhk_companies

PREMIUM 3,925,319 rows

Hong Kong Companies Registry company directory

Also on crhk.guru →

Directory of every registered Hong Kong company from the Companies Registry: active and dissolved companies, dating back decades. Search by company name or business registration number; check incorporation and dissolution dates, active/dissolved status, company type, and winding-up mode. Includes enrichment from the modern ICRIS electronic filing system. The registered-office address is the most recent one we have observed, and its recency varies by company: address_as_of gives the date we observed it, and the full address history is in crhk_address_history.

Premium dataset

Evaluate it in full below: the evidence and a working sample are open to everyone. Buy or subscribe to unlock the complete dataset — your account is created automatically at checkout.

See access options

The evidence

Data coverage
Oct 1865 – present
Volume
3,925,319 rows
Last refreshed
20 October, 2026 (1 hour ago)
Data through
20 October, 2026 (20 hours ago)
Schema & column quality (66 columns)

Scroll table sideways to see more columns →

Column Type Description Populated Distinct
business_registration_number String Business Registration Number (BRNO) — primary identifier for the company — —
cr_number Nullable(String) Company Registration Number (CRN) — empty when no CRN is on record for the company. See has_no_cr_number to distinguish a registry-confirmed absence from a value we simply don't have — —
has_no_cr_number Bool True when the registry confirms the company has NO Company Registration Number (post-2023 UBI companies), as opposed to a CRN we just don't have on record (in which case cr_number is empty and this is false) — —
english_name Nullable(String) Company name in English, as registered. Where the Companies Registry stored the name wrapped in enclosing parentheses — a marker it applies to the secondary-language name on records from roughly 1988-2005, not part of the registered name — those outer brackets are removed upstream; parentheses that belong to the name itself are kept — —
chinese_name Nullable(String) Company name in Chinese characters, as registered. Where the Companies Registry stored the name wrapped in enclosing parentheses — a marker it applies to the secondary-language name on records from roughly 1988-2005, not part of the registered name — those outer brackets are removed upstream; parentheses that belong to the name itself are kept — —
status Nullable(String) Reconciled legal lifecycle state, in the Companies Registry's own vocabulary (ICRIS ACTIVE_STATUS_*): Live, Dissolved, Ceased place of business, Ceased to exist as an entity after amalgamation, Ceased Registration; null if unknown. 'Ceased place of business' is a registered non-Hong Kong company (Cap. 622 Part 16) that filed Form NN13 — it is NOT dissolved and may still exist under its home jurisdiction. 'Struck off' is a MECHANISM of dissolution, not a status — a struck-off company reads status='Dissolved' with dissolution_mode='Struck Off'; compose the two for display (e.g. 'Dissolved — struck off'). A company that is still Live but has a strike-off or deregistration underway carries striking_off_in_progress / deregistration_in_progress. — —
is_active Bool True if the company has a Live (registered) status. Note a Live company may still be in distress — check striking_off_in_progress, winding_up_in_progress and has_receiver_appointed. — —
is_dissolved Bool True if status indicates dissolution/amalgamation/struck-off, or a dissolution date exists with a non-active status — —
is_dormant Bool True if the company currently has an OPEN dormancy interval (registry's own dates) — —
dormant_since Nullable(String) Date the company's current dormancy interval commenced (null if not currently dormant) — —
lifecycle_substatus Nullable(String) Detailed lifecycle sub-status (e.g. live-but-dormant, ceased place of business), best-effort label — —
money_lender_licence_status Nullable(String) Money Lenders Ordinance (Cap. 163) register status for this company — licensed, application_pending, licence_expired, application_dismissed or application_withdrawn; empty for the vast majority of companies (no register entry). Linked by deterministic company-name match; full register entries and match rules in the crhk_money_lenders dataset — —
company_type Nullable(String) Legal entity form — the classification that cleanly splits every organisation, each mapping to its governing HK ordinance: Local company (Companies Ordinance Cap. 622), Registered non-Hong Kong company (Cap. 622 Part 16), Limited partnership (Cap. 37), Limited partnership fund (Cap. 637), Open-ended fund company (Cap. 571), Registered trustees (Cap. 306), Statutory body corporate, Mutual fund, Unregistered company, Overseas corporation with registered charge. Ownership and liability (below) further describe local companies — —
ownership Nullable(String) Ownership class of a local Hong Kong company (Companies Ordinance Cap. 622): Private (restricted share transfer, ≤50 members, no invitation to the public — s.11) or Public (s.12). Null for companies limited by guarantee (no share-ownership axis) and for all non-Cap.622 forms (funds, partnerships, non-Hong-Kong companies) — —
liability Nullable(String) Members' liability form of a local Hong Kong company (Companies Ordinance Cap. 622): Limited by shares (s.8), Limited by guarantee (s.9 — no share capital), or Unlimited (s.10). Null for non-Cap.622 forms (funds, partnerships, non-Hong-Kong companies) — —
incorporation_date Nullable(String) Date the company was incorporated in Hong Kong (YYYY-MM-DD format) — —
incorporation_year Nullable(Int32) Year the company was incorporated — —
years_since_incorporation Nullable(Int64) Number of years since the company was incorporated (calculated from today) — —
dissolution_date Nullable(String) Date the company was dissolved (null if still active) — —
dissolution_mode Nullable(String) How the company dissolved, best-effort label paired with dissolution_date — —
redomicile_date Nullable(String) Date the company re-domiciled into/out of Hong Kong (null if not applicable) — —
amalgamation_date Nullable(String) Date the company was amalgamated (merged), null if not applicable — —
ceased_business_date Nullable(String) Date a foreign company ceased its Hong Kong place of business (foreign analogue of dissolution) — —
registered_office_address Nullable(String) The most recent registered-office address we have observed for the company (for a registered non-Hong Kong company, its principal place of business in Hong Kong). It comes from the Companies Registry's open-data portal where we have read the company there, and otherwise from the last address we observed before 2024-04-18, so recency varies by company: address_as_of gives the date we observed it, and crhk_address_history holds every address we have observed. Null when we have never observed an address for the company. — —
has_address Bool True if we have observed a registered-office address for the company. False means we have never observed one, not that the company has no registered office. — —
address_as_of Nullable(Date) Date we last observed the registered-office address on record (full history in crhk_address_history) — —
charges_register Nullable(String) Charges register indicator from legacy registry data (有 = charges exist) — —
has_charges Bool True if charges (mortgages, debentures or other security) are registered against the company (270,887 companies). Unified across both registry arms — the legacy charges register and the modern e-services indicator — so it stays correct even where one arm is silent. — —
winding_up_mode Nullable(String) Winding-up mode if the company is being wound up: Compulsory Winding Up, Members' Voluntary Winding Up, Creditors' Voluntary Winding Up, or Others (ICRIS canonical). Empty if not in winding up. — —
striking_off_in_progress Bool True if the Companies Registry has commenced striking-off action against the company but it is not yet dissolved. Read with `status`: a company that is still Live with this flag set is being struck off right now — the single strongest distress signal in this dataset, and one no other column carries. — —
deregistration_in_progress Bool True if a deregistration application is underway (Form NDR1, Cap. 622 s.751) but the company is not yet dissolved. Unlike striking-off, deregistration is voluntary — the members applied for it. — —
winding_up_in_progress Bool True if winding-up proceedings have commenced but the company is not yet dissolved. See winding_up_mode for the mechanism (compulsory / members' voluntary / creditors' voluntary) and winding_up_date for the commencement date. — —
has_name_dispensation_licence Bool True if the company holds a licence under s.103 of the Companies Ordinance to dispense with the word 'Limited' / '有限公司' in its name — granted to companies formed to promote commerce, art, science, religion, charity or any other useful object. Explains why a Hong Kong limited company may carry a name with no 'Limited' suffix. — —
is_listed_company_legacy_marker Bool True if the legacy registry profile marked this company as listed (上市公司). FROZEN: the modern e-services API publishes no listing marker, so this reflects the registry profile as of 2023-12-22 and will never gain new values. Treat it as a historical cross-check, not a current listing status — use the HKEX datasets for that. — —
is_one_member_company Bool True if registered as a one-member (sole-member) company — —
has_receiver_appointed Bool True if a receiver or manager has been appointed (insolvency-distress signal, rare — 407 companies). Unified across the modern rcvrApptInd indicator and the registry notice set: the indicator alone identifies 357, and the notice set contributes 50 more that it does not carry. — —
is_deregistered Bool True if the company is/was deregistered (voluntary deregistration; legacy ICRIS registry signal) — —
deregistration_date Nullable(String) Deregistration commencement date (ISO YYYY-MM-DD), when recorded — —
strike_off_date Nullable(String) Striking-off commencement date (ISO YYYY-MM-DD), when recorded — —
is_s291_striking_off Bool True if flagged for striking off under s.291 as a defunct company (legacy ICRIS registry signal) — —
is_winding_up Bool True if in winding-up (liquidation) proceedings, reconciled across the legacy and modern captures — —
winding_up_date Nullable(String) Winding-up commencement date (ISO YYYY-MM-DD), when recorded — —
restoration_date Nullable(String) Date the company was restored to the register after striking-off/deregistration (ISO YYYY-MM-DD) — —
accounting_reference_date Nullable(String) Registry accounting reference date (ISO YYYY-MM-DD), when recorded — —
last_agm_date Nullable(String) Date of the last annual general meeting on record (ISO YYYY-MM-DD) — —
one_member_status_date Nullable(String) Date the one-member (sole-member) status was last updated on the register (ISO YYYY-MM-DD) — —
registry_remark Nullable(String) Registry caution or notice about the company, verbatim and often BILINGUAL (English and Traditional Chinese in one value). One notice stream collapsed from its two historical sources (the e-services profile page and the legacy register remark; both frozen). Despite reading as free text it is largely TEMPLATED — see registry_notice_type for the classification; over a thousand are amalgamation notices naming the successor company and its CR number (extracted into amalgamated_into_crn). Kept verbatim on purpose: accuracy cautions are exactly the notices a diligence reader must see unabridged. — —
registry_notice_type Nullable(String) The registry notice classified into a fixed set of families — the commonest are 'Name changed by Registrar', 'Amalgamation', 'Secretary appointment disputed' and 'Accuracy caution'; 'Unclassified' marks the counted residual (the verbatim text in registry_remark is always the authority) — —
amalgamated_into_crn Nullable(String) For a company dissolved by amalgamation whose notice names the successor: the successor company's CR number (e.g. '1549159'), extracted from the notice text. Null for survivor-side notices (the company that REMAINS after the amalgamation has no successor by definition) and where the registry published no CR number — —
is_on_watch_list Bool True if the company appears on the registry watch list (legacy ICRIS registry signal) — —
has_prosecution Bool True if a prosecution has been recorded against the company (legacy ICRIS registry signal) — —
chapter_number Nullable(String) Hong Kong Ordinance chapter number for statutory bodies (modern API), where applicable — —
incorporation_country Nullable(String) Country of incorporation in English (foreign companies only), in the Companies Registry's own e-services display form: 'British Virgin Islands', 'Cayman Islands', 'the People's Republic of China', 'United States of America'. One label per country — derived from `incorporation_country_code` via a fixed 111-entry bijective map (normalised 2026-08-30; before that the column shipped TWO vocabularies — the Registry's published-register UPPERCASE short names on 90% of rows and this display form on the rest). For exact filtering prefer `incorporation_country_code` (ISO-3166 alpha-3, populated on 99.95% of rows carrying a country). The 18 rows without a code (NULL there) keep the Registry's published-register UPPERCASE form — the one declared remnant of the old vocabulary. Empty for local Hong Kong companies. — —
incorporation_country_code Nullable(String) Country of incorporation as the ISO-3166 alpha-3 code (foreign companies only, e.g., 'VGB', 'CYM', 'BMU') — the Registry's stable key, from which `incorporation_country` and `incorporation_country_chinese` are derived; prefer it for filtering. NULL on 18 legacy-only rows that carry a label but no code. Empty for local Hong Kong companies. — —
incorporation_country_chinese Nullable(String) Country of incorporation in Traditional Chinese (foreign companies only), in the Registry's e-services display form: '英屬維爾京群島', '開曼群島', '中華人民共和國'. Derived from `incorporation_country_code` via the same fixed 111-entry map as `incorporation_country` (normalised 2026-08-30). The 18 rows without a code keep the legacy published form. Empty for local Hong Kong companies. — —
address_building_id Nullable(String) The building the company's CURRENT registered office is in, under Renavon's own building id (HKB- and a hash, stable across rebuilds; links to hk_buildings). The current office is the newest address in crhk_address_history, not the last-known registered_office_address above. Null when the address matched no single building — —
address_canonical_en Nullable(String) The current registered office written out in English in the government address gazetteer's canonical form (flat, floor, building, street, district), as the address resolver matched it — —
address_canonical_zh Nullable(String) The current registered office written out in Chinese in the government address gazetteer's canonical form — —
address_floor Nullable(String) Floor of the current registered office as read from the address (e.g. '12', 'G', 'UG'); null when the address names none — —
address_unit Nullable(String) Flat, room or unit of the current registered office as read from the address (e.g. 'A', '1203'); null when the address names none — —
address_latitude Nullable(Float64) Latitude of the matched building, or of the street or area when the match is coarser (WGS84 degrees) — —
address_longitude Nullable(Float64) Longitude of the matched building, or of the street or area when the match is coarser (WGS84 degrees) — —
address_match_level Nullable(String) How precisely the current registered office was matched: 'unit', 'floor' or 'building' (a building id is set), or only to a 'phase', 'estate', 'street_number', 'street', 'village', 'district' or 'region'; 'none' when it matched nothing — —
address_match_confidence Nullable(Float64) The address resolver's probability that the match is right, from 0 to 1 — —
updated_at DateTime64(3, 'UTC') Timestamp when record was last updated — —
id String Stable unique identifier for this row — the last column of every export. Use it to deduplicate, to key an incremental load, or to reference one specific row. It is additive: the entity and join keys you already use (race_id, horse_id, and the like) are unchanged. — —

Sample data

500 companies stratified across active local / dissolved local / foreign / ceased-amalgamated-struck-off / funds & special forms. Regenerated quarterly.

SELECT * FROM renavon_exports.crhk_companies LIMIT 50 0.02s
Loading data… | Click a header to sort; drag headers to reorder.

Choose your access

A Pass gives you freshness within a rolling window. The Full Archive gives you the full history we hold for the dataset, frozen at purchase. They solve different problems, and they work together.

Full refund within 14 days on subscriptions. Details →

Get notified when this dataset is updated.

Questions about this data?

Our data experts are ready to help clarify any aspects of this dataset.

Contact Our Team