← Docs

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.

GET
api.parseapi.com/company
Search company profiles
Explore
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.

authoritystring · query · optional

Identifier authority, case-insensitive. Supported only with identifier.

limitinteger · query · optional

Maximum companies per page.

Default: 20

Range: 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

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

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?

Example response
{
  "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[].match.authority
Present for identifier matches: the matching issuing authority
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

GET
api.parseapi.com/company/id/{id}
Retrieve one company profile
Explore
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

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

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?

Example response
{
  "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.

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

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?

Example response
{
  "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.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[].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
GET
api.parseapi.com/company/directory/coverage
Coverage and edition details
Explore
Parameters 1
prettyboolean · query · optional

Format the JSON response for reading.

Default: false

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

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?

Example response
{
  "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