Skip to main content
The company registry is the identity layer of the API: ~25,000 listed companies across 82 countries, each with a canonical company_id (cmp_…). Every other company-scoped dataset is keyed on it, and responses always carry company_id back so you never have to resolve twice. The registry is a current-state snapshot, rewritten as identifiers change — not a time series. It refreshes weekly (coverage.update_frequency: "weekly", history_status: "current_snapshot"). All registry routes are available on every plan and cost 1 credit per call. Responses use the standard envelope with { data, next_cursor, coverage } — see Pagination and Errors.

GET /v1/companies

Search the registry. At least one filter is required — an unfiltered listing returns 400. Plan: Free and above · Credits: 1 per call
string
Trading symbol. Non-US symbols carry their market suffix, e.g. 2330.TW. Also matches tickers a company no longer trades under.
string
SEC Central Index Key, with or without zero-padding.
string
International Securities Identification Number.
string
Taiwan security code, e.g. 2330. Resolved through both the .TW and .TWO suffixes.
string
Korean DART corp code, 8 digits.
string
ISO country code of incorporation/domicile, e.g. US, JP, TW. Case-insensitive.
string
Company-name substring, case-insensitive, minimum 2 characters. Exact substring match — not fuzzy — so a miss means no name contains the string, not that the nearest name was hidden.
string
next_cursor from the previous page, passed back verbatim.
integer
default:"100"
Rows per page, 1–1000.
market_cap_currency and currency are different fields: currency is what the listing’s price quotes in, market_cap_currency is what the market cap is stated in. For over a thousand companies they differ — an LSE listing prices in GBp (pence) while its market cap is in GBP — and reading one as the other is a 100× error.
A company found here may still have no SEC filings. The record’s cik is the honest test: a company with no CIK files nothing with the SEC, however well known it is.

GET /v1/companies/{company_id}

The canonical record for one company. Unlike every other company-scoped route, this one requires the literal cmp_ id — a ticker or CIK in the path returns 404. Resolve identifiers through the search route above. Plan: Free and above · Credits: 1 per call
string
required
Canonical company id, e.g. cmp_006294.
Returns { data, coverage } with the same record shape as search. 404 when the id does not exist.

GET /v1/companies/{company_id}/identifiers

Every identifier the company is known by, typed. id_type is returned verbatim — CIK, TICKER, ISIN, TW_UBN, DART_CORP, and others — because the type is the difference between a Taiwan business number and a Korean corp code. Plan: Free and above · Credits: 1 per call
string
required
Canonical cmp_ id.

GET /v1/companies/{company_id}/listings

All listings for the company, with the window each symbol was valid for. Active listings sort first, then retired ones. Plan: Free and above · Credits: 1 per call
string
required
Canonical cmp_ id.
Each row carries symbol, exchange, market, status, valid_from, and valid_to (null while the listing is still active).

GET /v1/companies/{company_id}/events

Corporate events: splits, mergers, ticker and name changes. Rows carry event_type, event_date, symbol, ratio, counterpart_company_id, counterpart_name, detail, and source, newest first. Plan: Free and above · Credits: 1 per call
string
required
Canonical cmp_ id.
Event history is partial — the response’s coverage.history_status says so. An empty result means no events are recorded, not that none ever happened.

Resolving identifiers on other routes

Every /v1/companies/{company_id}/... dataset route — market data, news, guidance, the Taiwan and Korea datasets, and the rest — accepts a ticker, CIK, ISIN, or cmp_ id in the path segment and resolves it for you. An identifier that resolves to nothing returns 404 with a message naming the accepted forms. The four registry routes on this page (GET /v1/companies/:company_id, /identifiers, /listings, /events) are strict: they require the literal cmp_ id.