> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to People Data Labs

The People Data Labs connector lets your AI agent act in each user's People Data Labs account. Each user connects their own People Data Labs API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 14 tools.

**Authentication:** API Key
**Categories:** CRM & Sales, Marketing, Search
**Tools:** 14: 14 read, 0 write, 0 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=PEOPLEDATALABS)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the People Data Labs connection

   In **AgentKit > Connections**, create a People Data Labs connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'peopledatalabs'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize People Data Labs:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'peopledatalabs_clean_company',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "peopledatalabs"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize People Data Labs:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="peopledatalabs_clean_company",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their People Data Labs credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'peopledatalabs_autocomplete',
  toolInput: {
    field: 'all_location',
  },
  connector: 'peopledatalabs',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="peopledatalabs_autocomplete",
    tool_input={
        "field": "all_location",
    },
    connection_name="peopledatalabs",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `peopledatalabs_autocomplete`

Autocomplete Field Values · Read-only

Suggest valid People Data Labs values for a field, such as company, school, title, skill, industry or location, from a text prefix.
Returns data, an array of suggestions each with name, count and meta (extra details that depend on the field), sorted by most common first.
Use autocomplete to find exact values before building search_people or search_companies queries. Use clean_company, clean_school or clean_location to normalize one known input.
Provide the field input.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `field` (`string`, required): The field to suggest values for. One of all_location, class, company, country, industry, location_name, major, region, role, school, sub_role, skill, title, website. One of: `all_location`, `class`, `company`, `country`, `industry`, `location_name`, `major`, `region`, `role`, `school`, `sub_role`, `skill`, `title`, `website`.
- `size` (`integer`, optional): Number of suggestions to return, from 1 to 100. Defaults to 10.
- `text` (`string`, optional): Starting text to complete, e.g. goog. An empty value returns the most common values.
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.

Example input: `{"field":"all_location"}`

### `peopledatalabs_bulk_enrich_companies`

Bulk Enrich Companies · Read-only

Enrich up to 100 companies in one request; each entry behaves like a separate company enrichment call.
Returns an array in request order, each item with status, likelihood and data; credits are used per 200 result.
Use bulk_enrich_companies for lists of known companies. Use enrich_company for a single lookup.
Each request needs the same identifying details enrich_company requires.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `requests` (`array`, required): Array of 1 to 100 request objects, each with a params object holding company enrichment inputs such as name, website or profile. Example: [{"params": {"website": "google.com"}}]

Example input: `{"requests":[{"params":{"website":"google.com"}}]}`

### `peopledatalabs_bulk_enrich_persons`

Bulk Enrich Persons · Read-only

Enrich up to 100 people in one request; each entry behaves like a separate person enrichment call.
Returns an array in request order, each item with status, likelihood, data and any metadata you attached; credits are used per 200 result.
Use bulk_enrich_persons for lists of known people and to raise throughput. Use enrich_person for a single lookup.
Each request needs the same identifying details enrich_person requires.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `requests` (`array`, required): Array of 1 to 100 request objects, each with a params object holding person enrichment inputs and an optional metadata object that is returned unchanged. Example: [{"params": {"profile": "linkedin.com/in/seanthorne"}, "metadata": {"id": "1"}}]
- `data_include` (`string`, optional): Comma-separated list of fields the response should include; use dot notation for subfields. Start with - to exclude fields instead. Example: full_name,emails.address
- `include_if_matched` (`boolean`, optional): When true, the response lists which of the request inputs matched this profile.
- `min_likelihood` (`integer`, optional): Minimum likelihood score (1 to 10) applied to every request unless its own params override it.
- `required` (`string`, optional): Boolean expression of fields a match must contain, applied to every request unless overridden. Example: work_email AND experience
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.

Example input: `{"requests":[{"params":{"profile":"linkedin.com/in/seanthorne"},"metadata":{"id":"1"}}]}`

### `peopledatalabs_clean_company`

Clean Company · Read-only

Normalize a messy company name, website or social profile URL into the standard People Data Labs company identity.
Returns the cleaned name, id, size, founded year, industry, location, social URLs, website, ticker, type, score and fuzzy_match flag.
Use clean_company to standardize a company before searching. Use enrich_company for the full company profile.
Provide at least one of name, website or profile.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `name` (`string`, optional): Company name to normalize, in any capitalization, e.g. People data Labs.
- `profile` (`string`, optional): Company social profile URL to normalize, e.g. linkedin.com/company/google.
- `website` (`string`, optional): Company website to normalize, e.g. www.peopledatalabs.com.

Example input: `{}`

### `peopledatalabs_clean_location`

Clean Location · Read-only

Normalize a free-text location into the standard People Data Labs location.
Returns the cleaned name, locality, region, subregion, country, continent, type and geo coordinates.
Use clean_location to standardize a place before searching people or companies. Use autocomplete with field location_name to browse valid values.
Provide the location input.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `location` (`string`, required): Location text to normalize, in any capitalization, e.g. 239 NW 13th Ave, Portland, Oregon 97209, US.

Example input: `{"location":"<location>"}`

### `peopledatalabs_clean_school`

Clean School · Read-only

Normalize a messy school name, website or social profile URL into the standard People Data Labs school identity.
Returns the cleaned name, type, id, location, social URLs, website and domain.
Use clean_school to standardize a school before searching people. Use autocomplete with field school to browse valid names.
Provide at least one of name, website or profile.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `name` (`string`, optional): School name to normalize, in any capitalization, e.g. Harvard.
- `profile` (`string`, optional): School social profile URL to normalize, e.g. linkedin.com/school/harvard-university.
- `website` (`string`, optional): School website to normalize, e.g. harvard.edu.

Example input: `{}`

### `peopledatalabs_enrich_company`

Enrich Company · Read-only

Find the single best-matching company profile for a name, website, LinkedIn URL, ticker or PDL ID.
Returns likelihood (1 to 10) and the full company profile fields such as size, industry, location, funding and social URLs; a 404 means no match was found and is not charged.
Use enrich_company for one known company. Use search_companies to find companies by criteria, or clean_company to only normalize a company name or URL.
Provide at least one of pdl_id, name, ticker, website or profile.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `country` (`string`, optional): Country of the company HQ, e.g. United States.
- `data_include` (`string`, optional): Comma-separated list of fields the response should include; use dot notation for subfields. Start with - to exclude fields instead. Example: name,location.metro
- `include_if_matched` (`boolean`, optional): When true, the response lists which of the request inputs matched this company.
- `locality` (`string`, optional): City of the company HQ, e.g. Mountain View.
- `location` (`string`, optional): Location of the company's headquarters, from street address to country, e.g. 1600 Amphitheatre Pkwy, Mountain View, CA 94043.
- `min_likelihood` (`integer`, optional): Minimum likelihood score (1 to 10) for a company to count as a match. Default is 2; use 6 or more for high precision.
- `name` (`string`, optional): The company's name, e.g. Google, Inc.
- `pdl_id` (`string`, optional): PDL company ID or LinkedIn slug, e.g. aKCIYBNF9ey6o5CjHCCO4goHYKlf or google. When set, other match inputs are ignored.
- `postal_code` (`string`, optional): Postal code of the company HQ, e.g. 94043.
- `profile` (`string`, optional): The company's social profile URL, e.g. linkedin.com/company/google.
- `region` (`string`, optional): State or region of the company HQ, e.g. California.
- `required` (`string`, optional): Boolean expression of top-level company fields a match must contain, so you are only charged for useful matches. Example: location AND (website OR linkedin_url)
- `street_address` (`string`, optional): Street address of the company HQ, e.g. 1600 Amphitheatre Pkwy.
- `ticker` (`string`, optional): Stock ticker of a publicly traded company, e.g. GOOGL.
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.
- `website` (`string`, optional): The company's website, e.g. google.com.

Example input: `{}`

### `peopledatalabs_enrich_ip`

Enrich IP Address · Read-only

Look up the company, and optionally location, metadata and person details, associated with an IP address.
Returns data with ip (address, optional metadata and location), company (id, name, website, size, industry, confidence) and optional person fields; a 404 means no match was found.
Use enrich_ip to identify the organization behind a visitor's IP. Use enrich_company when you already know the company.
Provide the ip input.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `ip` (`string`, required): IPv4 or IPv6 address to enrich, e.g. 72.212.42.169.
- `min_confidence` (`string`, optional): Only return results at or above this confidence for company and person. One of very high, high, moderate, low, very low. One of: `very high`, `high`, `moderate`, `low`, `very low`.
- `return_if_unmatched` (`boolean`, optional): When true, return IP location or metadata even when no company matches the IP.
- `return_ip_location` (`boolean`, optional): When true, include location data for the IP regardless of a company match.
- `return_ip_metadata` (`boolean`, optional): When true, include IP metadata (mobile, hosting, proxy, VPN, tor, relay flags) regardless of a company match.
- `return_person` (`boolean`, optional): When true, include person fields (job title role, sub-role and levels) associated with the IP.
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.

Example input: `{"ip":"<ip>"}`

### `peopledatalabs_enrich_job_title`

Enrich Job Title · Read-only

Normalize a job title and get related titles and skills from People Data Labs resume data.
Returns cleaned_job_title, up to five similar_job_titles and up to five relevant_skills; a 404 means no matching title was found.
Use enrich_job_title to standardize a title or explore related roles. Use search_people to find people holding a title.
Provide the job_title input.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_title` (`string`, required): The job title to enrich, e.g. pastry chef. It must correspond to a title in the PDL job title dataset.
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.

Example input: `{"job_title":"<job_title>"}`

### `peopledatalabs_enrich_person`

Enrich Person · Read-only

Find the single best-matching person profile for the identifying details you provide, such as an email, LinkedIn URL, phone number, or name plus company.
Returns likelihood (1 to 10) and a data object with the full person profile; a 404 means no match was found and is not charged.
Use enrich_person for one known person. Use identify_person to get several candidate profiles from partial details, or search_people to find people by criteria.
Provide at least one of profile, email, phone, email_hash, lid, pdl_id, or a name together with company, school or location.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `birth_date` (`string`, optional): The person's birth year or full birth date as YYYY-MM-DD, e.g. 1996-10-01.
- `company` (`string`, optional): Name, website or social URL of a company where the person has worked, e.g. Amazon.
- `country` (`string`, optional): Country where the person lives, e.g. United States.
- `data_include` (`string`, optional): Comma-separated list of fields the response should include; use dot notation for subfields. Start with - to exclude fields instead. Example: full_name,emails.address
- `email` (`string`, optional): An email address the person has used, e.g. sean.thorne@talentiq.co.
- `email_hash` (`string`, optional): SHA-256 or MD5 hash of an email address the person has used.
- `first_name` (`string`, optional): The person's first name, e.g. Jennifer. Use together with last_name.
- `include_if_matched` (`boolean`, optional): When true, the response lists which of the request inputs matched this profile.
- `last_name` (`string`, optional): The person's last name, e.g. Jackson. Use together with first_name.
- `lid` (`string`, optional): The person's numeric LinkedIn ID, e.g. 145991517.
- `locality` (`string`, optional): City or locality where the person lives, e.g. Boise.
- `location` (`string`, optional): Where the person lives. Anything from a street address to a country name, e.g. Medford, OR USA.
- `middle_name` (`string`, optional): The person's middle name, e.g. Cassandra.
- `min_likelihood` (`integer`, optional): Minimum likelihood score (1 to 10) for a profile to count as a match. Default is 2; use 6 or more for high precision.
- `name` (`string`, optional): The person's full name, at least first and last, e.g. Jennifer C. Jackson. Needs another field such as company, school or location to match.
- `pdl_id` (`string`, optional): PDL persistent ID of a person record, e.g. qEnOZ5Oh0poWnQ1luFBfVw_0000. When set, the other match inputs are ignored.
- `phone` (`string`, optional): A phone number the person has used. Must begin with +[country code], e.g. +1 555-234-1234.
- `postal_code` (`string`, optional): Postal code where the person lives, e.g. 83701. Assumed to be US when country is empty.
- `profile` (`string`, optional): A social profile URL the person has used, e.g. https://linkedin.com/in/seanthorne.
- `region` (`string`, optional): State or region where the person lives, e.g. Idaho.
- `required` (`string`, optional): Boolean expression of top-level fields a match must contain, so you are only charged for useful matches. Example: education AND (emails OR phone_numbers)
- `school` (`string`, optional): Name, website or social URL of a school the person attended, e.g. University of Iowa.
- `street_address` (`string`, optional): Street address where the person lives, e.g. 1234 Main Street.
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.

Example input: `{}`

### `peopledatalabs_identify_person`

Identify Person · Read-only

Find up to 20 candidate person profiles that match broad identifying details such as a name, company, school or street address.
Returns a matches array of profiles, each with a match_score (1 to 99) and its data; one credit is used per call however many profiles return.
Use identify_person when the details cannot pin down one person. Use enrich_person for a unique match, or search_people for criteria-based queries.
Provide at least one of profile, email, phone, email_hash, lid, name, company, school, location, street_address, locality, region or postal_code.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `birth_date` (`string`, optional): The person's birth year or full birth date as YYYY-MM-DD, e.g. 1996-10-01.
- `company` (`string`, optional): Name, website or social URL of a company where the person has worked, e.g. Amazon.
- `country` (`string`, optional): Country where the person lives, e.g. United States.
- `data_include` (`string`, optional): Comma-separated list of fields the response should include; use dot notation for subfields. Start with - to exclude fields instead. Example: full_name,emails.address
- `email` (`string`, optional): An email address the person has used, e.g. sean.thorne@talentiq.co.
- `email_hash` (`string`, optional): SHA-256 or MD5 hash of an email address the person has used.
- `first_name` (`string`, optional): The person's first name, e.g. Jennifer. Use together with last_name.
- `include_if_matched` (`boolean`, optional): When true, the response lists which of the request inputs matched this profile.
- `last_name` (`string`, optional): The person's last name, e.g. Jackson. Use together with first_name.
- `lid` (`string`, optional): The person's numeric LinkedIn ID, e.g. 145991517.
- `locality` (`string`, optional): City or locality where the person lives, e.g. Boise.
- `location` (`string`, optional): Where the person lives. Anything from a street address to a country name, e.g. Medford, OR USA.
- `middle_name` (`string`, optional): The person's middle name, e.g. Cassandra.
- `name` (`string`, optional): The person's full name, at least first and last, e.g. Jennifer C. Jackson. Needs another field such as company, school or location to match.
- `phone` (`string`, optional): A phone number the person has used. Must begin with +[country code], e.g. +1 555-234-1234.
- `postal_code` (`string`, optional): Postal code where the person lives, e.g. 83701. Assumed to be US when country is empty.
- `profile` (`string`, optional): A social profile URL the person has used, e.g. https://linkedin.com/in/seanthorne.
- `region` (`string`, optional): State or region where the person lives, e.g. Idaho.
- `school` (`string`, optional): Name, website or social URL of a school the person attended, e.g. University of Iowa.
- `street_address` (`string`, optional): Street address where the person lives, e.g. 1234 Main Street.
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.

Example input: `{}`

### `peopledatalabs_search_companies`

Search Companies · Read-only

Search the People Data Labs company dataset with an Elasticsearch query or SQL statement and return matching companies.
Returns data (an array of company profiles), total matches, and a scroll_token for the next page; each company returned uses one credit.
Use search_companies to find an open-ended set of companies by criteria. Use enrich_company for one known company.
Provide exactly one of query or sql.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`object`, optional): Elasticsearch (v7.7) query object over company fields. Supports term, terms, exists, bool, match, range, match_phrase, wildcard, prefix and match_all. Provide either query or sql, not both. Example: {"term": {"website": "google.com"}}
- `scroll_token` (`string`, optional): Pagination token from the previous response's scroll_token. Send the same query with this token to fetch the next batch.
- `size` (`integer`, optional): Maximum number of records to return, from 1 to 100. Defaults to 1; each record returned uses one credit.
- `sql` (`string`, optional): SQL query of the form SELECT * FROM company WHERE <condition> over company fields. Provide either sql or query, not both. Example: SELECT * FROM company WHERE name='people data labs'
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.

Example input: `{}`

### `peopledatalabs_search_job_postings`

Search Job Postings · Read-only

Search People Data Labs job postings using field filters such as company, title, location, salary and skills, or a raw Elasticsearch query.
Returns data (an array of job posting records, newest first), total matches, scroll_token and dataset_version; each record uses one credit.
Use search_job_postings to find open roles or hiring signals. Use search_companies for company records and enrich_company for one company.
Provide at least one field filter or a query; query overrides the field filters. This API is in beta.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`string`, optional): PDL company ID of the hiring company, e.g. LGrXE14x4Kvzj2cbaeRUngOCTuJA.
- `company_industry` (`string`, optional): Industry of the hiring company, e.g. computer software.
- `company_industry_v2` (`string`, optional): Version 2 industry of the hiring company, e.g. software development.
- `company_name` (`string`, optional): Hiring company name (cleaned, exact match), e.g. anthropic.
- `company_profile` (`string`, optional): Hiring company LinkedIn profile URL, e.g. linkedin.com/company/amazon.
- `company_website` (`string`, optional): Hiring company website (cleaned, exact match), e.g. amazon.com.
- `deactivated_date_max` (`string`, optional): Latest deactivated date, YYYY-MM-DD inclusive, e.g. 2026-01-31.
- `deactivated_date_min` (`string`, optional): Earliest deactivated date, YYYY-MM-DD inclusive, e.g. 2026-01-01.
- `description` (`string`, optional): Text to find in the job description, e.g. LLM.
- `first_seen_max` (`string`, optional): Latest date PDL first saw the posting, YYYY-MM-DD inclusive, e.g. 2026-01-31.
- `first_seen_min` (`string`, optional): Earliest date PDL first saw the posting, YYYY-MM-DD inclusive, e.g. 2026-01-01.
- `id` (`string`, optional): PDL persistent job posting ID, e.g. +/vVJ9lbrec.
- `inferred_skills` (`string`, optional): Skill inferred from the posting description, e.g. javascript.
- `is_active` (`boolean`, optional): true returns only active postings, false returns only deactivated postings.
- `last_verified_max` (`string`, optional): Latest last-verified date, YYYY-MM-DD inclusive, e.g. 2026-01-31.
- `last_verified_min` (`string`, optional): Earliest last-verified date, YYYY-MM-DD inclusive, e.g. 2026-01-01.
- `location` (`string`, optional): Any location of the posting: street address, city, region, country or postal code, e.g. united states.
- `query` (`object`, optional): Elasticsearch (v7.7) query object over job posting fields. When set, all field filters are ignored. Example: {"bool": {"must": [{"term": {"company_name": "anthropic"}}]}}
- `remote_work_policy` (`string`, optional): Remote work policy of the posting, e.g. Remote.
- `salary_currency` (`string`, optional): Currency code of the listed salary, e.g. usd.
- `salary_period` (`string`, optional): Pay period of the listed salary, e.g. annual.
- `salary_range_max` (`integer`, optional): Maximum listed salary; returns postings at or below this value, e.g. 200000.
- `salary_range_min` (`integer`, optional): Minimum listed salary; returns postings at or above this value, e.g. 100000.
- `scroll_token` (`string`, optional): Pagination token from the previous response's scroll_token. Send the same query with this token to fetch the next batch.
- `size` (`integer`, optional): Maximum number of postings to return, from 1 to 100. Defaults to 10; each record uses one credit.
- `title` (`string`, optional): Job title to match (cleaned, phrase match), e.g. data engineer.
- `title_class` (`string`, optional): PDL job class of the posting, e.g. research_and_development.
- `title_levels` (`string`, optional): PDL seniority level of the posting, e.g. senior.
- `title_role` (`string`, optional): PDL job role of the posting, e.g. engineering.
- `title_sub_role` (`string`, optional): PDL job sub-role of the posting, e.g. data_engineering.

Example input: `{}`

### `peopledatalabs_search_people`

Search People · Read-only

Search the People Data Labs person dataset with an Elasticsearch query or SQL statement and return matching profiles.
Returns data (an array of person profiles), total matches, and a scroll_token for the next page; each profile returned uses one credit.
Use search_people to find an open-ended set of people by criteria. Use enrich_person for one known person or identify_person for candidates from partial details.
Provide exactly one of query or sql; use the autocomplete or clean tools first to get valid field values.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `data_include` (`string`, optional): Comma-separated list of fields the response should include; use dot notation for subfields. Start with - to exclude fields instead. Example: full_name,job_title,job_company_name
- `dataset` (`string`, optional): Dataset slices to search, comma-separated: all, resume, email, phone, mobile_phone, street_address, consumer_social, developer. Prefix with - to exclude, e.g. all,-phone. Defaults to resume.
- `query` (`object`, optional): Elasticsearch (v7.7) query object over person fields. Supports term, terms, exists, bool, match, range, match_phrase, wildcard, prefix and match_all. Provide either query or sql, not both. Example: {"bool": {"must": [{"term": {"job_company_name": "people data labs"}}]}}
- `scroll_token` (`string`, optional): Pagination token from the previous response's scroll_token. Send the same query with this token to fetch the next batch.
- `size` (`integer`, optional): Maximum number of records to return, from 1 to 100. Defaults to 1; each record returned uses one credit.
- `sql` (`string`, optional): SQL query of the form SELECT * FROM person WHERE <condition> over person fields. Provide either sql or query, not both. Example: SELECT * FROM person WHERE job_company_name='people data labs'
- `titlecase` (`boolean`, optional): When true, text in the response is titlecased instead of the default lowercase.

Example input: `{}`

## Related

Other CRM & Sales connectors ([all 97](/agentkit/connectors/?category=crm-sales)):

- [Insightly](/agentkit/connectors/insightly/): Scalekit connector, API key, 108 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
