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

# Run a company search

> The company twin of the people search. The filter source is exactly one of: literal `filters`, a stored COMPANY saved search (`savedSearchId` / `savedSearchName`), or a natural-language `query` (converted into filters server-side; criteria it could not map come back as `unresolvedCriteria`). A people saved search answers 422 SAVED_SEARCH_TYPE_MISMATCH.

The response always echoes the RESOLVED `filters`. Page by re-sending the same filter source together with the returned `nextCursor` as `cursor`; `nextCursor` is null on the last page. `total` is the true match count and is only counted on the FIRST page — every cursor page answers `total: null`, so read the count once and carry it.

Rows are the provider's company record (snake_case, ~80 fields, varying by company: names, domains, LinkedIn metadata, industries, NAICS codes, headcount and revenue estimates, funding, technologies, headquarters location) plus Fuse's `isSaved`, which says whether the company is already in one of your company lists.

`filters.headquartersCity` names are geocoded one by one and the resulting city areas are OR-ed together; a name that geocodes to nothing is dropped and the search runs on the rest, so take the values from GET /companies/autocomplete?field=location. Only when not one name resolves is the search refused with 422 CITY_FILTER_UNRESOLVED. `employeeCountV2` is the one range whose lower bound is exclusive: `{ min: 50 }` matches companies with more than 50 employees.

Billing: 2 credits per requested company are pre-checked and 2 credits per company returned are debited.

Errors:
- `402` `INSUFFICIENT_CREDITS` — The balance does not cover the pre-check for this request; nothing was billed.
- `404` `SAVED_SEARCH_NOT_FOUND` — No saved search of yours has that id or exact title.
- `409` `SAVED_SEARCH_NAME_AMBIGUOUS` — Two of your saved searches share that title — reference it by `savedSearchId` instead.
- `422` `VALIDATION_FAILED` — The request failed the declared schema; `param` names the offending key and `message` quotes the rule it broke.
- `422` `SAVED_SEARCH_TYPE_MISMATCH` — The saved search exists but stores the other kind of filters; `param` is `savedSearchId`.
- `422` `SAVED_SEARCH_INVALID` — The STORED filters no longer form a runnable company search — the blob is empty, or every value in it was retired. A filterless stored search is refused here rather than run as a whole-universe search.
- `422` `QUERY_FILTERS_INVALID` — The natural-language `query` produced no usable filter; name concrete criteria.
- `422` `CITY_FILTER_UNRESOLVED` — NOT ONE of the `filters.headquartersCity` names geocoded to a city area, so the search was refused rather than run worldwide; names that do geocode are OR-ed together and a name that does not is dropped, so this fires only when every name fails. `param` is `filters.headquartersCity`.
- `429` `RATE_LIMITED` — Per-token rate limit for this bucket exhausted; retry after the window in the RateLimit-Reset header.
- `500` `UNEXPECTED_ERROR` — The request failed inside the service; nothing was billed and the request_id identifies the failure.

Requires one of the following token scopes: companies.



## OpenAPI

````yaml /openapi.json post /business/companies/search
openapi: 3.1.0
info:
  title: Fuse Business API
  version: 1.0.0
  description: >-
    External API for lists, campaigns, prospect search and contacts.
    Authenticate with your API token as HTTP Basic. All paths are under /api/v1.
servers:
  - url: https://api.tryfuse.ai/api/v1
    description: Production
security:
  - basicAuth: []
tags:
  - name: Lists
  - name: Custom columns
  - name: Smart columns
  - name: Exports
  - name: Campaigns
  - name: Knowledge hubs
  - name: Analytics
  - name: Website intent
  - name: Account
  - name: Prospect search
  - name: Campaign steps
  - name: Scheduled sends
  - name: Campaign templates
  - name: Agents
  - name: Research
  - name: Company search
  - name: Saved searches
  - name: Folders
  - name: Contacts
paths:
  /business/companies/search:
    post:
      tags:
        - Company search
      summary: Run a company search
      description: >-
        The company twin of the people search. The filter source is exactly one
        of: literal `filters`, a stored COMPANY saved search (`savedSearchId` /
        `savedSearchName`), or a natural-language `query` (converted into
        filters server-side; criteria it could not map come back as
        `unresolvedCriteria`). A people saved search answers 422
        SAVED_SEARCH_TYPE_MISMATCH.


        The response always echoes the RESOLVED `filters`. Page by re-sending
        the same filter source together with the returned `nextCursor` as
        `cursor`; `nextCursor` is null on the last page. `total` is the true
        match count and is only counted on the FIRST page — every cursor page
        answers `total: null`, so read the count once and carry it.


        Rows are the provider's company record (snake_case, ~80 fields, varying
        by company: names, domains, LinkedIn metadata, industries, NAICS codes,
        headcount and revenue estimates, funding, technologies, headquarters
        location) plus Fuse's `isSaved`, which says whether the company is
        already in one of your company lists.


        `filters.headquartersCity` names are geocoded one by one and the
        resulting city areas are OR-ed together; a name that geocodes to nothing
        is dropped and the search runs on the rest, so take the values from GET
        /companies/autocomplete?field=location. Only when not one name resolves
        is the search refused with 422 CITY_FILTER_UNRESOLVED. `employeeCountV2`
        is the one range whose lower bound is exclusive: `{ min: 50 }` matches
        companies with more than 50 employees.


        Billing: 2 credits per requested company are pre-checked and 2 credits
        per company returned are debited.


        Errors:

        - `402` `INSUFFICIENT_CREDITS` — The balance does not cover the
        pre-check for this request; nothing was billed.

        - `404` `SAVED_SEARCH_NOT_FOUND` — No saved search of yours has that id
        or exact title.

        - `409` `SAVED_SEARCH_NAME_AMBIGUOUS` — Two of your saved searches share
        that title — reference it by `savedSearchId` instead.

        - `422` `VALIDATION_FAILED` — The request failed the declared schema;
        `param` names the offending key and `message` quotes the rule it broke.

        - `422` `SAVED_SEARCH_TYPE_MISMATCH` — The saved search exists but
        stores the other kind of filters; `param` is `savedSearchId`.

        - `422` `SAVED_SEARCH_INVALID` — The STORED filters no longer form a
        runnable company search — the blob is empty, or every value in it was
        retired. A filterless stored search is refused here rather than run as a
        whole-universe search.

        - `422` `QUERY_FILTERS_INVALID` — The natural-language `query` produced
        no usable filter; name concrete criteria.

        - `422` `CITY_FILTER_UNRESOLVED` — NOT ONE of the
        `filters.headquartersCity` names geocoded to a city area, so the search
        was refused rather than run worldwide; names that do geocode are OR-ed
        together and a name that does not is dropped, so this fires only when
        every name fails. `param` is `filters.headquartersCity`.

        - `429` `RATE_LIMITED` — Per-token rate limit for this bucket exhausted;
        retry after the window in the RateLimit-Reset header.

        - `500` `UNEXPECTED_ERROR` — The request failed inside the service;
        nothing was billed and the request_id identifies the failure.


        Requires one of the following token scopes: companies.
      operationId: searchCompanies
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                filters:
                  type: object
                  properties:
                    nameLike:
                      type: array
                      items:
                        type: string
                        maxLength: 500
                      description: >-
                        Free text: company-name fragments of at most 500 chars
                        each, matched fuzzily against the company NAME only
                        (never the description). Several fragments are OR-joined
                        (provider `nameLike.anyOf`); resolve a real company to
                        its canonical name with GET
                        /companies/autocomplete?field=company.
                    domains:
                      type: array
                      items:
                        type: string
                      description: >-
                        Free text: exact website hosts (e.g. stripe.com),
                        forwarded to the provider unchanged — unlike the people
                        search this filter does NOT strip a scheme, a www.
                        prefix or a path, so send the bare host or it matches
                        nothing. Several domains are OR-joined.
                    keywords:
                      type: array
                      items:
                        type: string
                      description: >-
                        Free-text keywords matched against company names and
                        descriptions; any may match.
                    status:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Operating-status entries whose `value` is one of
                        exactly: active, acquired, closed. An off-list value is
                        not rejected by this API: the search comes back empty
                        (or fails upstream) with no error naming the field, so
                        check the value against the list first. Include values
                        are OR-joined (provider `anyOf`) and every exclude value
                        is removed (`noneOf`); this filter ANDs with the others.
                    tags:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Company-tag entries whose `value` is a slug from
                        `companyTags` in GET /companies/filter-options:
                        raised-from-top-vc, venture-backed-startup,
                        is-government, is-school. An off-list value is not
                        rejected by this API: the search comes back empty (or
                        fails upstream) with no error naming the field, so check
                        the value against the list first. Include values are
                        OR-joined (provider `anyOf`) and every exclude value is
                        removed (`noneOf`); this filter ANDs with the others.
                    industriesV2:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Industry entries whose `value` is one of the
                        `fiberIndustries` values in GET
                        /companies/filter-options, copied exactly as listed
                        (e.g. Software, Finance). An off-list value is not
                        rejected by this API: the search comes back empty (or
                        fails upstream) with no error naming the field, so check
                        the value against the list first. Include values are
                        OR-joined (provider `anyOf`) and every exclude value is
                        removed (`noneOf`); this filter ANDs with the others.
                    linkedinIndustries:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        LinkedIn-industry entries whose `value` is one of the
                        `linkedinIndustries` values in GET
                        /companies/filter-options, copied exactly as listed
                        (e.g. Software Development) — a much finer taxonomy than
                        `industriesV2`. An off-list value is not rejected by
                        this API: the search comes back empty (or fails
                        upstream) with no error naming the field, so check the
                        value against the list first. Include values are
                        OR-joined (provider `anyOf`) and every exclude value is
                        removed (`noneOf`); this filter ANDs with the others.
                    crunchbaseCategories:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Crunchbase-category entries whose `value` is one of the
                        `crunchbaseIndustries` values in GET
                        /companies/filter-options, copied exactly as listed
                        (e.g. Financial Services). An off-list value is not
                        rejected by this API: the search comes back empty (or
                        fails upstream) with no error naming the field, so check
                        the value against the list first. Include values are
                        OR-joined (provider `anyOf`) and every exclude value is
                        removed (`noneOf`); this filter ANDs with the others.
                    crunchbaseCategoryGroups:
                      type: array
                      items:
                        type: string
                      description: >-
                        Crunchbase category groups as plain strings copied
                        verbatim (case-sensitive) from
                        `crunchbaseCategoryGroups` in GET
                        /companies/filter-options (e.g. Financial Services) —
                        the broad parent of `crunchbaseCategories`. An off-list
                        value is not rejected by this API: the search comes back
                        empty (or fails upstream) with no error naming the
                        field, so check the value against the list first.
                        Several groups are OR-joined (provider `anyOf`); this
                        filter has no exclude form.
                    naicsCodes:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        NAICS entries whose `value` is the code, not the title
                        (`naicsCodes[].code` in GET /companies/filter-options,
                        e.g. 513210 for Software Publishers; 2- to 6-digit codes
                        are all accepted, a shorter code being the broader
                        sector). An off-list value is not rejected by this API:
                        the search comes back empty (or fails upstream) with no
                        error naming the field, so check the value against the
                        list first. Include values are OR-joined (provider
                        `anyOf`) and every exclude value is removed (`noneOf`);
                        this filter ANDs with the others.
                    headquartersCountryCode:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Headquarters-country entries whose `value` is the
                        country's three-letter `apiCode` from `countries` in GET
                        /companies/filter-options (e.g. USA, DEU). The
                        two-letter `isoCodeAlpha2` in the same row (US, DE) is
                        NOT accepted — the provider rejects it and the whole
                        search fails. Include values are OR-joined (provider
                        `anyOf`) and every exclude value is removed (`noneOf`);
                        this filter ANDs with the others.
                    headquartersStateName:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Headquarters state/province entries whose `value` is the
                        full state or province name (e.g. Florida, California).
                    headquartersCity:
                      type: array
                      items:
                        type: string
                        minLength: 1
                        maxLength: 200
                      maxItems: 25
                      description: >-
                        Up to 25 fully qualified place names from GET
                        /companies/autocomplete?field=location (e.g. Dallas,
                        Texas, United States); each is geocoded independently to
                        its city bounds and the areas are OR-ed together (no
                        exclusion). A name that geocodes to nothing is dropped
                        and the search runs on the names that did resolve — take
                        the values from the typeahead so every one of them
                        counts — and only when NOT ONE of them resolves is the
                        search refused rather than run worldwide (422
                        CITY_FILTER_UNRESOLVED).
                    employeeCountV2:
                      type: object
                      properties:
                        min:
                          type: number
                          description: >-
                            Lower bound, inclusive — except on
                            `employeeCountV2`, whose lower bound is exclusive
                            (see that field).
                        max:
                          type: number
                          description: Inclusive upper bound.
                      description: >-
                        Headcount range `{ min?, max? }`; any whole number is
                        taken, but each bound snaps to one of the accepted
                        values 0, 1, 10, 50, 200, 500, 1000, 5000, 10000 (min
                        rounds down, max rounds up). The lower bound is then
                        EXCLUSIVE and the upper bound inclusive, so `{ min: 50
                        }` matches companies with MORE than 50 employees; pass
                        the bucket below the headcount you want to keep.
                    revenueUSD:
                      type: object
                      properties:
                        min:
                          type: number
                          description: >-
                            Lower bound, inclusive — except on
                            `employeeCountV2`, whose lower bound is exclusive
                            (see that field).
                        max:
                          type: number
                          description: Inclusive upper bound.
                      description: >-
                        Estimated annual revenue range `{ min?, max? }`; the
                        accepted values are whole US dollars, not millions
                        (5000000 means $5M), and both bounds are inclusive.
                    totalFundingUSD:
                      type: object
                      properties:
                        min:
                          type: number
                          description: >-
                            Lower bound, inclusive — except on
                            `employeeCountV2`, whose lower bound is exclusive
                            (see that field).
                        max:
                          type: number
                          description: Inclusive upper bound.
                      description: >-
                        Total funding raised range `{ min?, max? }`; the
                        accepted values are whole US dollars, not millions
                        (5000000 means $5M), and both bounds are inclusive.
                    lastFundingUSD:
                      type: object
                      properties:
                        min:
                          type: number
                          description: >-
                            Lower bound, inclusive — except on
                            `employeeCountV2`, whose lower bound is exclusive
                            (see that field).
                        max:
                          type: number
                          description: Inclusive upper bound.
                      description: >-
                        Size range of the most recent funding round `{ min?,
                        max? }`; the accepted values are whole US dollars, not
                        millions (5000000 means $5M), and both bounds are
                        inclusive.
                    stage:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Funding-stage entries whose `value` is one of exactly:
                        pre_seed, seed, series_a, series_b, series_c, series_d,
                        series_e, series_f, series_g, series_h, series_i,
                        series_j, public, acquired, closed, private_equity,
                        venture_other, no_funding_yet, unknown. No endpoint
                        serves this list — it is fixed here. An off-list value
                        is not rejected by this API: the search comes back empty
                        (or fails upstream) with no error naming the field, so
                        check the value against the list first. Include values
                        are OR-joined (provider `anyOf`) and every exclude value
                        is removed (`noneOf`); this filter ANDs with the others.
                    technologies:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Technology-in-use entries whose `value` is a name from
                        the provider's predefined technology vocabulary,
                        forwarded verbatim, so it must carry the product's own
                        spelling and casing — e.g. Salesforce, Kubernetes,
                        Next.js, Google Analytics, and `AWS` for Amazon Web
                        Services. No endpoint serves this vocabulary yet; the
                        product's own picker offers a curated 141-name subset.
                        An off-list value is not rejected by this API: the
                        search comes back empty (or fails upstream) with no
                        error naming the field, so check the value against the
                        list first. Include values are OR-joined (provider
                        `anyOf`) and every exclude value is removed (`noneOf`);
                        this filter ANDs with the others.
                    investors:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Investor entries whose `value` is the investor's website
                        domain — resolve names with GET
                        /companies/autocomplete?field=company&orgType=investor
                        and send the `domain` from that response, never the
                        investor's name. An off-list value is not rejected by
                        this API: the search comes back empty (or fails
                        upstream) with no error naming the field, so check the
                        value against the list first. Include values are
                        OR-joined (provider `anyOf`) and every exclude value is
                        removed (`noneOf`); this filter ANDs with the others.
                    foundedOn:
                      type: object
                      properties:
                        start:
                          type: string
                          description: Earliest date, ISO-8601 (e.g. 2020-01-01).
                        end:
                          type: string
                          description: Latest date, ISO-8601 (e.g. 2024-12-31).
                      description: >-
                        Founding-date range `{ start?, end? }` as ISO-8601
                        dates.
                    lastFundedOn:
                      type: object
                      properties:
                        start:
                          type: string
                          description: Earliest date, ISO-8601 (e.g. 2020-01-01).
                        end:
                          type: string
                          description: Latest date, ISO-8601 (e.g. 2024-12-31).
                      description: >-
                        Date range of the most recent funding round, `{ start?,
                        end? }` as ISO-8601 dates.
                    acceleratorsV2:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Accelerator entries whose `value` is the
                        `acceleratorSlug` from `accelerators` in GET
                        /companies/filter-options (e.g. ycombinator, techstars);
                        the `acceleratorName` in the same row is NOT accepted.
                        An off-list value is not rejected by this API: the
                        search comes back empty (or fails upstream) with no
                        error naming the field, so check the value against the
                        list first. Include values are OR-joined (provider
                        `anyOf`) and every exclude value is removed (`noneOf`);
                        this filter ANDs with the others.
                    fortuneRankings:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Fortune-list entries whose `value` is one of exactly:
                        fortune-500, fortune-1000 (fortune-1000 contains
                        fortune-500). Any other value is silently DROPPED and
                        the whole filter disappears, so the search then runs
                        with no ranking constraint at all rather than returning
                        nothing. Include values are OR-joined (provider `anyOf`)
                        and every exclude value is removed (`noneOf`); this
                        filter ANDs with the others.
                    officeLocationsV2:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            type: string
                            description: >-
                              The filter value — see the field's own description
                              for its vocabulary.
                          label:
                            type: string
                            description: >-
                              Display label for the value (required; repeat the
                              value when you have no label).
                          status:
                            type: string
                            enum:
                              - include
                              - exclude
                            description: >-
                              `include` matches the value; `exclude` removes
                              companies carrying it (includes OR together, every
                              exclude applies).
                        required:
                          - value
                          - label
                          - status
                      description: >-
                        Office-location entries whose `value` is a country's
                        three-letter `apiCode` from `countries` in GET
                        /companies/filter-options (e.g. USA) — the same
                        vocabulary as `headquartersCountryCode`, but matching
                        ANY office rather than only the headquarters. An
                        off-list value is not rejected by this API: the search
                        comes back empty (or fails upstream) with no error
                        naming the field, so check the value against the list
                        first. Include values are OR-joined (provider `anyOf`)
                        and every exclude value is removed (`noneOf`); this
                        filter ANDs with the others.
                    linkedinSlugs:
                      type: array
                      items:
                        type: string
                      description: >-
                        Free text: LinkedIn company slugs — only the part after
                        linkedin.com/company/ (e.g. stripe), forwarded
                        unchanged, so a full URL matches nothing. Several slugs
                        are OR-joined.
                  description: >-
                    Literal filters, one of the four filter sources. Company
                    filters in the search vocabulary: include/exclude fields
                    take `[{ status, value, label }]` entries (`label` is
                    required), list fields arrays of strings, ranges `{ min, max
                    }` and date ranges `{ start, end }` — enum vocabularies come
                    from GET /companies/filter-options, names and places from
                    GET /companies/autocomplete. Must contain at least one
                    non-empty value.
                savedSearchId:
                  type: string
                  description: >-
                    Id of one of your COMPANY saved searches to take the filters
                    from instead of `filters` (a people saved search answers 422
                    SAVED_SEARCH_TYPE_MISMATCH).
                savedSearchName:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: >-
                    Exact title of one of your company saved searches to take
                    the filters from instead of `filters`; two searches sharing
                    the title answer 409 SAVED_SEARCH_NAME_AMBIGUOUS.
                query:
                  type: string
                  minLength: 1
                  maxLength: 2000
                  description: >-
                    Natural-language description of the companies to find (max
                    2000 chars), converted into filters server-side instead of
                    `filters`; criteria that could not be mapped come back as
                    `unresolvedCriteria`, and a query yielding no filter answers
                    422 QUERY_FILTERS_INVALID.
                size:
                  type: integer
                  minimum: 1
                  maximum: 100
                  default: 25
                  description: >-
                    Companies per page (1-100, default 25); the search
                    pre-checks 2 credits per requested company and debits 2
                    credits per company returned.
                cursor:
                  type:
                    - string
                    - 'null'
                  description: >-
                    The `nextCursor` returned by the previous page, sent
                    together with the same filter source; null (default) starts
                    from the first page. The match `total` is only counted on
                    the first page — it comes back null on every cursor page.
              description: >-
                Exactly one filter source — `filters`, `savedSearchId`,
                `savedSearchName` or `query` — plus optional paging.
      responses:
        '200':
          description: Success
          headers:
            RateLimit-Limit:
              schema:
                type: integer
              description: Requests permitted in the current window.
            RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            RateLimit-Reset:
              schema:
                type: integer
              description: Seconds until the current window resets.
          content:
            application/json:
              schema:
                type: object
                required:
                  - companies
                  - total
                  - nextCursor
                  - filters
                properties:
                  companies:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
                      required:
                        - isSaved
                      properties:
                        isSaved:
                          type: boolean
                          description: >-
                            Whether this company is already in one of your
                            company lists.
                        preferred_name:
                          type: string
                        names:
                          type: array
                          items:
                            type: string
                        domains:
                          type: array
                          items:
                            type: string
                        linkedin_primary_slug:
                          type:
                            - string
                            - 'null'
                        standard_industries:
                          type: array
                          items:
                            type: string
                        naics_codes:
                          type: array
                          items:
                            type: string
                        tags:
                          type: array
                          items:
                            type: string
                        status_consensus:
                          type:
                            - string
                            - 'null'
                        funding_stage:
                          type:
                            - string
                            - 'null'
                        employee_count_consensus:
                          type:
                            - object
                            - 'null'
                          properties:
                            gte:
                              type: integer
                            lte:
                              type: integer
                        location_consensus:
                          type:
                            - object
                            - 'null'
                          additionalProperties: true
                  total:
                    type:
                      - integer
                      - 'null'
                    description: >-
                      True match count on the first page; null on every cursor
                      page, where the upstream does not count.
                  nextCursor:
                    type:
                      - string
                      - 'null'
                    description: >-
                      Send back as `cursor` with the same filter source for the
                      next page; null on the last page.
                  filters:
                    type: object
                    additionalProperties: true
                    description: The RESOLVED filters the search actually ran.
                  unresolvedCriteria:
                    type: array
                    items:
                      type: string
                    description: >-
                      Only when the source was `query`: criteria in the prose
                      that could not be turned into a filter.
              example:
                companies:
                  - preferred_name: Airbnb
                    names:
                      - AirBed & Breakfast
                      - Airbnb, Inc.
                      - Airbnb
                      - Airbnb Inc
                    domains:
                      - airbnb.com
                      - abnb.me
                      - airbnb.ca
                      - airbnb.co.in
                      - airbnb.com.br
                      - airbnb.co.uk
                      - airbnb.fr
                      - airbnb.it
                      - airbnb.nl
                    websites:
                      - airbnb.com
                    linkedin_primary_slug: airbnb
                    linkedin_slugs:
                      - airbnb
                    linkedin_id: '309694'
                    li_description: >-
                      Airbnb was born in 2007 when two hosts welcomed three
                      guests to their San Francisco home, and has since grown to
                      over 5 million hosts who have welcomed over 2 billion
                      guest arrivals in almost every country across the globe.
                      Every day, hosts offer unique stays, experiences and
                      services that make it possible for guests to connect with
                      communities in a more authentic way.
                    li_follower_count: 3115489
                    li_industries:
                      - id: '4'
                        name: Software Development
                    standard_industries:
                      - Retail
                      - Real Estate
                      - Hospitality
                      - Software
                      - Travel & Tourism
                    naics_codes:
                      - '513210'
                      - '721110'
                    tags:
                      - raised-from-top-vc
                    status_consensus: active
                    funding_stage: public
                    founded_on_consensus: '2008-08-11T00:00:00.000Z'
                    employee_count_consensus:
                      gte: 72716
                      lte: 72716
                    revenue_estimate:
                      sources:
                        - https://bullfincher.io/companies/airbnb/revenue
                        - >-
                          https://www.macrotrends.net/stocks/charts/ABNB/airbnb/revenue
                        - https://stockanalysis.com/quote/bvl/ABNB/revenue/
                        - https://sqmagazine.co.uk/airbnb-statistics/
                        - >-
                          http://www.wallstreetzen.com/stocks/us/nasdaq/abnb/revenue
                        - https://www.statista.com/topics/2273/airbnb/
                        - https://stockanalysis.com/stocks/abnb/revenue/
                        - >-
                          https://news.airbnb.com/airbnb-q4-2025-financial-results/
                        - >-
                          https://www.sec.gov/Archives/edgar/data/1559720/000119312526048670/d58192dex991.htm
                      fiscal_year: 2025
                      value_usd:
                        gte: 12241000000
                        lte: 12241000000
                    total_funding_consensus: 8935132065
                    location_consensus:
                      street_address: 888 Brannan Street
                      neighborhood: null
                      city: San Francisco
                      state_name: California
                      state_code: CA
                      county: null
                      postal_code: '94103'
                      country_code: USA
                      country_name: United States of America
                      coordinates:
                        lat: 37.779238
                        lon: -122.419359
                      timezone: null
                      full_address: San Francisco, California, United States of America
                      formatted_address: San Francisco, California, United States of America
                    location_name: San Francisco, California, United States of America
                    logo_url: >-
                      https://api.fiber.ai/v1/company-logo/at_bomkrvppqn1pssoqsxqy.jpeg
                    short_description: >-
                      Airbnb is an online community marketplace for people to
                      list, discover, and book accommodations through mobile
                      phones or the Internet.
                    technologies_used:
                      - name: slack
                    is_investor: true
                    relevance_score: 12.987053
                    isSaved: true
                total: 438741
                nextCursor: >-
                  gAAAAABqjeNDAAd1qTVJYeUYtzhveDm-GOvYXgomDWX2a6V4OvEFB44biu_7SGszYsdcHjezHmxytwVmoiTf4P5VcPuiv4nFQQuCs4ZvsJu17hJ2n1tiR_w=
                filters:
                  status:
                    - label: Active
                      value: active
                      status: include
                  industriesV2:
                    - label: Travel & Tourism
                      value: Travel & Tourism
                      status: include
                    - label: Artificial Intelligence
                      value: Artificial Intelligence
                      status: exclude
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - basicAuth: []
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            param:
              type:
                - string
                - 'null'
            doc_url:
              type:
                - string
                - 'null'
            request_id:
              type:
                - string
                - 'null'
          required:
            - code
            - message
      required:
        - error
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Your API token (`af_…`) as the Basic-auth username, with an empty
        password.

````