Skip to main content
POST
People Search with Elasticsearch

Request contract

  • Method and path: POST /apis/v1/people-data-labs/people-search-elastic
  • Availability: enabled
  • Request URL template: https://api.aisa.one/apis/v1/people-data-labs/people-search-elastic
  • Runtime facts: d9aafd76ae02b9bcd98e168c52eb69aba6e12890a1eed8da421910f394e8200a
Complete OpenAPI definition Effective request and pricing declaration (including authentication and referenced schemas):

Cost and request rules

Usage-based billing; Default request estimate: $0.2803 USD (not a fixed price). Declared unit rate: $0.000001 USD per provider_credit. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.
  • Default request reference estimate (USD): 0.2803
  • Declared unit rate (USD): 1e-06
  • Billing unit: provider_credit
  • Cost contract: response_units
  • Published reference multiplier: 1.0
  • Declared maximum count/units: 10000000
  • Settlement evidence source: response_body

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
size
integer
required

The number of matched person records to return. Must be an integer between 1 and 100, inclusive.

Required range: 1 <= x <= 100
query
string
required

Elasticsearch 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

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\"}}]}}"

dataset
enum<string>
required

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.

Available options:
resume
pretty
boolean
default:false

If true, formats the JSON response with human-readable indentation. Defaults to false.

Examples:

true

false

titlecase
boolean
default:false

If true, titlecases the person records in the response. Defaults to false.

Examples:

true

false

scroll_token
string
default:""

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.

Examples:

""

"627445704a7f000001000000"

Response

Tool result data

query
string
required
total
integer
required
records
object[]
required
scroll_token
string
required
composio_execution_message
string