Company Search API: Filter by Industry
By Kooperativa Engineering
A company search API answers a different question than a company enrichment lookup. Enrichment starts from a domain or name you already have and returns firmographics for that one company. Search starts from criteria, industry, headcount, headquarters country, and returns the set of companies matching all of them.
The filters look simple on a features page. In practice, two formatting details cause almost every empty result set: country codes and industry taxonomy.
The country code mistake
Location filters on a company search endpoint are usually ISO 2-letter codes, "US", "DE", "GB", not full country names. Sending "United States" instead of "US" does not raise an error, it just returns zero results silently, which makes it a frustrating bug to track down the first time it happens.
A filtered search request
A real request combining industry, country, and a minimum headcount looks like this:
curl -X POST "https://kooperativa.io/api/v1/companies/search" \
-H "Authorization: Bearer ik_live_..." \
-H "Content-Type: application/json" \
-d '{"industry": "Software Development", "country": "US", "min_staff": 50}'Why company taxonomy differs from person taxonomy
A subtler issue: if the same underlying dataset also powers a people search endpoint, the industry values used for companies and for people are often not the same list. Company records tend to use a newer taxonomy ("Software Development", "IT Services and IT Consulting") while person records may carry an older one ("Computer Software", "Financial Services") inherited from when that profile was last indexed.
A filter built assuming both endpoints share one industry vocabulary will work fine in testing, since test data usually happens to align, and then quietly under-match in production once real data hits both taxonomies at once.
Text search versus exact filters
company_name is typically a text search field rather than an exact match, which means it tolerates partial names and common variants. Numeric filters like min_staff and max_staff are exact range filters, not fuzzy in any sense, a company with 49 employees will not appear in a min_staff: 50 query no matter how close it is.
Get started
Try Kooperativa
One API key. Person and company enrichment, structured search, and monitors under one flat license.
