Search Lookalikes
Find lookalike companies from either a natural-language description or a set of seed company websites, with optional firmographic filters.
X-API-Key - the only required header for this endpoint.Use it for queries such as:
Healthcare companies building with voice AICompanies that provide customer support software for B2CCompanies 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=stripe.com&seed_domains=adyen.com&seed_domains=checkout.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_domainsANDquery- the query becomes a must-have angle layered on top of the seeds (e.g. seeds=[stripe.com, adyen.com] + query=“for SMB merchants” → synthesized trait targets B2B SMB payments).
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.
Choosing a search strategy: precision vs. recall
Use the search_type parameter to pick how aggressively the API filters:
agentic- high precision. Tighter results - a smaller, more obvious set of companies that explicitly describe themselves with your trait. Fastest path (~2-4s).semantic(default) - high recall. Wider net. Includes companies that don’t use your exact phrasing but are conceptually adjacent. Slower but better when you want the long tail.
Stick with semantic (default) when your trait is fuzzy or conceptual, or when you want adjacent / near-fit companies in addition to obvious matches. Switch to agentic when your query has a clear category (B2B customer support software, HVAC home services, LLM evaluation tools) and you want a tight, high-confidence shortlist fast.
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.
Headers
Query Parameters
Describe the kinds of companies you want to find. Required unless seed_domains is provided. When both are supplied, the query is used as a must-have angle on top of the trait synthesized from the seeds.
1 - 200Up to 10 seed company websites/domains (e.g. stripe.com, https://www.adyen.com). When provided, OpenFunnel uses them to synthesize the lookalike query for you. Protocol / www. prefixes are normalized automatically. Unresolved seeds are skipped silently as long as at least one resolves. Repeat the parameter to send multiple values.
10Maximum number of companies to return. Default 10, max 100. For larger result sets (up to 10000), use the async bulk endpoint POST /api/v1/account/search-lookalikes-bulk.
1 <= x <= 100Minimum employee count, inclusive.
x >= 0Maximum employee count, inclusive.
x >= 0Funding stages to include. Repeat the parameter to send multiple values.
Pre-Seed, Seed, Series A, Series B, Series C, Series D, Series E, Series F, Series G, Series H, Acquired, Private, Public Headquarters country filter using ISO 3166-1 alpha-3 codes (e.g. USA, GBR, IND, DEU). Top 30 by company volume: USA, GBR, CHN, FRA, IND, DEU, BRA, BEL, ESP, CAN, AUS, NLD, ITA, NOR, ZAF, MEX, TUR, CHE, ARE, POL, SWE, IDN, ARG, PAK, COL, PRT, JPN, CHL, NGA, AUT. Pass EU to expand to all 27 EU member states. Repeat the parameter to send multiple values. Full list of 250 codes via GET /api/v2/tech/country-options (under Agent Helpers).
Retrieval strategy. Pick based on whether you want high precision (a tight set of obvious matches) or high recall (a wider net that includes near-fits and adjacent companies).
agentic- high precision. Returns a smaller, tighter set of companies that explicitly self-describe with your trait. Latency-optimized - typically 2-4s.semantic(default) - high recall. Surfaces a broader candidate pool including companies that don't use your exact phrasing but are conceptually similar. Slower but better when you want to cast a wide net or your trait is fuzzy.
Rule of thumb: start with agentic if you know roughly what category you want; switch to semantic if results feel too narrow or you want the long tail.
semantic, agentic Response
Successful Response
Response for the public lookalike search.
Original user query. May be an empty string when seed_domains was provided without a query.
Matching companies
Number of results returned
Credits charged for this response. 1 credit per company returned. The LLM trait synthesis used by seed_domains is included - no extra charge.
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.
Seed input strings that matched a company in the OpenFunnel companies index. Null when seed_domains was not provided.
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.