curl --request POST \
--url https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"size": 50,
"query": "{\"bool\": {\"must\": [{\"term\": {\"job_company_industry\": \"computer software\"}}]}}",
"dataset": "resume"
}
'import requests
url = "https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic"
payload = {
"size": 50,
"query": "{\"bool\": {\"must\": [{\"term\": {\"job_company_industry\": \"computer software\"}}]}}",
"dataset": "resume"
}
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({
size: 50,
query: '{"bool": {"must": [{"term": {"job_company_industry": "computer software"}}]}}',
dataset: 'resume'
})
};
fetch('https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'size' => 50,
'query' => '{"bool": {"must": [{"term": {"job_company_industry": "computer software"}}]}}',
'dataset' => 'resume'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic"
payload := strings.NewReader("{\n \"size\": 50,\n \"query\": \"{\\\"bool\\\": {\\\"must\\\": [{\\\"term\\\": {\\\"job_company_industry\\\": \\\"computer software\\\"}}]}}\",\n \"dataset\": \"resume\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"size\": 50,\n \"query\": \"{\\\"bool\\\": {\\\"must\\\": [{\\\"term\\\": {\\\"job_company_industry\\\": \\\"computer software\\\"}}]}}\",\n \"dataset\": \"resume\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"size\": 50,\n \"query\": \"{\\\"bool\\\": {\\\"must\\\": [{\\\"term\\\": {\\\"job_company_industry\\\": \\\"computer software\\\"}}]}}\",\n \"dataset\": \"resume\"\n}"
response = http.request(request)
puts response.read_body{
"query": "<string>",
"total": 123,
"records": [
{
"id": "<string>",
"sex": "<string>",
"emails": true,
"skills": [
"<string>"
],
"regions": true,
"industry": "<string>",
"profiles": [
{
"id": "<string>",
"url": "<string>",
"network": "<string>",
"username": "<string>",
"last_seen": "<string>",
"first_seen": "<string>",
"num_sources": 123
}
],
"countries": [
"<string>"
],
"education": [
{
"gpa": "<string>",
"majors": [
"<string>"
],
"minors": [
"<string>"
],
"school": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"domain": "<string>",
"website": "<string>",
"location": {
"geo": "<string>",
"name": "<string>",
"metro": "<string>",
"region": "<string>",
"country": "<string>",
"locality": "<string>",
"continent": "<string>",
"postal_code": "<string>",
"address_line_2": "<string>",
"street_address": "<string>"
},
"linkedin_id": "<string>",
"twitter_url": "<string>",
"facebook_url": "<string>",
"linkedin_url": "<string>"
},
"degrees": [
"<string>"
],
"end_date": "<string>",
"start_date": "<string>"
}
],
"full_name": "<string>",
"interests": [
"<string>"
],
"job_title": "<string>",
"last_name": "<string>",
"birth_date": true,
"birth_year": true,
"experience": [
{
"title": {
"name": "<string>",
"role": "<string>",
"class": "<string>",
"levels": [
"<string>"
],
"sub_role": "<string>"
},
"company": {
"id": "<string>",
"name": "<string>",
"size": "<string>",
"type": "<string>",
"ticker": "<string>",
"founded": 123,
"website": "<string>",
"industry": "<string>",
"location": {
"geo": "<string>",
"name": "<string>",
"metro": "<string>",
"region": "<string>",
"country": "<string>",
"locality": "<string>",
"continent": "<string>",
"postal_code": "<string>",
"address_line_2": "<string>",
"street_address": "<string>"
},
"industry_v2": "<string>",
"linkedin_id": "<string>",
"twitter_url": "<string>",
"facebook_url": "<string>",
"linkedin_url": "<string>"
},
"end_date": "<string>",
"is_primary": true,
"start_date": "<string>",
"location_names": [
"<string>"
]
}
],
"first_name": "<string>",
"github_url": "<string>",
"work_email": true,
"facebook_id": "<string>",
"linkedin_id": "<string>",
"middle_name": "<string>",
"twitter_url": "<string>",
"facebook_url": "<string>",
"last_initial": "<string>",
"linkedin_url": "<string>",
"location_geo": true,
"mobile_phone": true,
"location_name": true,
"phone_numbers": true,
"job_company_id": "<string>",
"job_start_date": "<string>",
"job_title_role": "<string>",
"location_metro": true,
"location_names": true,
"middle_initial": "<string>",
"dataset_version": "<string>",
"github_username": "<string>",
"job_title_class": "<string>",
"location_region": true,
"personal_emails": true,
"job_company_name": "<string>",
"job_company_size": "<string>",
"job_last_changed": "<string>",
"job_title_levels": [
"<string>"
],
"location_country": "<string>",
"street_addresses": [
{}
],
"twitter_username": "<string>",
"facebook_username": "<string>",
"job_last_verified": "<string>",
"linkedin_username": "<string>",
"location_locality": true,
"job_title_sub_role": "<string>",
"location_continent": "<string>",
"job_company_founded": 123,
"job_company_website": "<string>",
"job_company_industry": "<string>",
"location_postal_code": true,
"location_last_updated": "<string>",
"job_company_industry_v2": "<string>",
"job_company_linkedin_id": "<string>",
"job_company_twitter_url": "<string>",
"location_address_line_2": "<string>",
"location_street_address": true,
"job_company_facebook_url": "<string>",
"job_company_linkedin_url": "<string>",
"job_company_location_geo": "<string>",
"job_company_location_name": "<string>",
"job_company_location_metro": "<string>",
"recommended_personal_email": true,
"job_company_location_region": "<string>",
"job_company_location_country": "<string>",
"job_company_location_locality": "<string>",
"job_company_location_continent": "<string>",
"job_company_location_postal_code": "<string>",
"job_company_location_address_line_2": "<string>",
"job_company_location_street_address": "<string>"
}
],
"scroll_token": "<string>",
"composio_execution_message": "<string>"
}People Search with Elasticsearch
curl --request POST \
--url https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"size": 50,
"query": "{\"bool\": {\"must\": [{\"term\": {\"job_company_industry\": \"computer software\"}}]}}",
"dataset": "resume"
}
'import requests
url = "https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic"
payload = {
"size": 50,
"query": "{\"bool\": {\"must\": [{\"term\": {\"job_company_industry\": \"computer software\"}}]}}",
"dataset": "resume"
}
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({
size: 50,
query: '{"bool": {"must": [{"term": {"job_company_industry": "computer software"}}]}}',
dataset: 'resume'
})
};
fetch('https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'size' => 50,
'query' => '{"bool": {"must": [{"term": {"job_company_industry": "computer software"}}]}}',
'dataset' => 'resume'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic"
payload := strings.NewReader("{\n \"size\": 50,\n \"query\": \"{\\\"bool\\\": {\\\"must\\\": [{\\\"term\\\": {\\\"job_company_industry\\\": \\\"computer software\\\"}}]}}\",\n \"dataset\": \"resume\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"size\": 50,\n \"query\": \"{\\\"bool\\\": {\\\"must\\\": [{\\\"term\\\": {\\\"job_company_industry\\\": \\\"computer software\\\"}}]}}\",\n \"dataset\": \"resume\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"size\": 50,\n \"query\": \"{\\\"bool\\\": {\\\"must\\\": [{\\\"term\\\": {\\\"job_company_industry\\\": \\\"computer software\\\"}}]}}\",\n \"dataset\": \"resume\"\n}"
response = http.request(request)
puts response.read_body{
"query": "<string>",
"total": 123,
"records": [
{
"id": "<string>",
"sex": "<string>",
"emails": true,
"skills": [
"<string>"
],
"regions": true,
"industry": "<string>",
"profiles": [
{
"id": "<string>",
"url": "<string>",
"network": "<string>",
"username": "<string>",
"last_seen": "<string>",
"first_seen": "<string>",
"num_sources": 123
}
],
"countries": [
"<string>"
],
"education": [
{
"gpa": "<string>",
"majors": [
"<string>"
],
"minors": [
"<string>"
],
"school": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"domain": "<string>",
"website": "<string>",
"location": {
"geo": "<string>",
"name": "<string>",
"metro": "<string>",
"region": "<string>",
"country": "<string>",
"locality": "<string>",
"continent": "<string>",
"postal_code": "<string>",
"address_line_2": "<string>",
"street_address": "<string>"
},
"linkedin_id": "<string>",
"twitter_url": "<string>",
"facebook_url": "<string>",
"linkedin_url": "<string>"
},
"degrees": [
"<string>"
],
"end_date": "<string>",
"start_date": "<string>"
}
],
"full_name": "<string>",
"interests": [
"<string>"
],
"job_title": "<string>",
"last_name": "<string>",
"birth_date": true,
"birth_year": true,
"experience": [
{
"title": {
"name": "<string>",
"role": "<string>",
"class": "<string>",
"levels": [
"<string>"
],
"sub_role": "<string>"
},
"company": {
"id": "<string>",
"name": "<string>",
"size": "<string>",
"type": "<string>",
"ticker": "<string>",
"founded": 123,
"website": "<string>",
"industry": "<string>",
"location": {
"geo": "<string>",
"name": "<string>",
"metro": "<string>",
"region": "<string>",
"country": "<string>",
"locality": "<string>",
"continent": "<string>",
"postal_code": "<string>",
"address_line_2": "<string>",
"street_address": "<string>"
},
"industry_v2": "<string>",
"linkedin_id": "<string>",
"twitter_url": "<string>",
"facebook_url": "<string>",
"linkedin_url": "<string>"
},
"end_date": "<string>",
"is_primary": true,
"start_date": "<string>",
"location_names": [
"<string>"
]
}
],
"first_name": "<string>",
"github_url": "<string>",
"work_email": true,
"facebook_id": "<string>",
"linkedin_id": "<string>",
"middle_name": "<string>",
"twitter_url": "<string>",
"facebook_url": "<string>",
"last_initial": "<string>",
"linkedin_url": "<string>",
"location_geo": true,
"mobile_phone": true,
"location_name": true,
"phone_numbers": true,
"job_company_id": "<string>",
"job_start_date": "<string>",
"job_title_role": "<string>",
"location_metro": true,
"location_names": true,
"middle_initial": "<string>",
"dataset_version": "<string>",
"github_username": "<string>",
"job_title_class": "<string>",
"location_region": true,
"personal_emails": true,
"job_company_name": "<string>",
"job_company_size": "<string>",
"job_last_changed": "<string>",
"job_title_levels": [
"<string>"
],
"location_country": "<string>",
"street_addresses": [
{}
],
"twitter_username": "<string>",
"facebook_username": "<string>",
"job_last_verified": "<string>",
"linkedin_username": "<string>",
"location_locality": true,
"job_title_sub_role": "<string>",
"location_continent": "<string>",
"job_company_founded": 123,
"job_company_website": "<string>",
"job_company_industry": "<string>",
"location_postal_code": true,
"location_last_updated": "<string>",
"job_company_industry_v2": "<string>",
"job_company_linkedin_id": "<string>",
"job_company_twitter_url": "<string>",
"location_address_line_2": "<string>",
"location_street_address": true,
"job_company_facebook_url": "<string>",
"job_company_linkedin_url": "<string>",
"job_company_location_geo": "<string>",
"job_company_location_name": "<string>",
"job_company_location_metro": "<string>",
"recommended_personal_email": true,
"job_company_location_region": "<string>",
"job_company_location_country": "<string>",
"job_company_location_locality": "<string>",
"job_company_location_continent": "<string>",
"job_company_location_postal_code": "<string>",
"job_company_location_address_line_2": "<string>",
"job_company_location_street_address": "<string>"
}
],
"scroll_token": "<string>",
"composio_execution_message": "<string>"
}请求规范
- 方法与路径: POST /apis/v1/people-data-labs/people-search-elastic
- 可用状态: enabled
- 请求 URL 模板:
https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic - Runtime 事实版本: d9aafd76ae02b9bcd98e168c52eb69aba6e12890a1eed8da421910f394e8200a
{
"operationId": "people-data-labs.people-search-elastic",
"method": "POST",
"path": "/apis/v1/people-data-labs/people-search-elastic",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"size": {
"maximum": 100,
"minimum": 1,
"type": "integer",
"description": "The number of matched person records to return. Must be an integer between 1 and 100, inclusive."
},
"query": {
"type": "string",
"examples": [
"{\"bool\": {\"must\": [{\"term\": {\"job_company_industry\": \"computer software\"}}]}}",
"{\"bool\": {\"must\": [{\"term\": {\"job_title_role\": \"engineer\"}}, {\"term\": {\"location_country\": \"united states\"}}]}}",
"{\"bool\": {\"should\": [{\"match\": {\"full_name\": \"john\"}}, {\"match\": {\"first_name\": \"john\"}}]}}"
],
"description": "Elasticsearch DSL query string (JSON object) for searching PDL person profiles. Provide just the DSL body (e.g., '{\"bool\": {...}}') without an outer 'query' wrapper.\n\nSupported query types: term, terms, match, match_phrase, prefix, wildcard, range, exists, bool (must/should/filter/must_not).\n\nALL field names MUST use snake_case, NOT camelCase.\n\nValid queryable fields include:\n- Name: full_name, first_name, last_name, middle_name\n- Job: job_title, job_title_role, job_title_class, job_company_name, job_company_industry, job_company_size, job_company_website, job_company_location_*\n- Location (NOT 'location' alone): location_country, location_region, location_locality, location_metro, location_geo\n- Social: linkedin_url, linkedin_username, linkedin_id, facebook_url, facebook_username, twitter_url, twitter_username, github_url, github_username\n- Nested profiles: profiles.network, profiles.url, profiles.username, profiles.id\n- Other: industry, skills, interests, countries, sex, work_email, personal_emails\n\nNOT queryable as fields (use 'dataset' parameter instead): email, phone.\n'experience_level' is not valid — use 'job_title_levels'. 'job_company_domain' is not valid — use 'job_company_website'. 'minimum_should_match' is not supported by PDL's API.\n\nFull field reference: https://docs.peopledatalabs.com/docs/fields-person"
},
"pretty": {
"type": "boolean",
"default": false,
"examples": [
true,
false
],
"description": "If true, formats the JSON response with human-readable indentation. Defaults to false."
},
"dataset": {
"enum": [
"resume"
],
"type": "string",
"description": "Specifies the dataset category to search against, filtering results to profiles that have the specified type of data available. Allowed values are: 'resume', 'email', 'phone', 'mobile_phone', 'street_address', 'consumer_social', 'developer', 'all'. Note: Use 'email' here to filter for profiles with email addresses available, rather than querying 'email' as a field in the query parameter."
},
"titlecase": {
"type": "boolean",
"default": false,
"examples": [
true,
false
],
"description": "If true, titlecases the person records in the response. Defaults to false."
},
"scroll_token": {
"type": "string",
"default": "",
"examples": [
"",
"627445704a7f000001000000"
],
"description": "A token returned in a previous search response. Provide this token to retrieve the next page of results. Omit or pass an empty string for the first request."
}
},
"required": [
"dataset",
"query",
"size"
]
}
}
}
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "response_units",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.2803,
"estimate_source": "profile_seed",
"evidence_source": "response_body",
"maximum_units": 10000000,
"unit": "provider_credit",
"unit_rate_usd": 1e-06
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
费用与请求规则
按用量计费;默认请求预估费用:$0.2803 USD(不是固定价格)。 声明的单位费率:每 provider_credit $0.000001 USD。 最终费用以账户适用价格及实际结算为准。 公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。- 默认请求参考估价(USD): 0.2803
- 声明的单位费率(USD): 1e-06
- 计费单位: provider_credit
- 计费依据: response_units
- 公开参考倍率: 1.0
- 声明的最大计数或单位数: 10000000
- 结算证据来源: response_body
授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
请求体
The number of matched person records to return. Must be an integer between 1 and 100, inclusive.
1 <= x <= 100Elasticsearch DSL query string (JSON object) for searching PDL person profiles. Provide just the DSL body (e.g., '{"bool": {...}}') without an outer 'query' wrapper.
Supported query types: term, terms, match, match_phrase, prefix, wildcard, range, exists, bool (must/should/filter/must_not).
ALL field names MUST use snake_case, NOT camelCase.
Valid queryable fields include:
- Name: full_name, first_name, last_name, middle_name
- Job: job_title, job_title_role, job_title_class, job_company_name, job_company_industry, job_company_size, job_company_website, job_company_location_*
- Location (NOT 'location' alone): location_country, location_region, location_locality, location_metro, location_geo
- Social: linkedin_url, linkedin_username, linkedin_id, facebook_url, facebook_username, twitter_url, twitter_username, github_url, github_username
- Nested profiles: profiles.network, profiles.url, profiles.username, profiles.id
- Other: industry, skills, interests, countries, sex, work_email, personal_emails
NOT queryable as fields (use 'dataset' parameter instead): email, phone. 'experience_level' is not valid — use 'job_title_levels'. 'job_company_domain' is not valid — use 'job_company_website'. 'minimum_should_match' is not supported by PDL's API.
Full field reference: https://docs.peopledatalabs.com/docs/fields-person
"{\"bool\": {\"must\": [{\"term\": {\"job_company_industry\": \"computer software\"}}]}}"
"{\"bool\": {\"must\": [{\"term\": {\"job_title_role\": \"engineer\"}}, {\"term\": {\"location_country\": \"united states\"}}]}}"
"{\"bool\": {\"should\": [{\"match\": {\"full_name\": \"john\"}}, {\"match\": {\"first_name\": \"john\"}}]}}"
Specifies the dataset category to search against, filtering results to profiles that have the specified type of data available. Allowed values are: 'resume', 'email', 'phone', 'mobile_phone', 'street_address', 'consumer_social', 'developer', 'all'. Note: Use 'email' here to filter for profiles with email addresses available, rather than querying 'email' as a field in the query parameter.
resume If true, formats the JSON response with human-readable indentation. Defaults to false.
true
false
If true, titlecases the person records in the response. Defaults to false.
true
false
A token returned in a previous search response. Provide this token to retrieve the next page of results. Omit or pass an empty string for the first request.
""
"627445704a7f000001000000"