Search by task, endpoint, field, or error.
Company API
Find a company by name, website, ticker or registration identifier.
Find a company by name, website, ticker or identifier. Get its name, country, website, listings and one recorded address in one response. Try the Company API.
Find a company
Parameters 11
- qstring · query · optional
Company name or alias text. Choose exactly one of q, domain, ticker or identifier. Matches rank by exact name, prefix, then substring.
- domainstring · query · optional
Website hostname or HTTP(S) URL. Matches the exact normalized host, including subdomains; a conventional www. prefix is removed.
- tickerstring · query · optional
Exact ticker symbol, case-insensitive. Use exchange to narrow the listing.
- identifierstring · query · optional
Exact identifier value, case-insensitive. Preserve leading zeros and punctuation. Use authority to narrow the issuing authority.
- countrystring · query · optional
Filter the profile country by ISO 3166-1 alpha-2 code. Case-insensitive.
- exchangestring · query · optional
Exchange name, case-insensitive. Supported only with ticker.
- limitinteger · query · optional
Maximum companies per page.
Default:
20Range: 1 to 50
- cursorstring · query · optional
Opaque next cursor from the previous response. Keep the selector, filters and limit unchanged. An invalid or expired cursor returns 400; restart the search.
- deepboolean · query · optional
Add legal name, aliases, jurisdiction, legal entity status, other websites, identifiers, incorporation date, additional addresses, industry classifications and parent inside each profile's deep object. Included on every plan in the same pooled request. Omit or use false for core.
Default:
false- prettyboolean · query · optional
Format the JSON response for reading.
Default:
false
curl "https://api.parseapi.com/company?domain=microsoft.com" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Parse-Version: 2.0.0"Run on your server with a secret key. Calling from a browser or app?
{
"companies": [
{
"id": "co_at73t5dva4tt",
"name": "MICROSOFT CORP",
"country": "US",
"website": "https://www.microsoft.com/",
"listings": [
{
"exchange": "Nasdaq",
"symbol": "MSFT"
}
],
"address": {
"type": "headquarters",
"street": "ONE MICROSOFT WAY",
"city": "REDMOND",
"state": "WA",
"postal": "98052-8300",
"country": "US"
},
"match": {
"field": "website",
"value": "microsoft.com"
}
}
],
"next": null
}Use one selector: q for a name, domain for a website, ticker for a listing, or identifier for a registration or other identifier. Add country to narrow the company country, exchange with a ticker, or authority with an identifier.
More searches and pagination
/company?q=Microsoft
/company?ticker=MSFT&exchange=Nasdaq
/company?identifier=0000789019&authority=sec
Name matches rank exact names first, then prefixes and contained matches. Ticker matches include the matched exchange. Identifier matches include type and authority; keep identifier values as strings to preserve leading zeros.
Search returns up to 20 companies. Set limit from 1 to 50. Pass a non-null next as cursor with the same selector, filters and limit. This example retrieves two pages with one company per page.
const url = new URL('https://api.parseapi.com/company?q=Micro&limit=1');
const headers = { 'X-API-Key': 'YOUR_API_KEY', 'Parse-Version': '2.0.0' };
async function readPage() {
const response = await fetch(url, { headers });
const data = await response.json();
if (!response.ok) throw new Error(data.message);
return data;
}
const first = await readPage();
if (first.next) {
url.searchParams.set('cursor', first.next);
const second = await readPage();
console.log(second.companies);
}Response fields
- companies
- Matching company profiles in rank order. An empty array means no match in this directory edition
- companies[].match.field
- The name, legal_name, aliases, website, websites, listings or identifiers field that matched
- companies[].match.value
- Matched name, normalized domain, ticker or identifier value
- companies[].match.exchange
- Present for ticker matches: the matched exchange or trading venue label
- companies[].match.type
- Present for identifier matches: the matching identifier type
- companies[].deep
- Additional details on each company when deep=true
- next
- Opaque next-page cursor, or null. Reuse the same selector, filters and limit
Keep the company ID
Parameters 3
- idstring · path · required
Stable company ID returned by search.
- deepboolean · query · optional
Add legal name, aliases, jurisdiction, legal entity status, other websites, identifiers, incorporation date, additional addresses, industry classifications and parent inside each profile's deep object. Included on every plan in the same pooled request. Omit or use false for core.
Default:
false- prettyboolean · query · optional
Format the JSON response for reading.
Default:
false
curl "https://api.parseapi.com/company/id/co_at73t5dva4tt" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Parse-Version: 2.0.0"Run on your server with a secret key. Calling from a browser or app?
{
"id": "co_at73t5dva4tt",
"name": "MICROSOFT CORP",
"country": "US",
"website": "https://www.microsoft.com/",
"listings": [
{
"exchange": "Nasdaq",
"symbol": "MSFT"
}
],
"address": {
"type": "headquarters",
"street": "ONE MICROSOFT WAY",
"city": "REDMOND",
"state": "WA",
"postal": "98052-8300",
"country": "US"
}
}Store the chosen company's id to retrieve it later. IDs begin with co_ followed by 12 characters; treat them as opaque values. Names, domains and ticker symbols can match more than one company.
website is one recorded URL, or null when no URL is recorded. listings keeps each symbol with its exchange or trading venue label; exchange labels are not standardized MIC codes.
Profile fields
Response fields
- id
- Stable company ID. Store it to retrieve the same profile later
- name
- Primary company name
- country
- Recorded company country as ISO 3166-1 alpha-2, or null. May differ from an address country
- website
- Recorded company website URL, or null when unknown
- listings
- Exchange and ticker pairs. An empty list does not establish private ownership
- listings[].exchange
- Recorded exchange or trading venue label; not a standardized MIC code
- listings[].symbol
- Ticker symbol on that exchange
- address
- One recorded address, or null. Prefers headquarters, then business, registered, mailing; first recorded within a type
- address.type
- Recorded address type: registered, headquarters, business or mailing
- address.street
- Street address, or null
- address.city
- City, or null
- address.state
- State code within the address country, using the same code format as the geography APIs, or null
- address.postal
- Postal code string, or null
- address.country
- ISO 3166-1 alpha-2 address country, or null
Unknown fields are null and unrecorded lists are empty. The default address is a recorded headquarters when available, otherwise a business, registered or mailing address, in that order. Its type tells you which address it is. Street, city and postal values stay as recorded; country and state codes use the same format as the geography APIs. If no address is recorded, address is null.
Additional details with deep
Add deep=true for legal name and status, aliases, registration jurisdiction, identifiers, incorporation date, other associated websites, additional addresses, industry classifications and parent company. deep.addresses contains the remaining recorded addresses without repeating the default address. Deep is included on every plan in the same pooled request. It appears on each company in a search, or on the profile returned by ID. Omit deep or use deep=false for core; an empty deep object means no additional details are available.
deep.status is the recorded legal entity status, not a check of trading activity or website availability. deep.websites contains other associated domains with their recorded URLs, or null when only the domain is known. The domain used by website is not repeated. If website is null, all associated domains remain in Deep.
jurisdiction uses separate country and state codes, consistent with the geography APIs. The state is null when only a registration country is recorded. The company's recorded country can differ from an address's country. parent is the recorded parent company's ID, or null.
curl "https://api.parseapi.com/company/id/co_at73t5dva4tt?deep=true" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Parse-Version: 2.0.0"Run on your server with a secret key. Calling from a browser or app?
{
"id": "co_at73t5dva4tt",
"name": "MICROSOFT CORP",
"country": "US",
"website": "https://www.microsoft.com/",
"listings": [
{
"exchange": "Nasdaq",
"symbol": "MSFT"
}
],
"address": {
"type": "headquarters",
"street": "ONE MICROSOFT WAY",
"city": "REDMOND",
"state": "WA",
"postal": "98052-8300",
"country": "US"
},
"deep": {
"legal_name": "MICROSOFT CORPORATION",
"aliases": [
"Microsoft"
],
"jurisdiction": {
"country": "US",
"state": "WA"
},
"status": "active",
"websites": [],
"identifiers": [
{
"type": "cik",
"authority": "sec",
"value": "0000789019"
},
{
"type": "lei",
"authority": "gleif",
"value": "INR2EJN1ERAN0W5ZP974"
},
{
"type": "registration",
"authority": "RA000641",
"value": "600 413 485"
}
],
"incorporated": "1993-09-22",
"addresses": [
{
"type": "business",
"street": "ONE MICROSOFT WAY",
"city": "REDMOND",
"state": "WA",
"postal": "98052-6399",
"country": "US"
},
{
"type": "mailing",
"street": "ONE MICROSOFT WAY",
"city": "REDMOND",
"state": "WA",
"postal": "98052-6399",
"country": "US"
},
{
"type": "registered",
"street": "300 DESCHUTES WAY SW STE 208 MC-CSC1",
"city": "TUMWATER",
"state": "WA",
"postal": "98501",
"country": "US"
}
],
"industries": [
{
"type": "sic",
"code": "7372",
"name": "Services-Prepackaged Software"
}
],
"parent": null
}
}Response fields
- deep.legal_name
- Legal entity name, or null
- deep.aliases
- Other company names
- deep.jurisdiction
- Recorded registration location as country and state codes, or null
- deep.jurisdiction.country
- Registration country as ISO 3166-1 alpha-2
- deep.jurisdiction.state
- State code within the registration country, such as WA, or null
- deep.status
- Recorded legal entity status; does not establish current business activity, website availability or listing status
- deep.websites
- Other associated websites, excluding the core website hostname. Includes all recorded domains when the core URL is unknown
- deep.websites[].domain
- Associated hostname, normalized to lowercase ASCII without a conventional www. prefix
- deep.websites[].url
- Recorded URL for this domain, or null; never inferred from a domain alone
- deep.identifiers
- Identifiers paired with their type and issuing authority
- deep.identifiers[].type
- Identifier type, such as cik, lei or registration
- deep.identifiers[].value
- Identifier string. Preserve leading zeros
- deep.incorporated
- Legal entity incorporation date as YYYY-MM-DD, or null
- deep.addresses
- Other recorded addresses, excluding the address returned in core, in recorded order
- deep.addresses[].type
- Recorded address type: registered, headquarters, business or mailing
- deep.addresses[].street
- Street address, or null
- deep.addresses[].city
- City, or null
- deep.addresses[].state
- State code within the address country, with the same formatting as the core address, or null
- deep.addresses[].postal
- Postal code string, or null
- deep.addresses[].country
- ISO 3166-1 alpha-2 address country, or null
- deep.industries
- Industry classifications, each with its type and code
- deep.industries[].type
- Classification type, such as sic
- deep.industries[].code
- Industry code string
- deep.industries[].name
- Industry name, or null
- deep.parent
- Known parent company ID in this directory, or null
Directory coverage
Parameters 1
- prettyboolean · query · optional
Format the JSON response for reading.
Default:
false
curl "https://api.parseapi.com/company/directory/coverage" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Parse-Version: 2.0.0"Run on your server with a secret key. Calling from a browser or app?
{
"scope": "sample",
"label": "Company directory",
"description": "The counts describe this directory edition, not complete country or worldwide coverage. A missing profile does not establish that a company does not exist.",
"snapshot_at": "2026-09-21T01:25:21.487Z",
"companies": 8035,
"countries": [
"CA",
"DE",
"GB",
"JP",
"KE",
"KY",
"NL",
"NZ",
"TW",
"US"
],
"with_website": 29,
"with_listings": 7835,
"with_address": 41
}This edition contains 8,035 profiles: 7,835 with listings, 41 with addresses and 29 with a website or domain. The counts describe this edition, not complete worldwide coverage.
Response fields
- scope
- Scope classification of the directory edition
- label
- Name of the directory edition
- description
- What the edition covers
- snapshot_at
- Edition timestamp in UTC
- companies
- Number of company profiles in the edition
- countries
- Country codes recorded on profiles; not a complete-country coverage claim
- with_website
- Profiles with a primary website or associated domain
- with_listings
- Profiles with at least one exchange and ticker pair
- with_address
- Profiles with at least one typed address
Access and errors
Use your API key with Parse-Version: 2.0.0. Company requests use the normal pooled request allowance.
A search with no matches returns 200 with an empty companies array. An unknown company ID returns 404. Invalid options or an expired cursor return 400; restart the search for a fresh cursor. Authentication uses 401 or 403, request limits use 429, and an unavailable directory returns 503. Error responses include code, message, docs and request_id.
Registration-number lookup
GET /company/{number}?country={country} is the separate national-code lookup with its original response. Its paid deep details remain separate from directory profiles.
Response fields
- company
- The number as folded. Invalid input still echoes the fold
- valid
- The number matches its country's checksum, or the UK 8-character format (no check digit)
- registered
- The number exists in the register we hold. null when the checksum fails
- country
- ISO 3166-1 alpha-2. Unique lengths resolve without ?country=
- type
- siren, siret, abn, houjin, cnpj, crn, or orgnr
- name
- Legal name as the register published it
- active
- Trading, as the register published it. null when unknown
- address
- Street line. null for Australia (the extract has none) and when the register masks it
- city
- City as the register published it
- state
- ADM1 code when the register ships one (AU, BR). null for France
- postal
- Postal code as the register published it
Registration detail fields
- deep.activity
- Activity code as published (NAF, CNAE, ABR entity type)
- deep.state_name
- ADM1 display name
- deep.country_name
- Country display name
- deep.vat
- Derived French VAT from the SIREN, or NO{orgnr}MVA. null else. Never a live VIES check
- deep.gst
- On the Australian extract, whether the entity is GST-registered. null outside Australia
- deep.acn
- Australian Company Number when the ABR row has one
- deep.siren
- The 9-digit legal-unit prefix on a French SIRET. null otherwise
- deep.siege
- True when this French SIRET is the headquarters
- deep.kind
- Japanese legal-form code, or Norwegian organisasjonsform (AS, ENK). null else
- deep.invoice
- Japanese invoice number: T plus the 13-digit corporate number
Questions? Email