> ## 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.

# Find companies

> Search companies using firmographic, location, event, intent, and technology filters. Rate limit: 6 requests per second per workspace.

Search companies by firmographic, location, event, intent, and technology filters, then page through the matching organizations.

> [!NOTE]
>
> Search shares a limit of 6 requests per second per workspace with [Company filter values](https://docs.airscale.io/api-reference/find-companies/filter-values.md). It costs 0.1 credits per returned company; zero returned rows cost zero credits. At least 0.1 credits must be available before Search begins.

When `next_cursor` is not `null`, send the exact value unchanged as `cursor` with the same filters. Do not decode, construct, or edit the cursor. Cursor pagination preserves the original page size and can traverse up to 10,000 companies for one search.

After a `429`, wait for the next second and retry with bounded exponential backoff. For temporary `502` or `503` responses, retry with increasing delays and a fixed retry limit. If errors persist, stop retrying and contact support.

## Company fields

`rows` contains public company records. Fields vary with available data; the following list is illustrative, not a set of required fields.

| Field | Meaning |
| - | - |
| `name`, `description` | Company name and description. |
| `domain`, `website` | Company domain and website URL. |
| `linkedinProfile` | LinkedIn company profile URL when available. |
| `logo` | Company logo URL when available. |
| `countryName`, `cityName` | Company location. |
| `employeeRange`, `revenueRange` | Available headcount and revenue ranges. |

The response does not guarantee a stable company ID. Use the available domain or LinkedIn URL to help match records, and handle missing fields.

## Discover filter values

Use [Company filter values](https://docs.airscale.io/api-reference/find-companies/filter-values.md#discovery-examples) to discover city, region, industry, intent-topic, and technology values, then send the returned `value` unchanged. Industry and topic values come from canonical lookup lists; `keywords` and `companyName` accept free text.

Use JSON booleans for `hasWebsite` and `isPublicCompany`, not strings such as `"true"`. The largest fixed buckets are `10001+` for employee size, `10T+` for revenue, `20+` for company age, and `1001+` for location count.

## Next step

Use [Company filter values](https://docs.airscale.io/api-reference/find-companies/filter-values.md) to discover accepted values, [Find people](https://docs.airscale.io/api-reference/find-people.md) to search for roles at identified companies, or [Authentication](https://docs.airscale.io/api-reference/authentication.md) before integrating.


## OpenAPI

````yaml openapi.json POST /v1/find-companies
openapi: 3.1.0
info:
  title: Airscale Public API
  version: '2026-09-11'
  description: Search, enrich, and resolve public business data with Airscale.
  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: LinkedIn content
    description: >-
      Search LinkedIn posts, read profile and company feeds, and retrieve
      profile comments and comment reactions.
  - name: Account
    description: Inspect workspace account state.
  - name: Miscellaneous
    description: >-
      Find website technologies and check WhatsApp availability, Meta ads, and
      email deliverability.
paths:
  /v1/find-companies:
    post:
      tags:
        - Search and discovery
      summary: Find companies
      description: >-
        Searches for companies using firmographic, geographic, event, intent,
        technology, and website filters. The JSON request body is limited to 256
        KiB.
      operationId: findCompanies
      requestBody:
        required: true
        description: >-
          Provide at least one real company filter. Defaults such as eventWindow
          and locationMatch do not count as filters.
        content:
          application/json:
            schema:
              type: object
              required:
                - filters
              additionalProperties: false
              properties:
                filters:
                  type: object
                  minProperties: 1
                  additionalProperties: false
                  properties:
                    country:
                      description: Matches a recognized country name or ISO alpha-2 code.
                      allOf:
                        - $ref: '#/components/schemas/StringOrStringArray'
                    region:
                      description: >-
                        Matches a canonical region code, Region|Country value,
                        or a region name scoped by country. Discover canonical
                        values with GET /v1/find-companies/filter-values.
                      allOf:
                        - $ref: '#/components/schemas/StringOrStringArray'
                    city:
                      description: >-
                        Matches a resolvable city value. Discover accepted
                        values with GET /v1/find-companies/filter-values.
                      allOf:
                        - $ref: '#/components/schemas/StringOrStringArray'
                    industry:
                      description: >-
                        Matches a canonical company industry. Discover accepted
                        values with GET /v1/find-companies/filter-values.
                      allOf:
                        - $ref: '#/components/schemas/StringOrStringArray'
                    size:
                      description: Matches a fixed employee-count range.
                      oneOf:
                        - type: string
                          enum:
                            - 1-10
                            - 11-50
                            - 51-200
                            - 201-500
                            - 501-1000
                            - 1001-5000
                            - 5001-10000
                            - 10001+
                        - type: array
                          minItems: 1
                          items:
                            type: string
                            enum:
                              - 1-10
                              - 11-50
                              - 51-200
                              - 201-500
                              - 501-1000
                              - 1001-5000
                              - 5001-10000
                              - 10001+
                    revenue:
                      description: Matches a fixed company revenue range.
                      oneOf:
                        - type: string
                          enum:
                            - 0-500K
                            - 500K-1M
                            - 1M-5M
                            - 5M-10M
                            - 10M-25M
                            - 25M-75M
                            - 75M-200M
                            - 200M-500M
                            - 500M-1B
                            - 1B-10B
                            - 10B-100B
                            - 100B-1T
                            - 1T-10T
                            - 10T+
                        - type: array
                          minItems: 1
                          items:
                            type: string
                            enum:
                              - 0-500K
                              - 500K-1M
                              - 1M-5M
                              - 5M-10M
                              - 10M-25M
                              - 25M-75M
                              - 75M-200M
                              - 200M-500M
                              - 500M-1B
                              - 1B-10B
                              - 10B-100B
                              - 100B-1T
                              - 1T-10T
                              - 10T+
                    age:
                      description: Matches a fixed company age range.
                      oneOf:
                        - type: string
                          enum:
                            - 0-3
                            - 3-6
                            - 6-10
                            - 10-20
                            - 20+
                        - type: array
                          minItems: 1
                          items:
                            type: string
                            enum:
                              - 0-3
                              - 3-6
                              - 6-10
                              - 10-20
                              - 20+
                    techStack:
                      description: >-
                        Matches a technology used by the company. Discover
                        accepted values with GET
                        /v1/find-companies/filter-values.
                      allOf:
                        - $ref: '#/components/schemas/StringOrStringArray'
                    keywords:
                      description: Matches text found on the company website.
                      allOf:
                        - $ref: '#/components/schemas/StringOrStringArray'
                    topics:
                      description: >-
                        Matches a canonical business-intent topic. Discover
                        accepted values with GET
                        /v1/find-companies/filter-values.
                      allOf:
                        - $ref: '#/components/schemas/StringOrStringArray'
                    events:
                      description: Matches a fixed recent company event.
                      oneOf:
                        - type: string
                          enum:
                            - increase_in_customer_service_department
                            - hiring_in_finance_department
                            - hiring_in_support_department
                            - increase_in_engineering_department
                            - decrease_in_customer_service_department
                            - hiring_in_operations_department
                            - hiring_in_creative_department
                            - decrease_in_engineering_department
                            - hiring_in_sales_department
                            - increase_in_operations_department
                            - hiring_in_trade_department
                            - decrease_in_marketing_department
                            - increase_in_marketing_department
                            - hiring_in_marketing_department
                            - hiring_in_health_department
                            - hiring_in_education_department
                            - increase_in_all_departments
                            - decrease_in_all_departments
                            - decrease_in_sales_department
                            - decrease_in_operations_department
                            - hiring_in_professional_service_department
                            - hiring_in_human_resources_department
                            - increase_in_sales_department
                            - hiring_in_legal_department
                            - hiring_in_unknown_department
                            - hiring_in_engineering_department
                            - company_award
                            - new_product
                            - employee_joined_company
                            - merger_and_acquisitions
                            - lawsuits_and_legal_issues
                            - outages_and_security_breaches
                            - closing_office
                            - new_investment
                            - new_office
                            - new_partnership
                            - cost_cutting
                            - new_funding_round
                            - award
                            - ipo_announcement
                        - type: array
                          minItems: 1
                          items:
                            type: string
                            enum:
                              - increase_in_customer_service_department
                              - hiring_in_finance_department
                              - hiring_in_support_department
                              - increase_in_engineering_department
                              - decrease_in_customer_service_department
                              - hiring_in_operations_department
                              - hiring_in_creative_department
                              - decrease_in_engineering_department
                              - hiring_in_sales_department
                              - increase_in_operations_department
                              - hiring_in_trade_department
                              - decrease_in_marketing_department
                              - increase_in_marketing_department
                              - hiring_in_marketing_department
                              - hiring_in_health_department
                              - hiring_in_education_department
                              - increase_in_all_departments
                              - decrease_in_all_departments
                              - decrease_in_sales_department
                              - decrease_in_operations_department
                              - hiring_in_professional_service_department
                              - hiring_in_human_resources_department
                              - increase_in_sales_department
                              - hiring_in_legal_department
                              - hiring_in_unknown_department
                              - hiring_in_engineering_department
                              - company_award
                              - new_product
                              - employee_joined_company
                              - merger_and_acquisitions
                              - lawsuits_and_legal_issues
                              - outages_and_security_breaches
                              - closing_office
                              - new_investment
                              - new_office
                              - new_partnership
                              - cost_cutting
                              - new_funding_round
                              - award
                              - ipo_announcement
                    locations:
                      description: >-
                        Matches a fixed range for the number of company
                        locations.
                      oneOf:
                        - type: string
                          enum:
                            - 0-1
                            - 2-5
                            - 6-20
                            - 21-50
                            - 51-100
                            - 101-1000
                            - 1001+
                        - type: array
                          minItems: 1
                          items:
                            type: string
                            enum:
                              - 0-1
                              - 2-5
                              - 6-20
                              - 21-50
                              - 51-100
                              - 101-1000
                              - 1001+
                    companyName:
                      description: Matches the company name.
                      allOf:
                        - $ref: '#/components/schemas/StringOrStringArray'
                    eventWindow:
                      description: >-
                        Sets the recent-event window. Null or blank values use
                        the default 30 days.
                      oneOf:
                        - type: string
                          enum:
                            - 30 days
                            - 60 days
                            - 90 days
                            - 120 days
                        - type: 'null'
                        - type: string
                          pattern: ^\s*$
                      default: 30 days
                    locationMatch:
                      description: >-
                        Controls whether location filters match headquarters
                        only or headquarters and operating locations. Null or
                        blank values use the default hqOnly.
                      oneOf:
                        - type: string
                          enum:
                            - hqOnly
                            - hqOperating
                        - type: 'null'
                        - type: string
                          pattern: ^\s*$
                      default: hqOnly
                    hasWebsite:
                      type:
                        - boolean
                        - 'null'
                      description: >-
                        Matches companies by whether a website is present; null
                        leaves this criterion unset.
                    isPublicCompany:
                      type:
                        - boolean
                        - 'null'
                      description: >-
                        Matches companies by public-company status; null leaves
                        this criterion unset.
                  if:
                    not:
                      anyOf:
                        - required:
                            - country
                        - required:
                            - region
                        - required:
                            - city
                        - required:
                            - industry
                        - required:
                            - techStack
                        - required:
                            - keywords
                        - required:
                            - topics
                        - required:
                            - companyName
                        - required:
                            - size
                        - required:
                            - revenue
                        - required:
                            - age
                        - required:
                            - events
                        - required:
                            - locations
                        - required:
                            - hasWebsite
                          properties:
                            hasWebsite:
                              type: boolean
                        - required:
                            - isPublicCompany
                          properties:
                            isPublicCompany:
                              type: boolean
                  then:
                    not: {}
                page:
                  description: >-
                    A zero-based page supplied as an integer JSON number or one
                    of the equivalent canonical decimal strings. OpenAPI
                    intentionally uses canonical decimal strings even though
                    runtime Number() accepts additional spellings.
                  oneOf:
                    - type: integer
                      minimum: 0
                    - type: string
                      pattern: ^(?:0|[1-9][0-9]*)$
                  default: 0
                size:
                  description: >-
                    A page size from 1 through 100 supplied as an integer JSON
                    number or one of the equivalent canonical decimal strings.
                    OpenAPI intentionally uses canonical decimal strings even
                    though runtime Number() accepts additional spellings.
                  oneOf:
                    - type: integer
                      minimum: 1
                      maximum: 100
                    - type: string
                      pattern: ^(?:[1-9]|[1-9][0-9]|100)$
                  default: 50
                cursor:
                  type: string
                  pattern: ^fc_
                  description: >-
                    An opaque fc_ cursor returned by the preceding page. When
                    supplied, its saved page size takes precedence over new page
                    or size values.
            examples:
              audience:
                summary: Synthetic company audience
                value:
                  filters:
                    country:
                      - FR
                    size:
                      - 11-50
                    keywords:
                      - workflow automation
                  size: 25
      responses:
        '200':
          description: A page of matching sanitized public company records.
          content:
            application/json:
              schema:
                type: object
                required:
                  - rows
                  - total
                  - page
                  - size
                  - next_cursor
                additionalProperties: false
                properties:
                  rows:
                    type: array
                    items:
                      $ref: '#/components/schemas/CompanyRow'
                  total:
                    type: number
                  page:
                    type: number
                  size:
                    type: number
                  next_cursor:
                    type:
                      - string
                      - 'null'
              examples:
                reservedData:
                  summary: Synthetic company page using reserved example data
                  value:
                    rows:
                      - name: Example Company
                        domain: example.com
                        logo: https://example.com/logo.png
                        website: https://example.com
                        countryName: Example Country
                        cityName: Example City
                        region: null
                        location: Example City, Example Country
                        industry: null
                        linkedinProfile: null
                        employeeRange: null
                        revenueRange: null
                        description: null
                        naics: null
                        naicsDescription: null
                        sicCode: null
                        sicDescription: null
                        businessIntentTopics: null
                        events: null
                    total: 240
                    page: 0
                    size: 25
                    next_cursor: >-
                      fc_eyJ2IjoxLCJtb2RlIjoicGFnZSIsInBhZ2UiOjEsInBhZ2VTaXplIjoyNSwicHJvdmlkZXJTaXplIjoxMDAwMH0
        '400':
          description: The request is invalid or contains an unsupported field or value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: >-
            The workspace cannot complete this request because access or
            available credits are insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: The JSON request body exceeds the 256 KiB limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            The workspace rate limit has been exceeded. Try again after the
            current window resets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: >-
            The request could not be completed because of an unexpected server
            error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: >-
            The request could not be completed because a required service
            returned an unsuccessful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: The request is temporarily unavailable. Try again later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    StringOrStringArray:
      oneOf:
        - type: string
          minLength: 1
          pattern: \S
        - type: array
          minItems: 1
          items:
            type: string
            minLength: 1
            pattern: \S
    CompanyRow:
      type: object
      additionalProperties: true
      description: >-
        A public company record. Other public company fields may be included;
        check for missing or null values before using them.
      properties:
        name:
          type:
            - string
            - 'null'
        domain:
          type:
            - string
            - 'null'
        website:
          type:
            - string
            - 'null'
        logo:
          type:
            - string
            - 'null'
        countryName:
          type:
            - string
            - 'null'
        cityName:
          type:
            - string
            - 'null'
        linkedinProfile:
          type:
            - string
            - 'null'
        employeeRange:
          type:
            - string
            - 'null'
        revenueRange:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        naicsDescription:
          type:
            - string
            - 'null'
        sicCode:
          type:
            - string
            - number
            - 'null'
        sicDescription:
          type:
            - string
            - 'null'
        location:
          type:
            - string
            - 'null'
          description: Location text.
        region:
          type:
            - string
            - 'null'
        industry:
          type:
            - string
            - 'null'
        naics:
          type:
            - string
            - number
            - 'null'
        events:
          description: Company events, when requested and available.
        businessIntentTopics:
          description: Business-intent topics, when requested and available.
    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 Airscale workspace API key. Never expose the key in client-side
        code.

````

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