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

# Domain to LinkedIn

> Find a LinkedIn company URL from a company domain. Rate limit: 180 requests per minute per workspace.

Submit one company domain and receive its LinkedIn company URL. The response contains only `linkedin_company_url`.

<Note>
  A successful lookup costs **0.5 credits**, billed asynchronously. No-result and failed lookups cost zero. Billing delays, outages, and insufficient credits do not block the result; an outstanding charge is retried later. The limit is **180 requests per minute per workspace**.
</Note>

Use a current workspace API key from [Settings → API key](/api-reference/authentication). Legacy Bubble-only API keys are not supported by this endpoint.

## Domain input

Send only `domain`: a hostname such as `example.org`, without a scheme, path, or port. Uppercase and a leading `www.` are normalized. Extra body fields are rejected; the body limit is 4 KiB.

## Timeouts and retries

The lookup has a **120-second deadline**. Allow **130 seconds** in your client. Sources are tried sequentially until a valid company URL is found. Personal profile and school URLs are not returned.

Reuse the same `Idempotency-Key` for transport retries of the same domain. Keys are scoped to your workspace and this endpoint; responses replay for seven days without another lookup or charge. Without a key, every request is a new operation.

An in-flight duplicate returns `409` with `Retry-After: 2`; wait and retry with the same key. A key reused for a different domain, or an expired key, also returns `409` and needs a new key. After a completed transient failure, use a new key to start a fresh lookup. New operations can incur a new charge if successful.

Errors contain an `error` field. Billing errors never replace the lookup response. Authentication and result storage must still be available for the request to succeed.

## Next step

Use [Extract company profile](/api-reference/extract-company-profile) to retrieve company details from the returned LinkedIn URL. That is a separate request with its own credit cost.


## OpenAPI

````yaml openapi.json POST /v1/domain-to-linkedin
openapi: 3.1.0
info:
  title: Airschool Public API
  version: '2026-09-11'
  description: Search, enrich, and resolve public business data with Airschool.
  x-airscale-source-repository: ViceScale/airscale-code
  x-airscale-source-sha: 1de19e1b70a052a4b8d9c2075021a7e5e7a94d51
servers:
  - url: https://api.airscale.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search and discovery
    description: Search people, companies, and the web.
  - name: Contact data
    description: Find professional and personal contact data.
  - name: Profiles and reverse lookup
    description: Extract profiles or resolve a person from known contact data.
  - name: Post engagement
    description: Retrieve and enrich people who liked or commented on LinkedIn posts.
  - name: Account
    description: Inspect workspace account state.
  - name: Miscellaneous
    description: Check WhatsApp availability, Meta ads, and email deliverability.
paths:
  /v1/domain-to-linkedin:
    post:
      tags:
        - Profiles and reverse lookup
      summary: Find a LinkedIn company URL from a domain
      description: >-
        Accepts only a company domain and returns only its LinkedIn company URL.
        Requires a current coded workspace API key; legacy Bubble-only keys are
        unsupported. The lookup deadline is 120 seconds; allow 130 seconds in
        the client. Billing runs asynchronously and never delays or changes the
        lookup result, including when credits are insufficient. Authentication
        and result storage must be available.
      operationId: findCompanyLinkedinUrl
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Use the same key for transport retries of the same domain. Stored
            responses replay for seven days without another lookup or charge.
            In-flight duplicates return 409 with Retry-After: 2. Reusing a key
            with a different domain or after expiry returns 409. A new key
            starts a new operation. Without a key every request is a new
            operation.
          schema:
            type: string
            minLength: 1
            maxLength: 200
            pattern: ^[!-~]+$
          example: company-lookup-001
      requestBody:
        required: true
        description: 'Exactly one domain field. Maximum JSON body size: 4 KiB.'
        content:
          application/json:
            schema:
              type: object
              required:
                - domain
              additionalProperties: false
              properties:
                domain:
                  type: string
                  minLength: 1
                  description: >-
                    A company hostname without scheme, path, port, or
                    credentials. Case and a leading www. are normalized.
            examples:
              domain:
                summary: Company domain
                value:
                  domain: example.org
      responses:
        '200':
          description: >-
            A canonical LinkedIn company URL. Creates one asynchronous
            0.5-credit charge.
          content:
            application/json:
              schema:
                type: object
                required:
                  - linkedin_company_url
                additionalProperties: false
                properties:
                  linkedin_company_url:
                    type: string
                    format: uri
                    pattern: ^https://www\.linkedin\.com/company/[^/?#]+$
              examples:
                success:
                  summary: Illustrative company match
                  value:
                    linkedin_company_url: https://www.linkedin.com/company/example-company-000000
        '400':
          description: Invalid JSON, domain, extra body fields, or Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: No matching LinkedIn company URL found. Not charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            Operation in progress, key reused for a different domain, or expired
            key. Retry in-flight operations with the same key; use a new key for
            conflicts or expiry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            Retry-After:
              description: 'Present for an in-flight duplicate: retry after 2 seconds.'
              schema:
                type: string
              example: '2'
        '413':
          description: JSON request body exceeds 4 KiB.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            180 requests per minute per workspace exceeded. Retry with bounded
            backoff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Authentication, result storage, or lookup temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '504':
          description: Lookup deadline exhausted. Not charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      additionalProperties: true
      properties:
        error:
          type: string
        message:
          type: string
  responses:
    Unauthorized:
      description: The Bearer token is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Use an Airschool workspace API key. Never expose the key in client-side
        code.

````