API Endpoints

Find People

Search the Airscale people dataset with person-level and current-company filters, or count matching people without retrieving lead records.

Endpoint

POST https://api.airscale.io/v1/find-people
POST https://api.airscale.io/v1/find-people/count
POST https://api.airscale.io/v1/find-people
POST https://api.airscale.io/v1/find-people/count
POST https://api.airscale.io/v1/find-people
POST https://api.airscale.io/v1/find-people/count

Headers

Key

Value

Required

Content-Type

application/json

Yes

Authorization

Bearer <YOUR_API_KEY>

Yes

You can generate and manage your API key from the Airscale dashboard.

Rate Limit and Credits

Rule

Value

Rate limit

6 requests per second per workspace

Rate-limit response

429 Too Many Requests

Search cost

0.1 credits per lead returned

Count cost

Free

Search page size

1..100. Defaults to 100

Include values

Maximum 200 per array, per filter

Exclude values

Maximum 200 per array, per filter

Request body

Maximum 256 KiB

Search credits are based on the number of leads actually returned, not the total number of matches.

Request Body

Search request

{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"],
      "exclude": ["Intern"]
    },
    "location": {
      "include": ["FR"]
    },
    "currentCompany.industry": {
      "include": ["Software Development"]
    },
    "currentCompany.headcount": {
      ">": 10,
      "<=": 500
    }
  },
  "size": 50,
  "cursor": "<next_cursor_from_previous_response>"
}
{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"],
      "exclude": ["Intern"]
    },
    "location": {
      "include": ["FR"]
    },
    "currentCompany.industry": {
      "include": ["Software Development"]
    },
    "currentCompany.headcount": {
      ">": 10,
      "<=": 500
    }
  },
  "size": 50,
  "cursor": "<next_cursor_from_previous_response>"
}
{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"],
      "exclude": ["Intern"]
    },
    "location": {
      "include": ["FR"]
    },
    "currentCompany.industry": {
      "include": ["Software Development"]
    },
    "currentCompany.headcount": {
      ">": 10,
      "<=": 500
    }
  },
  "size": 50,
  "cursor": "<next_cursor_from_previous_response>"
}

Omit cursor on the first request.

Field

Type

Required

Notes

query

object

Yes

Search filters. At least one supported filter is required.

size

integer

No

Results per page. Must be 1..100. Defaults to 100. Search endpoint only.

cursor

string

No

Opaque pagination cursor returned as next_cursor by the previous response.

Count request

The count endpoint accepts the same query object but does not use size or cursor.

{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"]
    },
    "location": {
      "include": ["FR"]
    }
  }
}
{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"]
    },
    "location": {
      "include": ["FR"]
    }
  }
}
{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"]
    },
    "location": {
      "include": ["FR"]
    }
  }
}

Complete request with every filter

Experienced technical leaders in France who recently joined a growing, privately held software company.

{
  "query": {
    "jobTitle": {
      "include": ["CTO", "Chief Technology Officer", "VP Engineering"],
      "exclude": ["Assistant", "Intern"]
    },
    "languages": {
      "include": ["EN"]
    },
    "skills": {
      "include": ["Software Engineering"]
    },
    "location": {
      "include": ["FR"]
    },
    "keyword": {
      "include": ["B2B"]
    },
    "totalYearsOfExperience": {
      ">=": 10
    },
    "timeInCurrentCompany": {
      "<=": 2
    },
    "currentCompany.type": {
      "include": ["Privately Held"]
    },
    "currentCompany.industry": {
      "include": ["Software Development"]
    },
    "currentCompany.location": {
      "include": ["FR"]
    },
    "currentCompany.headcount": {
      ">": 10,
      "<=": 500
    },
    "currentCompany.headcountGrowth": {
      "min": 20,
      "max": 100,
      "timespan": "12months"
    }
  },
  "size": 50
}
{
  "query": {
    "jobTitle": {
      "include": ["CTO", "Chief Technology Officer", "VP Engineering"],
      "exclude": ["Assistant", "Intern"]
    },
    "languages": {
      "include": ["EN"]
    },
    "skills": {
      "include": ["Software Engineering"]
    },
    "location": {
      "include": ["FR"]
    },
    "keyword": {
      "include": ["B2B"]
    },
    "totalYearsOfExperience": {
      ">=": 10
    },
    "timeInCurrentCompany": {
      "<=": 2
    },
    "currentCompany.type": {
      "include": ["Privately Held"]
    },
    "currentCompany.industry": {
      "include": ["Software Development"]
    },
    "currentCompany.location": {
      "include": ["FR"]
    },
    "currentCompany.headcount": {
      ">": 10,
      "<=": 500
    },
    "currentCompany.headcountGrowth": {
      "min": 20,
      "max": 100,
      "timespan": "12months"
    }
  },
  "size": 50
}
{
  "query": {
    "jobTitle": {
      "include": ["CTO", "Chief Technology Officer", "VP Engineering"],
      "exclude": ["Assistant", "Intern"]
    },
    "languages": {
      "include": ["EN"]
    },
    "skills": {
      "include": ["Software Engineering"]
    },
    "location": {
      "include": ["FR"]
    },
    "keyword": {
      "include": ["B2B"]
    },
    "totalYearsOfExperience": {
      ">=": 10
    },
    "timeInCurrentCompany": {
      "<=": 2
    },
    "currentCompany.type": {
      "include": ["Privately Held"]
    },
    "currentCompany.industry": {
      "include": ["Software Development"]
    },
    "currentCompany.location": {
      "include": ["FR"]
    },
    "currentCompany.headcount": {
      ">": 10,
      "<=": 500
    },
    "currentCompany.headcountGrowth": {
      "min": 20,
      "max": 100,
      "timespan": "12months"
    }
  },
  "size": 50
}

Supported Filters

Filter names are matched case-insensitively. Existing requests using JobTitle remain valid; this documentation uses the canonical jobTitle spelling.

Past-company filters are not supported. The API exposes two location-related filters: location and currentCompany.location. It does not expose profileLocation or workLocation.

Person filters

Filter

Type

Description

Example

firstname

Include/Exclude

First name. Open text.

{"include":["John"],"exclude":["Johnny"]}

lastname

Include/Exclude

Last name. Open text.

{"include":["Doe"]}

jobTitle

Include/Exclude

Current job title. Open text.

{"include":["CEO","Founder"],"exclude":["Intern"]}

school

Include/Exclude

School attended by the person. Open text.

{"include":["Stanford","Harvard"]}

languages

Include/Exclude

Spoken language name or alpha-2 language code.

{"include":["English","FR"]}

skills

Include/Exclude

Skill name.

{"include":["JavaScript","Python"]}

location

Include/Exclude

Person or current-job location. Accepts a city, region, country, or alpha-2 country code.

{"include":["Paris, France","US"],"exclude":["DE"]}

keyword

Include/Exclude

Searches the full person profile: titles, descriptions, skills, headline, and education.

{"include":["B2B","SaaS"],"exclude":["Intern"]}

totalYearsOfExperience

Integer range

Total professional experience in years.

{">=":5,"<=":15}

timeInCurrentCompany

Integer range

Time at the current company in years.

{"<=":2}

Current-company filters

Filter

Type

Description

Example

companyDomain

Include/Exclude

Current company domain or website. Domains are normalized to their bare hostname.

{"include":["airscale.io"]}

companyLinkedinUrl

Include/Exclude

Current company LinkedIn URL.

{"include":["https://linkedin.com/company/airscale-io"]}

currentCompanyName

Include/Exclude

Current company name. Open text.

{"include":["Airscale"]}

currentCompany.type

Include/Exclude

Current company ownership or organization type.

{"include":["Privately Held"]}

currentCompany.industry

Include/Exclude

Current company industry.

{"include":["Software Development"]}

currentCompany.location

Include/Exclude

Current company headquarters location. Accepts a city, region, country, or alpha-2 code.

{"include":["FR"]}

currentCompany.keyword

Include/Exclude

Searches the current company profile, including its name and specialties.

{"include":["Higher education"]}

currentCompany.headcount

Integer range

Current company employee count.

{">":10,"<=":500}

currentCompany.revenue

Integer range

Current company revenue.

{">":1000000}

currentCompany.headcountGrowth

Headcount growth

Employee growth percentage over 6, 12, or 24 months.

{"min":20,"max":100,"timespan":"12months"}

The current-job filters (jobTitle, companyDomain, companyLinkedinUrl, timeInCurrentCompany, and every currentCompany.* filter) all apply to the same current experience.

Filter Syntax

Include and exclude

All text filters accept an include array, an exclude array, or both.

{
  "jobTitle": {
    "include": ["CTO", "Chief Technology Officer"],
    "exclude": ["Intern", "Assistant"]
  }
}
{
  "jobTitle": {
    "include": ["CTO", "Chief Technology Officer"],
    "exclude": ["Intern", "Assistant"]
  }
}
{
  "jobTitle": {
    "include": ["CTO", "Chief Technology Officer"],
    "exclude": ["Intern", "Assistant"]
  }
}

Rules:

  • Every value must be a string.

  • Each include or exclude array can contain up to 200 values.

  • A filter must contain at least one of include or exclude.

  • Values within an include array are alternatives.

  • Different filters are combined, so a result must satisfy all supplied filter groups.

companyDomain and companyLinkedinUrl identify the same current-company field internally. When both are supplied, their included values are combined as alternatives, and their excluded values are combined into one exclusion list.

{
  "companyDomain": {
    "include": ["airscale.io"]
  },
  "companyLinkedinUrl": {
    "include": ["https://linkedin.com/company/airscale-io"]
  }
}
{
  "companyDomain": {
    "include": ["airscale.io"]
  },
  "companyLinkedinUrl": {
    "include": ["https://linkedin.com/company/airscale-io"]
  }
}
{
  "companyDomain": {
    "include": ["airscale.io"]
  },
  "companyLinkedinUrl": {
    "include": ["https://linkedin.com/company/airscale-io"]
  }
}

Integer ranges

The following filters accept integer ranges:

totalYearsOfExperience
timeInCurrentCompany
currentCompany.headcount
currentCompany.revenue
totalYearsOfExperience
timeInCurrentCompany
currentCompany.headcount
currentCompany.revenue
totalYearsOfExperience
timeInCurrentCompany
currentCompany.headcount
currentCompany.revenue

Supported operators are >, >=, <, and <=. At least one operator is required.

{
  "totalYearsOfExperience": {
    ">=": 5,
    "<": 15
  },
  "currentCompany.headcount": {
    ">": 10,
    "<=": 500
  }
}
{
  "totalYearsOfExperience": {
    ">=": 5,
    "<": 15
  },
  "currentCompany.headcount": {
    ">": 10,
    "<=": 500
  }
}
{
  "totalYearsOfExperience": {
    ">=": 5,
    "<": 15
  },
  "currentCompany.headcount": {
    ">": 10,
    "<=": 500
  }
}

Range values must be integers. Make sure the lower and upper bounds form a meaningful range.

Headcount growth

currentCompany.headcountGrowth filters companies by employee growth over a specific period.

Field

Type

Required

Notes

timespan

string

Yes

Strict enum: 6months, 12months, or 24months

min

number

Conditional

Minimum growth percentage. At least one of min or max is required.

max

number

Conditional

Maximum growth percentage. At least one of min or max is required.

min and max must be between -100 and 10000, and min cannot be greater than max.

{
  "currentCompany.headcountGrowth": {
    "timespan": "6months",
    "min": -10,
    "max": 50
  }
}
{
  "currentCompany.headcountGrowth": {
    "timespan": "6months",
    "min": -10,
    "max": 50
  }
}
{
  "currentCompany.headcountGrowth": {
    "timespan": "6months",
    "min": -10,
    "max": 50
  }
}

Growth values use percentages:

  • 0 means no change.

  • Positive values mean headcount increased.

  • Negative values mean headcount decreased.

  • -100 means the company lost all employees represented in the dataset.

Location behavior

Use location for the person's location or current-job location. Use currentCompany.location for the headquarters of the current company.

For best results, use ISO alpha-2 country codes such as FR, US, DE, or IN. Common country names are normalized automatically, so France becomes FR. City and regional values are passed through as text.

A comma-separated location narrows the match to all supplied parts. For example, Paris, France targets Paris in France rather than another city named Paris. Multiple entries in an include array remain alternatives.

{
  "location": {
    "include": ["Paris, France", "US"]
  },
  "currentCompany.location": {
    "include": ["FR"]
  }
}
{
  "location": {
    "include": ["Paris, France", "US"]
  },
  "currentCompany.location": {
    "include": ["FR"]
  }
}
{
  "location": {
    "include": ["Paris, France", "US"]
  },
  "currentCompany.location": {
    "include": ["FR"]
  }
}

Preset Values

Company Type

Supported values for currentCompany.type:

Privately Held
Sole Proprietorship
Self-Employed
Partnership
Public Company
Nonprofit
Educational Institution
Government Agency
Privately Held
Sole Proprietorship
Self-Employed
Partnership
Public Company
Nonprofit
Educational Institution
Government Agency
Privately Held
Sole Proprietorship
Self-Employed
Partnership
Public Company
Nonprofit
Educational Institution
Government Agency

Industry

Use the provider's standard industry names for currentCompany.industry, such as:

Software Development
Real Estate
Higher Education
Software Development
Real Estate
Higher Education
Software Development
Real Estate
Higher Education

Headcount Growth Timespan

6months
12months
24months
6months
12months
24months
6months
12months
24months

Pagination

The search endpoint returns up to size leads per request. The default page size is 100; the maximum is 100.

When next_cursor is not null, pass it as cursor in the next request.

{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"]
    },
    "location": {
      "include": ["FR"]
    }
  },
  "size": 50,
  "cursor": "fp_1234abcd"
}
{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"]
    },
    "location": {
      "include": ["FR"]
    }
  },
  "size": 50,
  "cursor": "fp_1234abcd"
}
{
  "query": {
    "jobTitle": {
      "include": ["CEO", "Founder"]
    },
    "location": {
      "include": ["FR"]
    }
  },
  "size": 50,
  "cursor": "fp_1234abcd"
}

Keep query and size unchanged while paginating. Cursors are opaque, expire, and should not be reused indefinitely.

Response

Successful Search Response (200)

{
  "total": 101,
  "leads": [
    {
      "firstname": "Victor",
      "lastname": "Detraz",
      "headline": "Founder @Airscale",
      "description": "...",
      "profileUrl": "https://www.linkedin.com/in/vdetraz",
      "jobTitle": "Founder",
      "jobStartDate": "03-2024",
      "address": "Paris, Ile-de-France, France",
      "companyName": "Airscale",
      "companyUrl": "https://www.linkedin.com/company/airscale-io/",
      "companyWebsite": "https://airscale.io",
      "companySize": 4,
      "companyIndustry": "Technology, Information and Internet",
      "companyAddress": "75009, Paris, France"
    }
  ],
  "next_cursor": "fp_1234abcd"
}
{
  "total": 101,
  "leads": [
    {
      "firstname": "Victor",
      "lastname": "Detraz",
      "headline": "Founder @Airscale",
      "description": "...",
      "profileUrl": "https://www.linkedin.com/in/vdetraz",
      "jobTitle": "Founder",
      "jobStartDate": "03-2024",
      "address": "Paris, Ile-de-France, France",
      "companyName": "Airscale",
      "companyUrl": "https://www.linkedin.com/company/airscale-io/",
      "companyWebsite": "https://airscale.io",
      "companySize": 4,
      "companyIndustry": "Technology, Information and Internet",
      "companyAddress": "75009, Paris, France"
    }
  ],
  "next_cursor": "fp_1234abcd"
}
{
  "total": 101,
  "leads": [
    {
      "firstname": "Victor",
      "lastname": "Detraz",
      "headline": "Founder @Airscale",
      "description": "...",
      "profileUrl": "https://www.linkedin.com/in/vdetraz",
      "jobTitle": "Founder",
      "jobStartDate": "03-2024",
      "address": "Paris, Ile-de-France, France",
      "companyName": "Airscale",
      "companyUrl": "https://www.linkedin.com/company/airscale-io/",
      "companyWebsite": "https://airscale.io",
      "companySize": 4,
      "companyIndustry": "Technology, Information and Internet",
      "companyAddress": "75009, Paris, France"
    }
  ],
  "next_cursor": "fp_1234abcd"
}

next_cursor is null when there are no more pages.

Successful Count Response (200)

{
  "total": 101
}
{
  "total": 101
}
{
  "total": 101
}

Error Responses

Errors are returned as JSON. Validation errors can include a details array.

{
  "error": "Invalid query",
  "details": [
    "Filter \"profileLocation\" is not allowed"
  ]
}
{
  "error": "Invalid query",
  "details": [
    "Filter \"profileLocation\" is not allowed"
  ]
}
{
  "error": "Invalid query",
  "details": [
    "Filter \"profileLocation\" is not allowed"
  ]
}

Status

Meaning

400

Invalid JSON, query, filter structure, range, page size, or cursor.

401

Missing or invalid API key.

403

Insufficient credits for the search endpoint.

404

Unsupported route or HTTP method.

413

Request body exceeds 256 KiB.

429

More than 6 requests per second for the workspace.

502

The people-data provider could not be reached.

503

Authentication or credit service temporarily unavailable.

Example Usage

cURL (search)

curl -X POST https://api.airscale.io/v1/find-people \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "jobTitle": {
        "include": ["CEO", "Founder"]
      },
      "location": {
        "include": ["FR"]
      },
      "currentCompany.industry": {
        "include": ["Software Development"]
      },
      "currentCompany.headcount": {
        ">": 10,
        "<=": 500
      }
    },
    "size": 50
  }'
curl -X POST https://api.airscale.io/v1/find-people \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "jobTitle": {
        "include": ["CEO", "Founder"]
      },
      "location": {
        "include": ["FR"]
      },
      "currentCompany.industry": {
        "include": ["Software Development"]
      },
      "currentCompany.headcount": {
        ">": 10,
        "<=": 500
      }
    },
    "size": 50
  }'
curl -X POST https://api.airscale.io/v1/find-people \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "jobTitle": {
        "include": ["CEO", "Founder"]
      },
      "location": {
        "include": ["FR"]
      },
      "currentCompany.industry": {
        "include": ["Software Development"]
      },
      "currentCompany.headcount": {
        ">": 10,
        "<=": 500
      }
    },
    "size": 50
  }'

cURL (count)

curl -X POST https://api.airscale.io/v1/find-people/count \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "jobTitle": {
        "include": ["CEO", "Founder"]
      },
      "location": {
        "include": ["FR"]
      },
      "currentCompany.headcountGrowth": {
        "min": 20,
        "timespan": "12months"
      }
    }
  }'
curl -X POST https://api.airscale.io/v1/find-people/count \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "jobTitle": {
        "include": ["CEO", "Founder"]
      },
      "location": {
        "include": ["FR"]
      },
      "currentCompany.headcountGrowth": {
        "min": 20,
        "timespan": "12months"
      }
    }
  }'
curl -X POST https://api.airscale.io/v1/find-people/count \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "jobTitle": {
        "include": ["CEO", "Founder"]
      },
      "location": {
        "include": ["FR"]
      },
      "currentCompany.headcountGrowth": {
        "min": 20,
        "timespan": "12months"
      }
    }
  }'

Python

import requests

url = "https://api.airscale.io/v1/find-people"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
    "query": {
        "jobTitle": {"include": ["CEO", "Founder"]},
        "location": {"include": ["FR"]},
        "currentCompany.industry": {"include": ["Software Development"]},
        "currentCompany.headcount": {">": 10, "<=": 500},
    },
    "size": 50,
}

response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
print(response.json())
import requests

url = "https://api.airscale.io/v1/find-people"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
    "query": {
        "jobTitle": {"include": ["CEO", "Founder"]},
        "location": {"include": ["FR"]},
        "currentCompany.industry": {"include": ["Software Development"]},
        "currentCompany.headcount": {">": 10, "<=": 500},
    },
    "size": 50,
}

response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
print(response.json())
import requests

url = "https://api.airscale.io/v1/find-people"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
    "query": {
        "jobTitle": {"include": ["CEO", "Founder"]},
        "location": {"include": ["FR"]},
        "currentCompany.industry": {"include": ["Software Development"]},
        "currentCompany.headcount": {">": 10, "<=": 500},
    },
    "size": 50,
}

response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
print(response.json())

JavaScript (Fetch)

const url = "https://api.airscale.io/v1/find-people";
const headers = {
  Authorization: "Bearer YOUR_API_KEY",
  "Content-Type": "application/json",
};
const payload = {
  query: {
    jobTitle: { include: ["CEO", "Founder"] },
    location: { include: ["FR"] },
    "currentCompany.industry": { include: ["Software Development"] },
    "currentCompany.headcount": { ">": 10, "<=": 500 },
  },
  size: 50,
};

const response = await fetch(url, {
  method: "POST",
  headers,
  body: JSON.stringify(payload),
});

const data = await response.json();
if (!response.ok) {
  throw new Error(JSON.stringify(data));
}

console.log(data);
const url = "https://api.airscale.io/v1/find-people";
const headers = {
  Authorization: "Bearer YOUR_API_KEY",
  "Content-Type": "application/json",
};
const payload = {
  query: {
    jobTitle: { include: ["CEO", "Founder"] },
    location: { include: ["FR"] },
    "currentCompany.industry": { include: ["Software Development"] },
    "currentCompany.headcount": { ">": 10, "<=": 500 },
  },
  size: 50,
};

const response = await fetch(url, {
  method: "POST",
  headers,
  body: JSON.stringify(payload),
});

const data = await response.json();
if (!response.ok) {
  throw new Error(JSON.stringify(data));
}

console.log(data);
const url = "https://api.airscale.io/v1/find-people";
const headers = {
  Authorization: "Bearer YOUR_API_KEY",
  "Content-Type": "application/json",
};
const payload = {
  query: {
    jobTitle: { include: ["CEO", "Founder"] },
    location: { include: ["FR"] },
    "currentCompany.industry": { include: ["Software Development"] },
    "currentCompany.headcount": { ">": 10, "<=": 500 },
  },
  size: 50,
};

const response = await fetch(url, {
  method: "POST",
  headers,
  body: JSON.stringify(payload),
});

const data = await response.json();
if (!response.ok) {
  throw new Error(JSON.stringify(data));
}

console.log(data);

PHP

<?php

$url = 'https://api.airscale.io/v1/find-people';
$headers = [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json'
];
$payload = json_encode([
    'query' => [
        'jobTitle' => ['include' => ['CEO', 'Founder']],
        'location' => ['include' => ['FR']],
        'currentCompany.industry' => ['include' => ['Software Development']],
        'currentCompany.headcount' => ['>' => 10, '<=' => 500]
    ],
    'size' => 50
]);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

<?php

$url = 'https://api.airscale.io/v1/find-people';
$headers = [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json'
];
$payload = json_encode([
    'query' => [
        'jobTitle' => ['include' => ['CEO', 'Founder']],
        'location' => ['include' => ['FR']],
        'currentCompany.industry' => ['include' => ['Software Development']],
        'currentCompany.headcount' => ['>' => 10, '<=' => 500]
    ],
    'size' => 50
]);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

<?php

$url = 'https://api.airscale.io/v1/find-people';
$headers = [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json'
];
$payload = json_encode([
    'query' => [
        'jobTitle' => ['include' => ['CEO', 'Founder']],
        'location' => ['include' => ['FR']],
        'currentCompany.industry' => ['include' => ['Software Development']],
        'currentCompany.headcount' => ['>' => 10, '<=' => 500]
    ],
    'size' => 50
]);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

Go

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    url := "https://api.airscale.io/v1/find-people"

    payload := map[string]interface{}{
        "query": map[string]interface{}{
            "jobTitle": map[string]interface{}{
                "include": []string{"CEO", "Founder"},
            },
            "location": map[string]interface{}{
                "include": []string{"FR"},
            },
            "currentCompany.industry": map[string]interface{}{
                "include": []string{"Software Development"},
            },
            "currentCompany.headcount": map[string]interface{}{
                ">": 10, "<=": 500,
            },
        },
        "size": 50,
    }

    jsonPayload, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonPayload))
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(resp.Status)
    fmt.Println(string(body

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    url := "https://api.airscale.io/v1/find-people"

    payload := map[string]interface{}{
        "query": map[string]interface{}{
            "jobTitle": map[string]interface{}{
                "include": []string{"CEO", "Founder"},
            },
            "location": map[string]interface{}{
                "include": []string{"FR"},
            },
            "currentCompany.industry": map[string]interface{}{
                "include": []string{"Software Development"},
            },
            "currentCompany.headcount": map[string]interface{}{
                ">": 10, "<=": 500,
            },
        },
        "size": 50,
    }

    jsonPayload, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonPayload))
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(resp.Status)
    fmt.Println(string(body

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    url := "https://api.airscale.io/v1/find-people"

    payload := map[string]interface{}{
        "query": map[string]interface{}{
            "jobTitle": map[string]interface{}{
                "include": []string{"CEO", "Founder"},
            },
            "location": map[string]interface{}{
                "include": []string{"FR"},
            },
            "currentCompany.industry": map[string]interface{}{
                "include": []string{"Software Development"},
            },
            "currentCompany.headcount": map[string]interface{}{
                ">": 10, "<=": 500,
            },
        },
        "size": 50,
    }

    jsonPayload, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonPayload))
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(resp.Status)
    fmt.Println(string(body

On this page

© 2026

Airscale · All rights reserved