/v2/lookup/companiesKey features:
Returns enriched company data for each domain. Companies not found will have company: null in the result.
| Endpoint | POST /v2/lookup/companies |
| Credit cost | 0.05 credits / result |
| Response | Synchronous |
| Max per request | 1,000 domains |
Example use case: I have 200 domains from a trade show badge scan. I want to enrich all of them in one call.
curl -X POST "https://api.ocean.io/v2/lookup/companies" \
-H "X-Api-Token: YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"domains": ["stripe.com", "twilio.com", "notindatabase.io"],
"fields": ["name", "companySize", "primaryCountry", "technologies"]
}'import requests
response = requests.post(
'https://api.ocean.io/v2/lookup/companies',
headers={'X-Api-Token': 'YOUR_API_TOKEN'},
json={
'domains': ['stripe.com', 'twilio.com', 'notindatabase.io'],
'fields': ['name', 'companySize', 'primaryCountry', 'technologies'],
},
)
data = response.json()const response = await fetch('https://api.ocean.io/v2/lookup/companies', {
method: 'POST',
headers: { 'X-Api-Token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
body: JSON.stringify({
domains: ['stripe.com', 'twilio.com', 'notindatabase.io'],
fields: ['name', 'companySize', 'primaryCountry', 'technologies'],
}),
});
const data = await response.json();Example response:
{
"companies": [
{ "domain": "stripe.com", "company": { "name": "Stripe", "companySize": "1001-5000" } },
{ "domain": "notindatabase.io", "company": null }
],
"totalRequested": 3,
"totalFound": 2,
"redirectMap": { "stripe.co.uk": "stripe.com" }
}Domains not in the database return company: null — not an error. The redirectMap shows any canonical domain redirects Ocean.io detected.
| Lookup Companies | Enrich Companies (Batch) | |
|---|---|---|
| Input | Domains only | Any identifier |
| Response | Synchronous | Async (webhook) |
| Max | 1,000 | 10,000 |
| Best for | Fast domain lookups | Large CRM enrichment jobs |
apiToken string x-api-token string "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 Responsedomain 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 totalRequested integer Required totalFound integer Required creditsUsed number Required 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 What happens to domains not in the database?
They return company: null. To pre-load missing domains before lookup, call Warmup Companies first — it triggers background crawling for domains not yet indexed.