> ## Documentation Index
> Fetch the complete documentation index at: https://orbisearch.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Enrich a Company From Its LinkedIn URL or Domain

> Use GET /v1/company-enrichment to turn a LinkedIn company URL or a website domain into firmographics: domain, industry, headcount, headquarters, and similar companies.

Company enrichment turns a company's LinkedIn URL, or its website domain, into a structured company record. Send either one, get back the company's website and domain, industry, size, headquarters, founded year, specialties, follower and employee counts, and a list of similar companies.

This endpoint is credit-metered and needs a pay-as-you-go API key.

## When to use company enrichment

* **Account research**: you have a company's LinkedIn URL or website and want the firmographics behind it.
* **Finding a company's LinkedIn page**: you have a list of websites. A search by domain returns the company's LinkedIn URL along with its record.
* **Getting a domain for the email finder**: the returned `email_domain` lets you find people's work emails at that company by name with the [email finder](https://orbisearch.com/docs/guides/email-lookup.md).
* **Qualifying accounts**: filter by industry, headcount, headquarters country, or founded year before you reach out.
* **Building lookalike lists**: `similar_companies` lists comparable companies, each with a LinkedIn URL you can enrich next.

> [!NOTE]
>
> **Enriching more than one company? Use [bulk company enrichment](https://orbisearch.com/docs/guides/bulk-company-enrichment.md).** You submit up to 100,000 companies in one job, duplicates are charged once, and results come back in the order you sent them.

## Making a request

Send a `GET` request to `/v1/company-enrichment` with the company's LinkedIn URL in the `linkedin_url` query parameter, or its website in the `domain` query parameter. Send one or the other, not both. Include your API key in the `X-API-Key` header.

> [!TIP]
>
> **Use the LinkedIn URL whenever you have it.** It names the company directly, so it gives the best results. Not every company can be found from its website.

```bash cURL theme={null}
curl --request GET \
  --url "https://api.orbisearch.com/v1/company-enrichment?linkedin_url=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fkearney" \
  --header "X-API-Key: YOUR_API_KEY"
```

```python Python theme={null}
import requests

response = requests.get(
    "https://api.orbisearch.com/v1/company-enrichment",
    params={"linkedin_url": "https://www.linkedin.com/company/kearney"},
    headers={"X-API-Key": "YOUR_API_KEY"},
)

company = response.json()
print(company["result"], company["name"], company["domain"])
```

```javascript JavaScript theme={null}
const url = new URL("https://api.orbisearch.com/v1/company-enrichment");
url.searchParams.set("linkedin_url", "https://www.linkedin.com/company/kearney");

const response = await fetch(url, {
  headers: { "X-API-Key": "YOUR_API_KEY" },
});

const company = await response.json();
console.log(company.result, company.name, company.domain);
```

URL-encode the `linkedin_url` value. The Python and JavaScript examples above do this for you.

A found company looks like this:

```json theme={null}
{
  "result": "found",
  "input": "https://www.linkedin.com/company/kearney",
  "linkedin_url": "https://www.linkedin.com/company/kearney",
  "linkedin_id": 2196,
  "name": "Kearney",
  "description": "As one of the original firms, we've never lost sight…",
  "website": "https://www.kearney.com/",
  "domain": "kearney.com",
  "email_domain": "kearney.com",
  "industry": "Business Consulting and Services",
  "company_size": { "label": "5,001-10,000 employees", "min": 5001, "max": 10000 },
  "employee_count": 7548,
  "company_type": "Partnership",
  "headquarters": { "text": "Chicago, Illinois", "city": "Chicago", "region": "Illinois", "country": "US" },
  "founded_year": 1926,
  "specialties": ["Management Consulting"],
  "follower_count": 694285,
  "similar_companies": [
    {
      "name": "Oliver Wyman",
      "linkedin_url": "https://www.linkedin.com/company/oliver-wyman",
      "industry": "Business Consulting and Services",
      "location": "New York, NY"
    }
  ],
  "is_redirect": false,
  "redirected_to": null,
  "credits_consumed": 1
}
```

## Searching by domain

To start from a website instead, send `domain`:

```bash cURL theme={null}
curl --request GET \
  --url "https://api.orbisearch.com/v1/company-enrichment?domain=kearney.com" \
  --header "X-API-Key: YOUR_API_KEY"
```

```python Python theme={null}
import requests

response = requests.get(
    "https://api.orbisearch.com/v1/company-enrichment",
    params={"domain": "kearney.com"},
    headers={"X-API-Key": "YOUR_API_KEY"},
)

company = response.json()
print(company["result"], company["linkedin_url"], company["name"])
```

```javascript JavaScript theme={null}
const url = new URL("https://api.orbisearch.com/v1/company-enrichment");
url.searchParams.set("domain", "kearney.com");

const response = await fetch(url, {
  headers: { "X-API-Key": "YOUR_API_KEY" },
});

const company = await response.json();
console.log(company.result, company.linkedin_url, company.name);
```

A found company comes back with the same record as a search by LinkedIn URL, with `input` set to the domain you sent.

* **What you can send.** A bare domain (`kearney.com`), a subdomain (`www.kearney.com`) or a full URL (`https://www.kearney.com/about`). OrbiSearch reduces it to the registrable domain, `kearney.com`.
* **Only an exact match counts.** A search by domain only returns a company whose own website is on that domain. When there is none, the result is `not_found`, rather than a guess at a company with a similar name.
* **Redirects.** If the website redirects to another domain, for example after a rebrand, a company whose website is on the new domain counts too. The response then has `is_redirect: true`, and `redirected_to` names the domain it redirects to.
* **What's rejected.** A LinkedIn URL sent as `domain` (send it as `linkedin_url`), a value that isn't a website domain, or a site on a shared website-builder address rather than its own domain. These get a `422` and are not charged.

## Which LinkedIn URLs work

Send the company's LinkedIn URL as you have it. Company pages (`/company/<name>`) and showcase pages (`/showcase/<name>`) both work, with or without `https://` and `www`, on a country subdomain such as `uk.linkedin.com`, and with extra path or query text such as `/about/` or `?trk=...`. The response's `linkedin_url` is the company's canonical URL.

Numeric company URLs such as `linkedin.com/company/1035` are not supported. Use the company's name URL instead. They are rejected with `422` and not charged, like any other URL that isn't a LinkedIn company or showcase page.

## Interpreting the response

| `result` | What it means |
| - | - |
| `found` | The company's record is returned. |
| `not_found` | No company matches the LinkedIn URL, or no company matches the domain. Every data field is `null`, and `specialties` and `similar_companies` are empty. On a search by domain, `linkedin_url` is `null` too. Check the input for a typo. |

A few fields are worth knowing about:

* **`domain`** is the company's website domain. It is `null` when the company has no website of its own.
* **`email_domain`** is the domain the company's email is at. It can differ from `domain`.
* **`company_size`** is the company's self-reported headcount range. **`employee_count`** is an estimated headcount.
* **`linkedin_id`** is a stable numeric ID for the company. It stays the same when a company changes its name or URL, so it's the most reliable key to store.
* **`input`** is exactly what you sent, LinkedIn URL or domain.
* **`is_redirect`** and **`redirected_to`** only apply to searches by domain (see above). They are always `false` and `null` on a search by LinkedIn URL.
* Any individual field can be `null` when that detail isn't available for the company.

## Pricing

Each request costs **1 credit**. Every returned response is charged, `found` and `not_found` alike, by LinkedIn URL or by domain, including repeat requests for the same company. Refunds are issued only when OrbiSearch infrastructure cannot complete the request (`502`). Requests rejected with `422` are not charged.

## Rate limits

This endpoint shares the [20 requests per second](https://orbisearch.com/docs/api-reference/errors.md) per account limit with the rest of the `/v1/*` API.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.