Skip to main content
The Company Search endpoint (POST /v2/search/companies) lets you find companies matching precise criteria. Use it to:
  • Build ABM target lists from scratch
  • Identify ICP-matching accounts by industry, size, and geography
  • Power dynamic prospecting workflows without static lists
Paid plans: Unlimited — included in your flat monthly subscription.

How It Works

You send a POST request with a company object containing your filters. All filters are optional and combined with AND logic. Within each filter, multiple values use OR logic. The API returns a paginated list of company profiles matching your criteria.

Request Parameters

ParameterTypeRequiredDescription
companyobjectYesFilter object. All nested fields are optional and combined with AND logic.
max_resultsintegerNoNumber of companies to return. Default: 10. Max: 25.
cursorstringNoPagination cursor from a previous response. Pass to get the next page.

Company Filter Fields

FieldTypeDescriptionExample
keywords.includearrayKeywords that must appear in the company profile["SaaS", "B2B"]
keywords.excludearrayKeywords to exclude["agency", "consulting"]
industry.includearrayIndustry names (must use normalized values)["Software Development"]
hq.country_codearrayHQ country codes (2-letter ISO, e.g., "US")["FR", "DE"]
employee_rangearrayEmployee count ranges["51-200", "201-500"]
Industry values are case-sensitive and normalized. Passing "Tech" instead of "Computer Software" or "SaaS" instead of "Software Development" will return 0 results. See the Field Normalization reference for accepted values.

Example Request

Find SaaS companies with 51-500 employees headquartered in France or Germany:
const result = await blitzRequest("POST", "/v2/search/companies", {
  company: {
    keywords: { include: ["SaaS"] },
    industry: { include: ["Software Development"] },
    hq: { country_code: ["FR", "DE"] },
    employee_range: ["51-200", "201-500"],
  },
  max_results: 25,
});

for (const company of result.results) {
  console.log(`${company.name}${company.industry}`);
  console.log(`  LinkedIn: ${company.linkedin_url}`);
  console.log(`  Employees: ${company.employee_count}`);
}

Response Schema

{
  "results_length": 25,
  "cursor": "eyJwYWdlIjoy...",
  "results": [
    {
      "name": "Acme Corp",
      "linkedin_url": "https://www.linkedin.com/company/acme-corp",
      "website": "acme.com",
      "industry": "Software Development",
      "employee_count": 120,
      "hq": {
        "city": "Paris",
        "country": "France",
        "country_code": "FR"
      }
    }
  ]
}
FieldTypeDescription
results_lengthintegerNumber of results in this page.
cursorstringPass this value in the next request to get the following page. null if no more results.
results[].namestringCompany name.
results[].linkedin_urlstringCompany LinkedIn URL. Use this as input for Waterfall ICP, Employee Finder, and Company Enrichment endpoints.
results[].websitestringCompany website domain.
results[].industrystringNormalized industry name.
results[].employee_countintegerApproximate employee count.
results[].hqobjectHeadquarters location (city, country, country_code).

Pagination

The API supports cursor-based pagination. Each response includes a cursor field. Pass it in the next request to get the following page.
// First request
{ "company": { ... }, "max_results": 25 }

// Response includes: "cursor": "eyJwYWdl..."

// Next page request
{ "company": { ... }, "cursor": "eyJwYWdl...", "max_results": 25 }
When cursor is null in the response, you’ve reached the last page.
Use Company Search as the first step in your ABM pipeline:
1

Find ICP-matching companies

Use Company Search to build a list of target accounts matching your ICP filters.
2

Extract LinkedIn URLs

The linkedin_url field in the response is your key for all downstream enrichment.
3

Find decision-makers

Pass each linkedin_url to the Waterfall ICP Search to find the right contacts.
4

Enrich and sync

Enrich contacts with verified emails and sync to your CRM or outreach tool.