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.
- Tools
- 14
- What they doRead · write · destructive
- 14 · 0 · 014 read0 write0 destructive
- Users sign in with
- API key
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the People Data Labs connection
In AgentKit > Connections, create a People Data Labs connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts 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.actionsconst connector = 'peopledatalabs'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'peopledatalabs_clean_company',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_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.actionsconnection_name = "peopledatalabs"identifier = "user_123"# Generate an authorization link for the userlink_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 callresult = actions.execute_tool(tool_input={},tool_name="peopledatalabs_clean_company",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their People Data Labs credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolpeopledatalabs_autocompleteSuggest valid People Data Labs values for a field, such as company, school, title, skill, industry or location, from a text prefix.Read-onlyAutocomplete Field Values
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.
Inputs
fieldstringrequired- 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_locationclasscompanycountryindustrylocation_namemajorregionroleschoolsub_roleskilltitlewebsite sizeinteger- Number of suggestions to return, from 1 to 100. Defaults to 10.
textstring- Starting text to complete, e.g. goog. An empty value returns the most common values.
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
peopledatalabs_bulk_enrich_companiesEnrich up to 100 companies in one request; each entry behaves like a separate company enrichment call.Read-onlyBulk Enrich Companies
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.
Inputs
requestsarrayrequired- 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"}}]
peopledatalabs_bulk_enrich_personsEnrich up to 100 people in one request; each entry behaves like a separate person enrichment call.Read-onlyBulk Enrich Persons
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.
Inputs
requestsarrayrequired- 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_includestring- 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_matchedboolean- When true, the response lists which of the request inputs matched this profile.
min_likelihoodinteger- Minimum likelihood score (1 to 10) applied to every request unless its own params override it.
requiredstring- Boolean expression of fields a match must contain, applied to every request unless overridden. Example: work_email AND experience
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
peopledatalabs_clean_companyNormalize a messy company name, website or social profile URL into the standard People Data Labs company identity.Read-onlyClean Company
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.
Inputs
namestring- Company name to normalize, in any capitalization, e.g. People data Labs.
profilestring- Company social profile URL to normalize, e.g. linkedin.com/company/google.
websitestring- Company website to normalize, e.g. www.peopledatalabs.com.
peopledatalabs_clean_locationNormalize a free-text location into the standard People Data Labs location.Read-onlyClean Location
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.
Inputs
locationstringrequired- Location text to normalize, in any capitalization, e.g. 239 NW 13th Ave, Portland, Oregon 97209, US.
peopledatalabs_clean_schoolNormalize a messy school name, website or social profile URL into the standard People Data Labs school identity.Read-onlyClean School
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.
Inputs
namestring- School name to normalize, in any capitalization, e.g. Harvard.
profilestring- School social profile URL to normalize, e.g. linkedin.com/school/harvard-university.
websitestring- School website to normalize, e.g. harvard.edu.
peopledatalabs_enrich_companyFind the single best-matching company profile for a name, website, LinkedIn URL, ticker or PDL ID.Read-onlyEnrich Company
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.
Inputs
countrystring- Country of the company HQ, e.g. United States.
data_includestring- 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_matchedboolean- When true, the response lists which of the request inputs matched this company.
localitystring- City of the company HQ, e.g. Mountain View.
locationstring- Location of the company's headquarters, from street address to country, e.g. 1600 Amphitheatre Pkwy, Mountain View, CA 94043.
min_likelihoodinteger- Minimum likelihood score (1 to 10) for a company to count as a match. Default is 2; use 6 or more for high precision.
namestring- The company's name, e.g. Google, Inc.
pdl_idstring- PDL company ID or LinkedIn slug, e.g. aKCIYBNF9ey6o5CjHCCO4goHYKlf or google. When set, other match inputs are ignored.
postal_codestring- Postal code of the company HQ, e.g. 94043.
profilestring- The company's social profile URL, e.g. linkedin.com/company/google.
regionstring- State or region of the company HQ, e.g. California.
requiredstring- 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_addressstring- Street address of the company HQ, e.g. 1600 Amphitheatre Pkwy.
tickerstring- Stock ticker of a publicly traded company, e.g. GOOGL.
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
websitestring- The company's website, e.g. google.com.
peopledatalabs_enrich_ipLook up the company, and optionally location, metadata and person details, associated with an IP address.Read-onlyEnrich IP Address
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.
Inputs
ipstringrequired- IPv4 or IPv6 address to enrich, e.g. 72.212.42.169.
min_confidencestring- Only return results at or above this confidence for company and person. One of very high, high, moderate, low, very low.one of
very highhighmoderatelowvery low return_if_unmatchedboolean- When true, return IP location or metadata even when no company matches the IP.
return_ip_locationboolean- When true, include location data for the IP regardless of a company match.
return_ip_metadataboolean- When true, include IP metadata (mobile, hosting, proxy, VPN, tor, relay flags) regardless of a company match.
return_personboolean- When true, include person fields (job title role, sub-role and levels) associated with the IP.
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
peopledatalabs_enrich_job_titleNormalize a job title and get related titles and skills from People Data Labs resume data.Read-onlyEnrich Job Title
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.
Inputs
job_titlestringrequired- The job title to enrich, e.g. pastry chef. It must correspond to a title in the PDL job title dataset.
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
peopledatalabs_enrich_personFind the single best-matching person profile for the identifying details you provide, such as an email, LinkedIn URL, phone number, or name plus company.Read-onlyEnrich Person
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.
Inputs
birth_datestring- The person's birth year or full birth date as YYYY-MM-DD, e.g. 1996-10-01.
companystring- Name, website or social URL of a company where the person has worked, e.g. Amazon.
countrystring- Country where the person lives, e.g. United States.
data_includestring- 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
emailstring- An email address the person has used, e.g. sean.thorne@talentiq.co.
email_hashstring- SHA-256 or MD5 hash of an email address the person has used.
first_namestring- The person's first name, e.g. Jennifer. Use together with last_name.
include_if_matchedboolean- When true, the response lists which of the request inputs matched this profile.
last_namestring- The person's last name, e.g. Jackson. Use together with first_name.
lidstring- The person's numeric LinkedIn ID, e.g. 145991517.
localitystring- City or locality where the person lives, e.g. Boise.
locationstring- Where the person lives. Anything from a street address to a country name, e.g. Medford, OR USA.
middle_namestring- The person's middle name, e.g. Cassandra.
min_likelihoodinteger- Minimum likelihood score (1 to 10) for a profile to count as a match. Default is 2; use 6 or more for high precision.
namestring- 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_idstring- PDL persistent ID of a person record, e.g. qEnOZ5Oh0poWnQ1luFBfVw_0000. When set, the other match inputs are ignored.
phonestring- A phone number the person has used. Must begin with +[country code], e.g. +1 555-234-1234.
postal_codestring- Postal code where the person lives, e.g. 83701. Assumed to be US when country is empty.
profilestring- A social profile URL the person has used, e.g. https://linkedin.com/in/seanthorne.
regionstring- State or region where the person lives, e.g. Idaho.
requiredstring- 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)
schoolstring- Name, website or social URL of a school the person attended, e.g. University of Iowa.
street_addressstring- Street address where the person lives, e.g. 1234 Main Street.
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
peopledatalabs_identify_personFind up to 20 candidate person profiles that match broad identifying details such as a name, company, school or street address.Read-onlyIdentify Person
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.
Inputs
birth_datestring- The person's birth year or full birth date as YYYY-MM-DD, e.g. 1996-10-01.
companystring- Name, website or social URL of a company where the person has worked, e.g. Amazon.
countrystring- Country where the person lives, e.g. United States.
data_includestring- 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
emailstring- An email address the person has used, e.g. sean.thorne@talentiq.co.
email_hashstring- SHA-256 or MD5 hash of an email address the person has used.
first_namestring- The person's first name, e.g. Jennifer. Use together with last_name.
include_if_matchedboolean- When true, the response lists which of the request inputs matched this profile.
last_namestring- The person's last name, e.g. Jackson. Use together with first_name.
lidstring- The person's numeric LinkedIn ID, e.g. 145991517.
localitystring- City or locality where the person lives, e.g. Boise.
locationstring- Where the person lives. Anything from a street address to a country name, e.g. Medford, OR USA.
middle_namestring- The person's middle name, e.g. Cassandra.
namestring- 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.
phonestring- A phone number the person has used. Must begin with +[country code], e.g. +1 555-234-1234.
postal_codestring- Postal code where the person lives, e.g. 83701. Assumed to be US when country is empty.
profilestring- A social profile URL the person has used, e.g. https://linkedin.com/in/seanthorne.
regionstring- State or region where the person lives, e.g. Idaho.
schoolstring- Name, website or social URL of a school the person attended, e.g. University of Iowa.
street_addressstring- Street address where the person lives, e.g. 1234 Main Street.
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
peopledatalabs_search_companiesSearch the People Data Labs company dataset with an Elasticsearch query or SQL statement and return matching companies.Read-onlySearch Companies
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.
Inputs
queryobject- 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_tokenstring- Pagination token from the previous response's scroll_token. Send the same query with this token to fetch the next batch.
sizeinteger- Maximum number of records to return, from 1 to 100. Defaults to 1; each record returned uses one credit.
sqlstring- 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'
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
peopledatalabs_search_job_postingsSearch People Data Labs job postings using field filters such as company, title, location, salary and skills, or a raw Elasticsearch query.Read-onlySearch Job Postings
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.
Inputs
company_idstring- PDL company ID of the hiring company, e.g. LGrXE14x4Kvzj2cbaeRUngOCTuJA.
company_industrystring- Industry of the hiring company, e.g. computer software.
company_industry_v2string- Version 2 industry of the hiring company, e.g. software development.
company_namestring- Hiring company name (cleaned, exact match), e.g. anthropic.
company_profilestring- Hiring company LinkedIn profile URL, e.g. linkedin.com/company/amazon.
company_websitestring- Hiring company website (cleaned, exact match), e.g. amazon.com.
deactivated_date_maxstring- Latest deactivated date, YYYY-MM-DD inclusive, e.g. 2026-01-31.
deactivated_date_minstring- Earliest deactivated date, YYYY-MM-DD inclusive, e.g. 2026-01-01.
descriptionstring- Text to find in the job description, e.g. LLM.
first_seen_maxstring- Latest date PDL first saw the posting, YYYY-MM-DD inclusive, e.g. 2026-01-31.
first_seen_minstring- Earliest date PDL first saw the posting, YYYY-MM-DD inclusive, e.g. 2026-01-01.
idstring- PDL persistent job posting ID, e.g. +/vVJ9lbrec.
inferred_skillsstring- Skill inferred from the posting description, e.g. javascript.
is_activeboolean- true returns only active postings, false returns only deactivated postings.
last_verified_maxstring- Latest last-verified date, YYYY-MM-DD inclusive, e.g. 2026-01-31.
last_verified_minstring- Earliest last-verified date, YYYY-MM-DD inclusive, e.g. 2026-01-01.
locationstring- Any location of the posting: street address, city, region, country or postal code, e.g. united states.
queryobject- 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_policystring- Remote work policy of the posting, e.g. Remote.
salary_currencystring- Currency code of the listed salary, e.g. usd.
salary_periodstring- Pay period of the listed salary, e.g. annual.
salary_range_maxinteger- Maximum listed salary; returns postings at or below this value, e.g. 200000.
salary_range_mininteger- Minimum listed salary; returns postings at or above this value, e.g. 100000.
scroll_tokenstring- Pagination token from the previous response's scroll_token. Send the same query with this token to fetch the next batch.
sizeinteger- Maximum number of postings to return, from 1 to 100. Defaults to 10; each record uses one credit.
titlestring- Job title to match (cleaned, phrase match), e.g. data engineer.
title_classstring- PDL job class of the posting, e.g. research_and_development.
title_levelsstring- PDL seniority level of the posting, e.g. senior.
title_rolestring- PDL job role of the posting, e.g. engineering.
title_sub_rolestring- PDL job sub-role of the posting, e.g. data_engineering.
peopledatalabs_search_peopleSearch the People Data Labs person dataset with an Elasticsearch query or SQL statement and return matching profiles.Read-onlySearch People
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.
Inputs
data_includestring- 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
datasetstring- 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.
queryobject- 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_tokenstring- Pagination token from the previous response's scroll_token. Send the same query with this token to fetch the next batch.
sizeinteger- Maximum number of records to return, from 1 to 100. Defaults to 1; each record returned uses one credit.
sqlstring- 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'
titlecaseboolean- When true, text in the response is titlecased instead of the default lowercase.
No tools match.