# Search Companies

Look up companies by identifier. Returns a preview of each company profile.

Accepted identifiers (at least one required per company):
- Lusha company id
- name
- domain

Up to 100 companies per request. Each result includes a has field listing the data available via Enrich Companies.

Pass a signals filter to narrow results to companies showing specific activity (e.g. headcount growth, hiring surge).

> Billing: Charged per successful result via the api_search action.

Endpoint: POST /v3/companies/search
Security: ApiKeyAuth

## Request fields (application/json):

  - `companies` (array, required)

  - `companies.clientReferenceId` (string)
    Example: "comp-ref-1"

  - `companies.id` (string)
    Example: "16303253"

  - `companies.name` (string)
    Example: "Lusha"

  - `companies.domain` (string)
    Example: "lusha.com"

  - `options` (object)
    Additional options for search requests

  - `options.includePartialProfiles` (boolean)
    Include partial profiles in results
    Example: true

  - `signals` (object)

  - `signals.types` (array, required)
    Enum: "allSignals", "websiteTrafficDecrease", "websiteTrafficIncrease", "itSpendIncrease", "itSpendDecrease", "surgeInHiring", "headcountIncrease1m", "headcountIncrease3m", "headcountIncrease6m", "headcountIncrease12m", "headcountDecrease1m", "headcountDecrease3m", "headcountDecrease6m", "headcountDecrease12m", "surgeInHiringByDepartment", "surgeInHiringByLocation", "riskNews", "commercialActivityNews", "corporateStrategyNews", "financialEventsNews", "peopleNews", "marketIntelligenceNews", "productActivityNews"

  - `signals.startDate` (string)
    Example: "2025-01-01"

  - `signals.maxResultsPerSignal` (integer)
    Example: 10

## Response 200 fields (application/json):

  - `requestId` (string)

  - `results` (array)

  - `results.clientReferenceId` (string)
    Example: "comp-ref-1"

  - `results.id` (string)
    Example: "16303253"

  - `results.name` (string)
    Example: "Lusha"

  - `results.domain` (string)
    Example: "www.lusha.com"

  - `results.employeeCount` (object)

  - `results.employeeCount.exact` (integer)
    Example: 364

  - `results.employeeCount.min` (integer)
    Example: 201

  - `results.employeeCount.max` (integer)
    Example: 500

  - `results.industry` (string)
    Example: "Technology, Information & Media"

  - `results.location` (object)

  - `results.location.city` (string)
    Example: "London"

  - `results.location.state` (string)
    Example: "England"

  - `results.location.country` (string)
    Example: "United Kingdom"

  - `results.location.countryIso2` (string)
    Example: "GB"

  - `results.location.continent` (string)
    Example: "Europe"

  - `results.socialLinks` (object)

  - `results.socialLinks.linkedin` (string)
    Example: "https://www.linkedin.com/company/lushadata"

  - `results.has` (array)
    Available data points that can be revealed via Enrich Companies. Includes base firmographic fields plus new revealable fields: employeesByDepartment, employeesByLocation, employeesBySeniority, competitors, businessModel, phones, emails, keywords, socialLinks.
    Example: ["alternativeName","alternativeDomains","description","companyType","yearFounded","subIndustry","specialities","sicCodes","naicsCodes","additionalLocations","linkedinFollowers","popularityTier","logoUrl","employeesByDepartment","employeesByLocation","employeesBySeniority","competitors","businessModel","phones","emails","keywords","socialLinks"]

  - `results.canReveal` (array)
    Data fields that can be revealed via Enrich Companies, with the credit cost per field. A cost of 0 means the field has already been revealed for this account.
    Example: [{"field":"employeesByDepartment","credits":1},{"field":"employeesByLocation","credits":1},{"field":"employeesBySeniority","credits":1},{"field":"competitors","credits":1},{"field":"intent","credits":0}]

  - `results.canReveal.field` (string)
    Enum: "emails", "phones"

  - `results.canReveal.credits` (integer)
    Credit cost (0 when already revealed for this account)
    Example: 1

  - `results.signalTypes` (array)
    Example: ["headcountIncrease3m"]

  - `results.error` (object)
    Per-item error in a batch response

  - `results.error.code` (string)
    Enum: "NOT_FOUND", "COMPLIANCE_RESTRICTED", "ENRICH_FAILED"

  - `results.error.message` (string)
    Example: "Contact not found"

  - `billing` (object)
    Credit usage summary for a V3 API request

  - `billing.creditsCharged` (integer)
    Total credits charged for this request
    Example: 3

  - `billing.resultsReturned` (integer)
    Number of successful results returned
    Example: 1

## Response 400 fields (application/json):

  - `statusCode` (integer, required)
    HTTP status code
    Example: 400

  - `message` (string, required)
    Error message
    Example: "Validation failed"

  - `errors` (array)
    Detailed error messages (optional, only for validation errors)
    Example: ["entityType must be one of: contact, company"]


