---
title: "Search Lookalikes"
method: GET
path: "/api/v1/account/search-lookalikes"
tags: ["Company Search"]
---

# Search Lookalikes

`GET /api/v1/account/search-lookalikes`

Find lookalike companies from either a natural-language description **or** a set of seed company websites, with optional firmographic filters.

<Info>**No API key yet?** [Sign up via Agent Auth](/agent-primitives/authentication) to get your `X-API-Key` - the only required header for this endpoint.</Info>

Use it for queries such as:
- `Healthcare companies building with voice AI`
- `Companies that provide customer support software for B2C`
- `Companies that build workflow automation for non technical industries`

Or supply 1-10 seed company websites and let OpenFunnel synthesize the query for you:
- `seed_domains=datadog.com&seed_domains=grafana.com&seed_domains=dynatrace.com`

You can also restrict results to your ICP by applying filters for company size, funding stage, and headquarters country.

## Two input modes

At least one of `query` or `seed_domains` is required. Both can be combined for a hybrid trait.

- **Natural language** (`query`): describe the kind of company you want. Best when you can articulate the trait in 1-2 sentences.
- **Seed-based discovery** (`seed_domains`): pass up to 10 company websites and OpenFunnel uses them to synthesize the lookalike query for you. Best when you can name a few example customers but struggle to phrase what they have in common.
- **Both together**: pass `seed_domains` AND `query` - the query becomes a must-have angle layered on top of the seeds (e.g. seeds=[datadog.com, grafana.com] + query="cloud monitoring and observability tools" → synthesized trait targets cloud monitoring tools).

With `seed_domains`, the response echoes back the LLM-synthesized `derived_query`, plus `resolved_seed_domains` (seeds that landed in our index) and `unresolved_seed_domains` (seeds we couldn't find - skipped silently as long as at least one resolved).

## Omitting filters
If you omit filters, search runs across all company sizes, funding stages, and supported locations. Use the optional firmographic filters below to restrict results to your ICP.

## Discovering available firmographics
The `funding_stages`, `locations`, `min_employees`, and `max_employees` filters accept a fixed set of values. Fetch the current set via **`GET /api/v1/account/firmographic-options`** it returns the accepted `funding_stages` labels, the supported HQ `locations` (code + name), and the min/max employee bounds.

## Credits
**1 credit per company returned.** Empty result sets are free. The exact amount billed is echoed back in `credits_consumed` on the response. The LLM trait synthesis used by `seed_domains` is included - no extra charge.

The response includes a `derived_query` field with the LLM-synthesized trait so you can see exactly what was searched.

## Query parameters

- `query` string, nullable
- `seed_domains` string[]
- `limit` integer
- `min_employees` integer
- `max_employees` integer
- `funding_stages` string[]
- `locations` string[]

## Headers

- `X-API-Key` string, required

## Response `200`

Successful Response

- InstantTraitSearchResponse — Response for the public lookalike search.
  - `query` string, required — Original user query. May be an empty string when `seed_domains` was provided without a `query`.
  - `results` InstantTraitSearchResult[], required — Matching companies
    - `name` string, nullable — Company name
    - `domain` string, nullable — Primary company domain
    - `linkedin_url` string, nullable — Company LinkedIn URL
    - `headquarters` string, nullable — Best available headquarters location
    - `match_reason` string, nullable — One-sentence LLM justification for why this company matches the trait query, with the supporting phrases from the company's description / industries wrapped in double quotes. Useful for human review of why a result was returned. May be null if the validator did not attach a reason.
    - `employee_count` integer, nullable — Estimated employee count. ClickHouse firmographic enrichment; null when the company did not resolve in ClickHouse.
    - `funding_stage` string, nullable — Latest funding stage, e.g. 'Series C'.
    - `revenue_usd` integer, nullable — Estimated annual revenue, in USD.
    - `industries` string[], nullable — Industry tags.
    - `hq_city` string, nullable — HQ city.
    - `hq_region` string, nullable — HQ state / region.
    - `hq_country` string, nullable — HQ country.
    - `linkedin_follower_count` integer, nullable — LinkedIn follower count.
    - `description` string, nullable — Short company description.
    - `tagline` string, nullable — Company tagline / LinkedIn headline.
  - `total` integer, required — Number of results returned
  - `credits_consumed` integer — Credits charged for this response. 1 credit per company returned. The LLM trait synthesis used by `seed_domains` is included - no extra charge.
  - `derived_query` string, nullable — When `seed_domains` was provided, this is the LLM-synthesized trait query that was actually run against the lookalike pipeline. Null for pure-query requests.
  - `resolved_seed_domains` string[], nullable — Seed input strings that matched a company in the OpenFunnel companies index. Null when `seed_domains` was not provided.
  - `unresolved_seed_domains` string[], nullable — Seed input strings that could not be resolved. Skipped silently as long as at least one seed resolved. Null when `seed_domains` was not provided.

## Other responses

- `422` — Validation Error
- `429` — Rate limit reached for this API key or user.
- `503` — Lookalike search is temporarily unavailable. Please try again shortly.

---

[API](https://skmtc.net/openfunnel/apis/openfunnel-agent-primitives.md) · [All operations](https://skmtc.net/openfunnel/apis/openfunnel-agent-primitives/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openfunnel/openfunnel-agent-primitives/revisions/68cc95acb1f2/schema)
