/v3/search/companiesLooking for the legacy endpoint? Access it here
| Endpoint | POST /v3/search/companies |
| Credit cost | 0.2 credits / result |
| Response | Synchronous — up to 10,000 results per request |
| When to use | Build a filtered list of target companies matching your ideal customer profile |
Example use case: Find all B2B SaaS companies in Germany with 51–200 employees that use HubSpot.
curl -X POST "https://api.ocean.io/v3/search/companies" \
-H "X-Api-Token: YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"companiesFilters": {
"primaryLocations": { "includeCountries": ["de"] },
"companySizes": ["51-200"],
"industries": { "industries": ["SaaS"] },
"technologies": {
"apps": { "anyOf": ["HubSpot"] }
}
},
"size": 10
}'import requests
response = requests.post(
'https://api.ocean.io/v3/search/companies',
headers={'X-Api-Token': 'YOUR_API_TOKEN'},
json={
'companiesFilters': {
'primaryLocations': {'includeCountries': ['de']},
'companySizes': ['51-200'],
'industries': {'industries': ['SaaS']},
'technologies': {'apps': {'anyOf': ['HubSpot']}},
},
'size': 10,
},
)
data = response.json()const response = await fetch('https://api.ocean.io/v3/search/companies', {
method: 'POST',
headers: { 'X-Api-Token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
body: JSON.stringify({
companiesFilters: {
primaryLocations: { includeCountries: ['de'] },
companySizes: ['51-200'],
industries: { industries: ['SaaS'] },
technologies: { apps: { anyOf: ['HubSpot'] } },
},
size: 10,
}),
});
const data = await response.json();Example response:
{
"companies": [
{
"domain": "example.de",
"name": "Example GmbH",
"companySize": "51-200",
"primaryCountry": "de",
"industries": ["SaaS", "B2B"],
"technologies": ["HubSpot", "Salesforce"]
}
],
"searchAfter": ["example.de"],
"total": 842
}Use the searchAfter value from each response as the searchAfter parameter in your next request to get the following page. See Pagination for details.
apiToken string x-api-token string size integer searchAfter string "0-1""2-10""11-50""51-200""201-500""501-1000""1001-5000""5001-10000""10001-50000""50001-100000""100001-500000""500000+"ecommerce boolean from integer to integer from integer to integer "0-1M""1-10M""10-50M""50-100M""100-500M""500-1000M"">1000M"from integer to integer from integer to integer from integer to integer from integer to integer from integer to integer from integer to integer from integer to integer "Accounting and Finance""Board""Business Support""Customer Relations""Design""Editorial Personnel""Engineering""Founder/Owner""Healthcare""HR""Legal""Management""Manufacturing""Marketing and Advertising""Operations""PR and Communications""Procurement""Product""Quality Control""R&D""Sales""Security""Supply Chain""Other"from integer to integer mode enum "anyOf""allOf"mode enum "anyOf""allOf"from integer to integer "Seed""Series A""Angel""Series B""Series Unknown""Pre-Seed""Grant""Series C""Convertible Note""Debt Financing""Non-Equity Assistance""Undisclosed""Series D""Corporate Round""Equity Crowdfunding""Product Crowdfunding""Series E""Private Equity""Secondary Market""Initial Coin Offering""Post-IPO Equity""Series F""Post-IPO Debt""Series H""Series G""Post-IPO Secondary""Series I""Series J"from string to string country string Required abbreviation string Required country string Required abbreviation string Required city string Required country string country string Required abbreviation string Required postalCode string city string Required country string country string Required abbreviation string Required postalCode string latitude number Required longitude number Required radius integer Required country string Required abbreviation string Required country string Required abbreviation string Required city string Required country string country string Required abbreviation string Required postalCode string city string Required country string country string Required abbreviation string Required postalCode string latitude number Required longitude number Required radius integer Required from integer to integer from integer to integer "linkedin""x""facebook""instagram""youtube""xing""tiktok""linkedin""x""facebook""instagram""youtube""xing""tiktok""linkedin""x""facebook""instagram""youtube""xing""tiktok"minCount integer minRelevance enum "A""B""C"maxRelevance enum "A""B""C"asPercentage boolean Required from number to number "Three months""Six months""Twelve months"asPercentage boolean Required from number to number "Three months""Six months""Twelve months""Accounting and Finance""Board""Business Support""Customer Relations""Design""Editorial Personnel""Engineering""Founder/Owner""Healthcare""HR""Legal""Management""Manufacturing""Marketing and Advertising""Operations""PR and Communications""Procurement""Product""Quality Control""R&D""Sales""Security""Supply Chain""Other"asPercentage boolean Required from number to number "Three months""Six months""Twelve months""Accounting and Finance""Board""Business Support""Customer Relations""Design""Editorial Personnel""Engineering""Founder/Owner""Healthcare""HR""Legal""Management""Manufacturing""Marketing and Advertising""Operations""PR and Communications""Procurement""Product""Quality Control""R&D""Sales""Security""Supply Chain""Other"updatedWithinMonths integer "companySize""countries""departmentSizes""description""emails""faxes""impressum""industries""industryCategories""keywords""legalName""linkedinIndustry""locations""logo""medias""mobileApps""name""phones""primaryCountry""revenue""rootUrl""technologies""technologyCategories""webTraffic""yearFounded""companySize""countries""departmentSizes""description""emails""faxes""impressum""industries""industryCategories""keywords""legalName""linkedinIndustry""locations""logo""medias""mobileApps""name""phones""primaryCountry""revenue""rootUrl""technologies""technologyCategories""webTraffic""yearFounded"companyMatchingMode enum "precise""broad""Owner""Founder""Board Member""C-Level""Partner""VP""Head""Director""Manager""Other"country string Required abbreviation string Required country string Required abbreviation string Required city string Required country string country string Required abbreviation string Required city string Required country string country string Required abbreviation string Required "Accounting and Finance""Board""Business Support""Customer Relations""Design""Editorial Personnel""Engineering""Founder/Owner""Healthcare""HR""Legal""Management""Manufacturing""Marketing and Advertising""Operations""PR and Communications""Procurement""Product""Quality Control""R&D""Sales""Security""Supply Chain""Other""Accounting and Finance""Board""Business Support""Customer Relations""Design""Editorial Personnel""Engineering""Founder/Owner""Healthcare""HR""Legal""Management""Manufacturing""Marketing and Advertising""Operations""PR and Communications""Procurement""Product""Quality Control""R&D""Sales""Security""Supply Chain""Other""country""departments""firstName""jobTitle""jobTitleEnglish""lastName""linkedinUrl""location""name""photo""seniorities""summary""country""departments""firstName""jobTitle""jobTitleEnglish""lastName""linkedinUrl""location""name""photo""seniorities""summary"changedPositionAfter string changedPositionBefore string updatedWithinMonths integer from integer to integer from integer to integer "domain""countries""primaryCountry""companySize""industryCategories""industries""linkedinIndustry""ecommerce""keywords""employeeCountOcean""employeeCountLinkedin""revenue""yearFounded""description""emails""phones""phones.number""phones.country""phones.primary""logo""technologies""technologyCategories""mobileApps""mobileApps.link""mobileApps.name""webTraffic""webTraffic.visits""webTraffic.pageViews""webTraffic.pagesPerVisit""medias""medias.linkedin""medias.twitter""medias.youtube""medias.facebook""medias.xing""medias.tiktok""medias.instagram""name""legalName""locations""locations.primary""locations.country""locations.locality""locations.region""locations.postalCode""locations.streetAddress""locations.state""locations.regionCode""departmentSizes""rootUrl""faxes""faxes.number""faxes.country""faxes.primary""impressum""impressum.company""impressum.address""impressum.email""impressum.phone""impressum.fax""impressum.vat""impressum.url""impressum.people""fundingRound""fundingRound.date""fundingRound.type""fundingRound.moneyRaisedInUsd""fundingRound.cbUrl""redirectedFrom""updatedAt""headcountGrowth""headcountGrowth.threeMonths""headcountGrowth.threeMonthsPercentage""headcountGrowth.sixMonths""headcountGrowth.sixMonthsPercentage""headcountGrowth.twelveMonths""headcountGrowth.twelveMonthsPercentage""headcountGrowthPerDepartment"200 Successful ResponsesearchAfter string detail string Required total integer creditsUsed number Required domain string Required primaryCountry string "0-1""2-10""11-50""51-200""201-500""501-1000""1001-5000""5001-10000""10001-50000""50001-100000""100001-500000""500000+"linkedinIndustry string ecommerce boolean employeeCountOcean integer employeeCountLinkedin integer "0-1M""1-10M""10-50M""50-100M""100-500M""500-1000M"">1000M"yearFounded integer description string number string Required country string primary boolean logo string link string name string Required visits integer pageViews integer pagesPerVisit number bounceRate number url string Required handle string name string url string Required handle string name string url string Required handle string name string url string Required handle string name string url string Required handle string name string url string Required handle string name string url string Required handle string name string name string legalName string primary boolean latitude number longitude number country string locality string region string postalCode string streetAddress string state string DeprecatedregionCode string "Accounting and Finance""Board""Business Support""Customer Relations""Design""Editorial Personnel""Engineering""Founder/Owner""Healthcare""HR""Legal""Management""Manufacturing""Marketing and Advertising""Operations""PR and Communications""Procurement""Product""Quality Control""R&D""Sales""Security""Supply Chain""Other"size integer Required rootUrl string number string Required country string primary boolean company string address string email string phone string fax string vat string url string name string Required position string date string "Seed""Series A""Angel""Series B""Series Unknown""Pre-Seed""Grant""Series C""Convertible Note""Debt Financing""Non-Equity Assistance""Undisclosed""Series D""Corporate Round""Equity Crowdfunding""Product Crowdfunding""Series E""Private Equity""Secondary Market""Initial Coin Offering""Post-IPO Equity""Series F""Post-IPO Debt""Series H""Series G""Post-IPO Secondary""Series I""Series J"moneyRaisedInUsd integer cbUrl string updatedAt string threeMonths integer threeMonthsPercentage number sixMonths integer sixMonthsPercentage number twelveMonths integer twelveMonthsPercentage number "Accounting and Finance""Board""Business Support""Customer Relations""Design""Editorial Personnel""Engineering""Founder/Owner""Healthcare""HR""Legal""Management""Manufacturing""Marketing and Advertising""Operations""PR and Communications""Procurement""Product""Quality Control""R&D""Sales""Security""Supply Chain""Other"threeMonths integer threeMonthsPercentage number sixMonths integer sixMonthsPercentage number twelveMonths integer twelveMonthsPercentage number relevance enum "A""B""C"400 Bad Requestdetail enum Required "Conflicting API tokens provided in query parameters and headers"402 Payment Requireddetail enum Required "Insufficient credits"403 Forbiddendetail enum Required "API token should be provided in headers or query parameters""Current API token is not registered in our database"404 Not found422 Validation Errormsg string Required type string Required input any How many results can I get per request?
Up to 10,000 per request (default is 50). Use searchAfter to paginate beyond 10,000 total results. See Pagination for details.
How do I find valid values for industries, technologies, and locations?
Use the Autocomplete endpoints for typeahead lookups, or call Get Data Fields to retrieve the full reference lists.
Can I combine companiesFilters and peopleFilters in the same search?
Yes. Adding peopleFilters narrows the results to companies that have at least one employee matching those criteria. For example, combine companiesFilters.technologies with peopleFilters.seniorities to find companies using Salesforce that have C-Level contacts.
What is the difference between primaryLocations and locations?
primaryLocations filters by the company's main headquarters country/region. locations includes any office location worldwide. Use primaryLocations for HQ-focused targeting and locations when you want to find companies with any presence in a region.