Skip to main content
POST /company-search finds companies from Huntr’s index using structured filters. Combine industry, location, headcount, domain, keywords, and more. Use this when you need many accounts — not a narrative research brief.

Preview list size (free)

Before spending credits on results, preview the match count:
curl --request POST \
  --url https://api.tryhuntr.com/company-search-count \
  --header 'content-type: application/json' \
  --header "x-api-key: ${HUNTR_API_KEY}" \
  --data '{
    "query": {
      "industry": { "include": ["Software Development"] },
      "location": { "include": ["US"] },
      "headcount": { ">": 50, "<": 500 }
    }
  }'
price is always 0 on count endpoints.

Search companies

curl --request POST \
  --url https://api.tryhuntr.com/company-search \
  --header 'content-type: application/json' \
  --header "x-api-key: ${HUNTR_API_KEY}" \
  --data '{
    "query": {
      "industry": { "include": ["Software Development"] },
      "location": { "include": ["US"] },
      "headcount": { ">": 50, "<": 500 }
    },
    "pagination": { "size": 100 }
  }'
Response shape:
FieldMeaning
totalMatches for the full query
companiesRows in this page only
pagination.tokenCursor for the next page
priceUSD for rows returned this call

Pagination

Huntr returns one page per request (default 100, max 200). To walk a large list:
  1. Call with your query and pagination.size
  2. Read pagination.token from the response
  3. Call again with the same query and pagination: { "size": 100, "token": "..." }
Do not change the query between pages. Tokens expire.

Filter rules

  • At least one filter is required
  • Fields are AND’d together
  • include values within a field are OR’d
  • industry and type must be exact LinkedIn labels — invalid values return 400 with accepted_values

Prefer domain over name

When you know stripe.com, use domain — not name — to avoid fuzzy collisions.
{ "domain": { "include": ["stripe.com"] } }

Headcount and revenue

Use comparison operators (>, <, >=, <=), not min/max:
{ "headcount": { ">": 10, "<": 500 } }

Typical workflow

  1. Count → search → paginate companies
  2. For each target account, find people with currentCompanyWebsite
  3. Enrich contacts you want to reach

Pricing

Charged per company returned in the response. Empty pages cost $0. See GET /pricing for the current per-result rate.

Next step