> ## 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 by LinkedIn URL or Domain

> Turn a LinkedIn company URL or a website domain into a firmographic record: website and domain, industry, headcount, headquarters, founded year, followers, and similar companies. Costs 1 credit.

Use this endpoint when you have a company's LinkedIn URL or its website domain and want structured data about the company. OrbiSearch returns the company's name, description, website and registrable `domain`, industry, size bucket, exact `employee_count` and `follower_count`, company type, headquarters, founded year, specialties, and similar companies.

This endpoint is credit-metered and needs a pay-as-you-go API key. It is not part of the [unlimited plans](/docs/guides/unlimited-plans).

The response returns `result: found` with the company's data, or `result: not_found` when no company matches the LinkedIn URL, or no company matches the domain. On `not_found`, every data field is `null` (or an empty list for `specialties` and `similar_companies`).

## LinkedIn URL or domain

Send exactly one of these query parameters:

* `linkedin_url`: the company's LinkedIn page. **Use this whenever you have it.** It names the company directly, so it gives the best results.
* `domain`: the company's website domain, such as `kearney.com`. OrbiSearch matches it to the company and returns the same record, including the company's LinkedIn URL. Use it when you don't have the LinkedIn URL.

Sending both, or neither, is rejected with `422` before any charge.

## Accepted LinkedIn URLs

Send the company's LinkedIn URL as the `linkedin_url` query parameter. Company pages (`/company/<name>`) and showcase pages (`/showcase/<name>`) are both accepted. The URL can be written the way it was copied: with or without `https://` and `www`, on a country subdomain such as `uk.linkedin.com`, or with a trailing path or query string such as `/about/` or `?trk=...`.

These are rejected with `422` before any charge:

* A URL that isn't a LinkedIn company or showcase page, such as a person's profile (`/in/...`) or a job listing.
* A numeric company URL such as `linkedin.com/company/1035`. Use the company's name URL instead, for example `linkedin.com/company/kearney`.
* A company name longer than 200 characters, or one containing characters that can't be part of a LinkedIn URL.

## Accepted domains

Send the company's website as the `domain` query parameter. A bare domain (`kearney.com`), a subdomain (`www.kearney.com`) or a full URL (`https://www.kearney.com/about`) all work: OrbiSearch reduces it to the registrable domain, `kearney.com`.

A search by domain only returns a company whose own website is on that domain. 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. Both are always `false` and `null` on a search by LinkedIn URL.

On a search by domain that finds no company, `linkedin_url` is `null` as well as the data fields. `input` always echoes what you sent.

These are rejected with `422` before any charge:

* A LinkedIn URL sent as `domain`. Send it as `linkedin_url` instead.
* A value that isn't a website domain, or a site on a shared website-builder address rather than its own domain.

## Pricing and refunds

* 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`). Retry the request.
* A request rejected with `422` is never charged.

For more than a handful of companies, use [bulk company enrichment](/docs/api-reference/company-enrichment-bulk-submit). Duplicate inputs within a job are charged once.

## Rate limits

This endpoint shares the **20 requests per second** per API key limit with the rest of the `/v1/*` API. Exceeding it returns a `429 Too Many Requests` response. See [errors](/docs/api-reference/errors) for how to handle rate limit responses.

<RequestExample>
  ```bash By LinkedIn URL 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: <api-key>"
  ```

  ```bash By domain theme={null}
  curl --request GET \
    --url "https://api.orbisearch.com/v1/company-enrichment?domain=kearney.com" \
    --header "X-API-Key: <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"},
      # or: params={"domain": "kearney.com"},
      headers={"X-API-Key": "<api-key>"},
  )
  print(response.json())
  ```

  ```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");
  // or: url.searchParams.set("domain", "kearney.com");

  const response = await fetch(url, {
    headers: { "X-API-Key": "<api-key>" },
  });
  console.log(await response.json());
  ```
</RequestExample>


## OpenAPI

````yaml GET /v1/company-enrichment
openapi: 3.1.0
info:
  title: OrbiSearch Public API
  version: 1.0.0
  description: >-
    Email verification API for developers and agents. [Get your API key
    →](https://orbisearch.com/dashboard/api-keys)


    **Rate limiting:** requests are limited per API key (20 requests per second
    by default). Every response includes `X-RateLimit-Limit`,
    `X-RateLimit-Remaining` and `X-RateLimit-Reset` headers describing the
    current per-key window so clients can self-throttle; `429` responses also
    include a `Retry-After` header with the suggested backoff in seconds.
  contact:
    name: Get API Key
    url: https://orbisearch.com/dashboard/api-keys
servers:
  - url: https://api.orbisearch.com
    description: OrbiSearch Public API
security:
  - ApiKeyAuth: []
paths:
  /v1/company-enrichment:
    get:
      tags:
        - Public API v1
      summary: Enrich a company by LinkedIn URL or website domain
      description: |-
        Return an enriched public record for a company, by its LinkedIn company
        URL or its website domain: firmographics, estimated headcount, follower
        count and similar companies.

        Costs 1 credit per attempt. found and not_found are both charged,
        including repeat requests for the same company; refunds are issued only
        when OrbiSearch infrastructure cannot complete the request (HTTP 502).
        Invalid input is rejected with 422 before any charge.

        Rate limit: shared with the other /v1/* endpoints.
      operationId: company_enrichment_v1_company_enrichment_get
      parameters:
        - name: linkedin_url
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              A LinkedIn company or showcase URL. Preferred. Send this or
              domain, not both.
            examples:
              - https://www.linkedin.com/company/kearney
            title: Linkedin Url
          description: >-
            A LinkedIn company or showcase URL. Preferred. Send this or domain,
            not both.
        - name: domain
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              The company's website domain, or a full URL reduced to its domain.
              Send this or linkedin_url, not both.
            examples:
              - kearney.com
            title: Domain
          description: >-
            The company's website domain, or a full URL reduced to its domain.
            Send this or linkedin_url, not both.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyEnrichmentResponse'
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              example:
                detail: API key required in X-API-Key header
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Insufficient credits
          content:
            application/json:
              example:
                detail: Insufficient credits. You have 0.15 credits but need 0.2.
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
        '422':
          description: Invalid request parameters
          content:
            application/json:
              example:
                detail: 'Missing required query parameter: email.'
                errors:
                  - loc: query.email
                    msg: 'Missing required query parameter: email.'
                    type: missing
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
        '429':
          description: Rate limit exceeded
          headers:
            Retry-After:
              description: >-
                Seconds the client should wait before retrying. Computed from
                the remaining rate-limit window (typically 1 for the per-second
                limit, longer when the limit is exceeded by 3x or more); for
                endpoints with a daily quota, seconds until the quota resets.
              schema:
                type: integer
                examples:
                  - 1
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
          content:
            application/json:
              example:
                detail: >-
                  Rate limit exceeded. Maximum 20 requests per second per API
                  key. Contact us to discuss higher limits.
                code: rate_limited
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '502':
          description: Temporarily unable to complete the request (refunded)
          content:
            application/json:
              example:
                detail: Company enrichment service temporarily unavailable
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
        '503':
          description: Service temporarily unavailable
          content:
            application/json:
              example:
                detail: Company enrichment is not available in this environment
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
      security:
        - ApiKeyAuth: []
components:
  schemas:
    CompanyEnrichmentResponse:
      properties:
        result:
          type: string
          enum:
            - found
            - not_found
          title: Result
          description: >-
            found (a company record is returned) or not_found (no company
            matches the URL or the domain; all data fields are null).
        input:
          type: string
          title: Input
          description: The linkedin_url or domain you sent, verbatim.
          examples:
            - https://www.linkedin.com/company/kearney
        linkedin_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Linkedin Url
          description: >-
            The company's LinkedIn URL, normalized. Null when a search by domain
            finds no company.
          examples:
            - https://www.linkedin.com/company/kearney
        linkedin_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Linkedin Id
          description: Stable numeric company ID. Null for not_found.
          examples:
            - 2196
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Company name.
          examples:
            - Kearney
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Full company description (not truncated).
        website:
          anyOf:
            - type: string
            - type: 'null'
          title: Website
          description: Website the company lists.
          examples:
            - https://www.kearney.com/
        domain:
          anyOf:
            - type: string
            - type: 'null'
          title: Domain
          description: >-
            The company's website domain. Null when the company has no website
            of its own.
          examples:
            - kearney.com
        email_domain:
          anyOf:
            - type: string
            - type: 'null'
          title: Email Domain
          description: >-
            The domain the company hosts its email on. Null when there's no
            domain.
          examples:
            - kearney.com
        industry:
          anyOf:
            - type: string
            - type: 'null'
          title: Industry
          description: Industry label.
          examples:
            - Business Consulting and Services
        company_size:
          anyOf:
            - $ref: '#/components/schemas/CompanySizeBucket'
            - type: 'null'
          description: The company's self-reported headcount range.
        employee_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Employee Count
          description: Estimated headcount.
          examples:
            - 7548
        company_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Company Type
          description: Company type (Privately held, Public company, …).
          examples:
            - Partnership
        headquarters:
          anyOf:
            - $ref: '#/components/schemas/CompanyHeadquarters'
            - type: 'null'
          description: Headquarters location.
        founded_year:
          anyOf:
            - type: integer
            - type: 'null'
          title: Founded Year
          description: Year founded.
          examples:
            - 1926
        specialties:
          items:
            type: string
          type: array
          title: Specialties
          description: Specialties the company lists. Empty when unknown.
          examples:
            - - Management Consulting
        follower_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Follower Count
          description: Exact follower count.
          examples:
            - 694285
        similar_companies:
          items:
            $ref: '#/components/schemas/SimilarCompany'
          type: array
          title: Similar Companies
          description: Companies similar to this one. Empty when unknown.
        is_redirect:
          type: boolean
          title: Is Redirect
          description: >-
            Searches by domain: true when the domain you sent redirects to
            another website. Always false for a search by LinkedIn URL.
          default: false
          examples:
            - false
        redirected_to:
          anyOf:
            - type: string
            - type: 'null'
          title: Redirected To
          description: >-
            Searches by domain: the website domain your domain redirects to, or
            null. Always null for a search by LinkedIn URL.
          examples:
            - null
        credits_consumed:
          type: number
          title: Credits Consumed
          description: Credits charged for this attempt (1).
          examples:
            - 1
      type: object
      required:
        - result
        - input
        - credits_consumed
      title: CompanyEnrichmentResponse
      description: Enriched public record for a company, by LinkedIn URL or website domain.
      example:
        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
        credits_consumed: 1
    ApiErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: Human-readable description of what went wrong.
          examples:
            - API key required in X-API-Key header
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Stable machine-readable error code, present on conditions a client
            may want to branch on (for example `rate_limited` for the per-second
            limit versus `daily_quota_exceeded` for the daily cap). Absent on
            errors that need no further disambiguation.
          examples:
            - daily_quota_exceeded
        errors:
          anyOf:
            - items:
                $ref: '#/components/schemas/ValidationErrorDetail'
              type: array
            - type: 'null'
          title: Errors
          description: >-
            Individual validation failures, one entry per invalid parameter or
            field. Present only on 422 responses; when the request has a single
            problem, `detail` carries the same message. Absent on all other
            error codes.
      type: object
      required:
        - detail
      title: ApiErrorResponse
      description: Error response body.
    CompanySizeBucket:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: Headcount range label.
          examples:
            - 5,001-10,000 employees
        min:
          anyOf:
            - type: integer
            - type: 'null'
          title: Min
          description: Lower bound of the bucket, inclusive.
          examples:
            - 5001
        max:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max
          description: Upper bound of the bucket, inclusive.
          examples:
            - 10000
      type: object
      title: CompanySizeBucket
      description: The company's self-reported headcount range.
    CompanyHeadquarters:
      properties:
        text:
          anyOf:
            - type: string
            - type: 'null'
          title: Text
          description: Display form of the location.
          examples:
            - Chicago, Illinois
        city:
          anyOf:
            - type: string
            - type: 'null'
          title: City
          description: City.
          examples:
            - Chicago
        region:
          anyOf:
            - type: string
            - type: 'null'
          title: Region
          description: State or region.
          examples:
            - Illinois
        country:
          anyOf:
            - type: string
            - type: 'null'
          title: Country
          description: ISO 3166-1 alpha-2 country code.
          examples:
            - US
      type: object
      title: CompanyHeadquarters
      description: A company's headquarters location.
    SimilarCompany:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Company name.
          examples:
            - Oliver Wyman
        linkedin_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Linkedin Url
          description: The company's LinkedIn URL.
          examples:
            - https://www.linkedin.com/company/oliver-wyman
        industry:
          anyOf:
            - type: string
            - type: 'null'
          title: Industry
          description: Industry label.
          examples:
            - Business Consulting and Services
        location:
          anyOf:
            - type: string
            - type: 'null'
          title: Location
          description: Display location, when given.
          examples:
            - New York, NY
      type: object
      title: SimilarCompany
      description: A company similar to this one.
    ValidationErrorDetail:
      properties:
        loc:
          type: string
          title: Loc
          description: >-
            Where in the request the problem is, as a dot-separated path (e.g.
            `query.email`, `body.0`).
          examples:
            - query.email
        msg:
          type: string
          title: Msg
          description: Human-readable description of this validation error.
          examples:
            - 'Missing required query parameter: email.'
        type:
          type: string
          title: Type
          description: >-
            Machine-readable error category (e.g. `missing`, `less_than_equal`,
            `string_too_long`).
          examples:
            - missing
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationErrorDetail
      description: One request-validation failure.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: API key for authentication
      in: header
      name: X-API-Key

````

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