POST /company-search finds companies using structured filters. Combine website text, LinkedIn description, services, industry, employee range, revenue range, country, city, company name, and URL. Returned company rows use company_name, company_url, linkedin_url, and employee_count so they can be chained into other company and contact endpoints.
Use this when you need many accounts — not a narrative research brief.
Search companies
Each company row uses canonical Huntr company fields:
company_name, company_url, linkedin_url, email_domain, final_email_domain, home_page_email, phone, city, region_code, country_code, industry, employee_count, revenue, services, service_count, home_page_text, home_page_text_snippet, and bio_li_snippet when available. home_page_text contains the full extracted website text, not raw HTML. Use company_url directly with /person-email, /person-phone, and company enrichment endpoints.
Pagination
Huntr returns one page per request.pagination.size is configurable: min 1, default 10, max 100. To walk a large list:
- Call with your
queryandpagination.size - Read
pagination.has_moreandpagination.tokenfrom the response - If
has_moreistrue, call again with the samequeryandpagination: { "size": 10, "token": "..." }
Natural-language search
You can sendsemantic_query instead of query when you want Huntr to translate a plain-English ICP into structured filters.
filters are optional hard constraints for semantic search only. They use the same fields and shapes as query, and explicit filter fields override generated fields.
Semantic responses include resolved_query. For page 2 and later, send that object as query with the returned pagination.token; do not send semantic_query with a token.
Count companies
UsePOST /company-search-count when you only need the number of matching companies. It accepts the same query or semantic_query plus optional filters as /company-search, but it does not accept pagination and it does not return company rows.
total, price: 0, and credits_remaining.
Filter rules
- At least one filter is required
- Fields are AND’d together
includevalues within a field are OR’dservices,industry,country_code,number_of_employees, andrevenuemust be exact lookup labels. Invalid values return422withaccepted_valuescompany_urlis a single string, not an include/exclude object
home_page_text, bio_li, services, industry, number_of_employees, revenue, country_code, city, company_name, company_url.
URL search
When you knowstripe.com, use company_url.
Employee and revenue ranges
Use exact range labels:Typical workflow
- Search → paginate companies
- For each target account: use person search with
company_name - Enrich contacts you want to reach
Billing
Search is charged per company returned, using the API key’s active pricing plan. Empty pages are not billable. Company search count is free but still requires an API key. SeeGET /pricing for the current plan matrix.
Next step
- Person search
- Company enrichment
- POST /company-search — full filter reference
- POST /company-search-count