curl --request POST \
--url https://api.datalayer.so/v1/companies/lookup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"company_id": "123"
}
'import requests
url = "https://api.datalayer.so/v1/companies/lookup"
payload = { "company_id": "123" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({company_id: '123'})
};
fetch('https://api.datalayer.so/v1/companies/lookup', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"company_id": "123",
"name": "Example Company",
"website": "https://example.com/",
"profile_url": null,
"description": null,
"logo_url": null,
"founded_year": null,
"company_type": null,
"employee_count": null,
"employee_size": null,
"headquarters": {
"city": null,
"region": null,
"country": null
},
"locations": [],
"industries": [],
"specialties": [],
"industry_codes": {
"sic": [],
"naics": []
},
"source_updated_at": null,
"coverage_note": "Employee counts and size bands are separate provider observations and may disagree. Current staffing is not independently verified."
},
"meta": {
"request_id": "example-request-001",
"retrieved_at": "2026-09-21T12:00:00Z",
"upstream_requests": 1,
"billing_status": "profile_deducted",
"profiles_used": 1
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Get a company
Retrieve one full company profile by exactly one returned company ID or website domain. A new successful profile uses one allowance unit; canonical repeats within 24 hours of the paid retrieval are included for the same account.
curl --request POST \
--url https://api.datalayer.so/v1/companies/lookup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"company_id": "123"
}
'import requests
url = "https://api.datalayer.so/v1/companies/lookup"
payload = { "company_id": "123" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({company_id: '123'})
};
fetch('https://api.datalayer.so/v1/companies/lookup', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"company_id": "123",
"name": "Example Company",
"website": "https://example.com/",
"profile_url": null,
"description": null,
"logo_url": null,
"founded_year": null,
"company_type": null,
"employee_count": null,
"employee_size": null,
"headquarters": {
"city": null,
"region": null,
"country": null
},
"locations": [],
"industries": [],
"specialties": [],
"industry_codes": {
"sic": [],
"naics": []
},
"source_updated_at": null,
"coverage_note": "Employee counts and size bands are separate provider observations and may disagree. Current staffing is not independently verified."
},
"meta": {
"request_id": "example-request-001",
"retrieved_at": "2026-09-21T12:00:00Z",
"upstream_requests": 1,
"billing_status": "profile_deducted",
"profiles_used": 1
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}company_id or bare website domain, such as
example.com. Do not include a URL scheme or path in a domain.
If a domain matches more than one company, search first and use a returned ID.
A successful new lookup uses one profile; eligible repeats are included.
Send Idempotency-Key to make retries safe.Authorizations
Send Authorization: Bearer dl_live_<64 lowercase hexadecimal characters>. Approved users can create account-scoped, revocable keys in the Datalayer dashboard. A key does not grant a profile allowance. Dashboard session cookies are not API credentials.
Headers
Recommended for lookup retries. A key is scoped to this account and bound to the normalized operation/input. Reuse it only for the same request within 24 hours; changed input, an expired key, or a different resolved profile returns 409. A replay refetches data but deducts no additional profile. If omitted, the server creates a request ID. A network failure after database commit starts can leave a completed deduction; a timeout alone does not imply zero usage.
1 - 128^[A-Za-z0-9_-]{1,128}$