Find a LinkedIn company URL from a domain
curl --request POST \
--url https://api.airscale.io/v1/domain-to-linkedin \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"domain": "example.org"
}
'const url = 'https://api.airscale.io/v1/domain-to-linkedin';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({domain: 'example.org'})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.airscale.io/v1/domain-to-linkedin"
payload = { "domain": "example.org" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"linkedin_company_url": "https://www.linkedin.com/company/example-company-000000"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Domain to LinkedIn
Find a LinkedIn company URL from a company domain. Rate limit: 180 requests per minute per workspace.
POST
/
v1
/
domain-to-linkedin
Find a LinkedIn company URL from a domain
curl --request POST \
--url https://api.airscale.io/v1/domain-to-linkedin \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"domain": "example.org"
}
'const url = 'https://api.airscale.io/v1/domain-to-linkedin';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({domain: 'example.org'})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.airscale.io/v1/domain-to-linkedin"
payload = { "domain": "example.org" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"linkedin_company_url": "https://www.linkedin.com/company/example-company-000000"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Submit one company domain and receive its LinkedIn company URL. The response contains only
Use a current workspace API key from Settings → API key. Legacy Bubble-only API keys are not supported by this endpoint.
linkedin_company_url.
A successful lookup costs 0.5 credits, billed asynchronously. No-result and failed lookups cost zero. Billing delays, outages, and insufficient credits do not block the result; an outstanding charge is retried later. The limit is 180 requests per minute per workspace.
Domain input
Send onlydomain: a hostname such as example.org, without a scheme, path, or port. Uppercase and a leading www. are normalized. Extra body fields are rejected; the body limit is 4 KiB.
Timeouts and retries
The lookup has a 120-second deadline. Allow 130 seconds in your client. Sources are tried sequentially until a valid company URL is found. Personal profile and school URLs are not returned. Reuse the sameIdempotency-Key for transport retries of the same domain. Keys are scoped to your workspace and this endpoint; responses replay for seven days without another lookup or charge. Without a key, every request is a new operation.
An in-flight duplicate returns 409 with Retry-After: 2; wait and retry with the same key. A key reused for a different domain, or an expired key, also returns 409 and needs a new key. After a completed transient failure, use a new key to start a fresh lookup. New operations can incur a new charge if successful.
Errors contain an error field. Billing errors never replace the lookup response. Authentication and result storage must still be available for the request to succeed.
Next step
Use Extract company profile to retrieve company details from the returned LinkedIn URL. That is a separate request with its own credit cost.Authorizations
Use an Airschool workspace API key. Never expose the key in client-side code.
Headers
Use the same key for transport retries of the same domain. Stored responses replay for seven days without another lookup or charge. In-flight duplicates return 409 with Retry-After: 2. Reusing a key with a different domain or after expiry returns 409. A new key starts a new operation. Without a key every request is a new operation.
Required string length:
1 - 200Pattern:
^[!-~]+$Body
application/json
Exactly one domain field. Maximum JSON body size: 4 KiB.
Response
A canonical LinkedIn company URL. Creates one asynchronous 0.5-credit charge.
Pattern:
^https://www\.linkedin\.com/company/[^/?#]+$