curl --request POST \
--url https://api.airscale.io/v1/find-companies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filters": {
"country": [
"FR"
],
"size": [
"11-50"
],
"keywords": [
"workflow automation"
]
}
}
'const url = 'https://api.airscale.io/v1/find-companies';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({filters: {country: ['FR'], size: ['11-50'], keywords: ['workflow automation']}})
};
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/find-companies"
payload = { "filters": {
"country": ["FR"],
"size": ["11-50"],
"keywords": ["workflow automation"]
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"rows": [
{
"name": "Example Company",
"domain": "example.com",
"logo": "https://example.com/logo.png",
"website": "https://example.com",
"countryName": "Example Country",
"cityName": "Example City",
"region": null,
"location": "Example City, Example Country",
"industry": null,
"linkedinProfile": null,
"employeeRange": null,
"revenueRange": null,
"description": null,
"naics": null,
"naicsDescription": null,
"sicCode": null,
"sicDescription": null,
"businessIntentTopics": null,
"events": null
}
],
"total": 240,
"page": 0,
"size": 25,
"next_cursor": "fc_eyJ2IjoxLCJtb2RlIjoicGFnZSIsInBhZ2UiOjEsInBhZ2VTaXplIjoyNSwicHJvdmlkZXJTaXplIjoxMDAwMH0"
}{
"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>"
}Find companies
Search companies using firmographic, location, event, intent, and technology filters. Rate limit: 6 requests per second per workspace.
curl --request POST \
--url https://api.airscale.io/v1/find-companies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filters": {
"country": [
"FR"
],
"size": [
"11-50"
],
"keywords": [
"workflow automation"
]
}
}
'const url = 'https://api.airscale.io/v1/find-companies';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({filters: {country: ['FR'], size: ['11-50'], keywords: ['workflow automation']}})
};
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/find-companies"
payload = { "filters": {
"country": ["FR"],
"size": ["11-50"],
"keywords": ["workflow automation"]
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"rows": [
{
"name": "Example Company",
"domain": "example.com",
"logo": "https://example.com/logo.png",
"website": "https://example.com",
"countryName": "Example Country",
"cityName": "Example City",
"region": null,
"location": "Example City, Example Country",
"industry": null,
"linkedinProfile": null,
"employeeRange": null,
"revenueRange": null,
"description": null,
"naics": null,
"naicsDescription": null,
"sicCode": null,
"sicDescription": null,
"businessIntentTopics": null,
"events": null
}
],
"total": 240,
"page": 0,
"size": 25,
"next_cursor": "fc_eyJ2IjoxLCJtb2RlIjoicGFnZSIsInBhZ2UiOjEsInBhZ2VTaXplIjoyNSwicHJvdmlkZXJTaXplIjoxMDAwMH0"
}{
"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>"
}next_cursor is not null, send the exact value unchanged as cursor with the same filters. Do not decode, construct, or edit the cursor. Cursor pagination preserves the original page size and can traverse up to 10,000 companies for one search.
After a 429, wait for the next second and retry with bounded exponential backoff. For temporary 502 or 503 responses, retry with increasing delays and a fixed retry limit. If errors persist, stop retrying and contact support.
Company fields
rows contains public company records. Fields vary with available data; the following list is illustrative, not a set of required fields.
| Field | Meaning |
|---|---|
name, description | Company name and description. |
domain, website | Company domain and website URL. |
linkedinProfile | LinkedIn company profile URL when available. |
logo | Company logo URL when available. |
countryName, cityName | Company location. |
employeeRange, revenueRange | Available headcount and revenue ranges. |
Discover filter values
Use Company filter values to discover city, region, industry, intent-topic, and technology values, then send the returnedvalue unchanged. Industry and topic values come from canonical lookup lists; keywords and companyName accept free text.
Use JSON booleans for hasWebsite and isPublicCompany, not strings such as "true". The largest fixed buckets are 10001+ for employee size, 10T+ for revenue, 20+ for company age, and 1001+ for location count.
Next step
Use Company filter values to discover accepted values, Find people to search for roles at identified companies, or Authentication before integrating.Authorizations
Use an Airscale workspace API key. Never expose the key in client-side code.
Body
Provide at least one real company filter. Defaults such as eventWindow and locationMatch do not count as filters.
Show child attributes
Show child attributes
A zero-based page supplied as an integer JSON number or one of the equivalent canonical decimal strings. OpenAPI intentionally uses canonical decimal strings even though runtime Number() accepts additional spellings.
x >= 0A page size from 1 through 100 supplied as an integer JSON number or one of the equivalent canonical decimal strings. OpenAPI intentionally uses canonical decimal strings even though runtime Number() accepts additional spellings.
1 <= x <= 100An opaque fc_ cursor returned by the preceding page. When supplied, its saved page size takes precedence over new page or size values.
^fc_