---
title: People Data Labs API Integration on Truto
slug: peopledatalabs
category: Sales Intelligence
canonical: "https://truto.one/integrations/detail/peopledatalabs/"
---

# People Data Labs API Integration on Truto



**Category:** Sales Intelligence  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 17 tools for People Data Labs that AI agents can call directly.

- **people_data_labs_people_search** — Search People Data Labs person records with an Elasticsearch query or SQL; 1 credit per returned record, 1-100 per page. Returns: status, data, total, scroll_token. Pass exactly one of query or sql. Paginate by passing the previous scroll_token; a null scroll_token means the last page; no-match queries return an empty result.
- **people_data_labs_people_enrich** — Enrich a single person in People Data Labs. Returns: status, likelihood, data, matched. Required: profile, email, phone, email_hash, lid or pdl_id alone, or name (or first_name + last_name) plus a locator such as company, school, location or postal_code. No-match requests return 404 and are not charged.
- **people_data_labs_people_bulk_enrich** — Bulk enrich up to 100 people in one People Data Labs request; 1 credit per 200 results. Returns a JSON array of per-request objects: data, status, likelihood, and optional metadata. Requires requests (1-100 objects, each with params); set required, include_if_matched, titlecase, data_include, min_likelihood globally.
- **people_data_labs_people_identify** — Identify a person in People Data Labs, returning up to 20 candidate profiles sorted by match score. Returns: status, matches (data, match_score, matched_on). Send at least one of profile, email, phone, email_hash, lid, street_address, locality, region, company, school, location, postal_code, name, or first_name + last_name. Each call consumes 1 credit, billed on 200 and 404; 404 when no match. Rate limit: 10 calls/min.
- **people_data_labs_people_preview_enrich** — Preview a Person Enrichment result in People Data Labs using the same inputs as the Person Enrichment API. Returns: status, likelihood, data. Enterprise purchase only; 404 means no match.
- **people_data_labs_companies_search** — Search People Data Labs company records with an Elasticsearch query (query) or SQL (sql) filter. Returns: status, data, total, scroll_token. Page with scroll_token; size 1-100 (default 1); a 404 not_found (no records matched) is returned as an empty result {status:404, data:[], total:0}.
- **people_data_labs_companies_enrich** — Enrich a single People Data Labs company with a one-to-one match. Returns the matched company record including status, id, name, and likelihood. Requires one of pdl_id, name, ticker, website, or profile. A 404 is returned when no match exists.
- **people_data_labs_companies_bulk_enrich** — Bulk enrich up to 100 People Data Labs companies in one request. Returns a JSON array of per-company results, each with data, status, and likelihood. Credits are deducted per 200-status result. Required: requests (an array of 1-100 objects, each with a params object).
- **people_data_labs_companies_clean** — Clean a company in People Data Labs using its name, website or LinkedIn profile and return the cleaned company record. Returns: status, id, name, website, size, founded, industry, location, linkedin_url, linkedin_id, facebook_url, twitter_url, ticker, type, raw, score, fuzzy_match. Requires at least one of name, website or profile; a 404 means no match was found. Free; 10 requests/min and 10,000/month by default.
- **list_all_people_data_labs_autocomplete_suggestions** — Get People Data Labs autocomplete suggestions (name, count, meta) for one field, such as school or company. Required: field. Free; 60 requests/min and 1,000/day. The vendor's top-level fields array is not returned.
- **people_data_labs_ips_enrich** — Enrich an IPv4/IPv6 address in People Data Labs with matching company data and optional person, location and metadata details. Returns: status, data. Required: ip. Consumes 1 credit per match; unmatched IPs return 404 unbilled; hosting, proxy, tor or relay IPs return 400. Rate limit: 100/min free, 1,000/min paid. IP metadata is a premium add-on (extra price).
- **people_data_labs_job_postings_search** — Search People Data Labs job postings (beta; access must be requested from PDL) using exactly one search mode: field filters (AND-combined) or an Elasticsearch v7.7 query. Consumes 1 credit per record returned; pages via scroll_token. Returns: status, data, total, scroll_token, dataset_version. Required: one field filter or query in the body.
- **people_data_labs_job_titles_enrich** — Clean a raw job title with People Data Labs. Returns: status, data (cleaned_job_title, similar_job_titles, relevant_skills); the reference page shows these three keys at the top level instead, so read both. Required: job_title. A 404 is returned when no matching job title is found; charged per match.
- **people_data_labs_locations_clean** — Clean a free-form location string into a structured location record in People Data Labs. Returns: name, locality, region, subregion, country, continent, type, geo. Required: location. A 404 means the location could not be parsed. Free; 10 requests/min and 10,000/month by default.
- **people_data_labs_person_changelogs_search** — Track person record changes between two People Data Labs dataset versions. Returns: status, data. Required: origin_version and current_version (valid and consecutive). Supply type unless submitting ids instead; each records array holds up to 1000 entries; paginate with the returned scroll_token. Paging is complete when scroll_token is null or PDL answers 404 (returned here as {status:404, data:{}}).
- **people_data_labs_schools_clean** — Clean a school name, website, or LinkedIn profile in People Data Labs and return the cleaned school record. Returns: name, type, id, location, linkedin_url, facebook_url, twitter_url, linkedin_id, website, domain. Requires at least one of name, website, or profile; a 404 means no match was found. Free; 10 requests/min and 10,000/month by default.
- **people_data_labs_subject_requests_download** — Download the list of person IDs that have opted out of People Data Labs data. Takes no input parameters. Returns a plain-text response (not JSON): a first line of pdl_id followed by one PDL ID per line for each opted-out person. Through MCP the list is not returned inline; download it through the Proxy API.

## How it works

1. **Link your customer's People Data Labs account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach People Data Labs.** The Proxy API is a 1-to-1 mapping of the People Data Labs API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed native lead enrichment in your SalesTech product** — Give your end users instant lead and account enrichment inside your CRM or sales platform. When a new lead lands, automatically fetch job titles, LinkedIn URLs, company headcount, and industry so your users skip long forms and manual research.
- **Power an in-app prospecting engine for your users** — Let your customers build targeted lists without leaving your product. Translate your UI filters into PDL's Elasticsearch or SQL syntax and run people, company, or job posting searches natively, with pagination handled by Truto.
- **Offer CRM hygiene and job-change tracking in your RevOps SaaS** — Help your users prevent CRM decay by detecting when contacts change roles or employers. Poll the person changelogs endpoint on their behalf and surface champion-tracking alerts the moment a past buyer moves.
- **Standardize messy user-imported data in your platform** — When your users import CSVs or free-text form data, run it through PDL's clean and enrich endpoints to normalize job titles, locations, companies, and schools into consistent taxonomy — no more duplicate or malformed records in your database.
- **Deanonymize website visitors inside your MarTech platform** — Let your ABM or marketing customers see which companies are visiting their sites. Pass captured IPs through PDL's IP enrichment and automatically build retargeting audiences of decision-makers at the identified accounts.

## What you can build

- **One-click email-to-profile enrichment** — Trigger people_enrich on form submissions or new CRM records to append job title, seniority, company, and social profiles with a confidence score your app can threshold on.
- **Bulk enrichment pipelines for CRM backfills** — Use people_bulk_enrich and companies_bulk_enrich to let your users refresh thousands of stale records in a single workflow, with Truto handling batching and retries.
- **Embedded candidate or prospect search** — Build a native search UI backed by people_search and companies_search, with autocomplete suggestions for schools, titles, and companies powered by PDL's autocomplete endpoint.
- **Fuzzy identity resolution for record merging** — Call people_identify when your users have partial data (phone, address, name fragments) to surface ranked candidate matches for merge-or-update workflows.
- **Champion-tracking job change alerts** — Periodically query person_changelogs_search for followed contacts and push Slack, email, or in-app notifications when a tracked buyer changes companies or titles.
- **Data normalization service for imports** — Pipe user-provided job titles, locations, companies, and schools through job_titles_enrich, locations_clean, companies_clean, and schools_clean to produce clean, structured records.
- **GDPR/CCPA opt-out automation** — Use subject_requests_download to pull PDL's opt-out list on a schedule and automatically purge matching records from your users' databases.
- **Visitor-to-account deanonymization** — Combine ips_enrich with people_search to turn anonymous web traffic into named accounts and buying committees inside your marketing product.

## FAQs

### How do end users authenticate their People Data Labs account?

PDL uses API key authentication. Through Truto, your end users paste their PDL API key into a connection UI (or you can proxy a shared key depending on your model), and Truto securely stores and injects it on every request.

### Does Truto handle PDL's rate limits and pagination?

Yes. Truto manages PDL's per-minute and per-day rate limits with built-in retries and backoff, and normalizes cursor/scroll pagination across search endpoints so you can stream large result sets without custom logic.

### Can I run Elasticsearch and SQL queries through Truto?

Yes. The people_search, companies_search, and job_postings_search tools accept PDL's native Elasticsearch and SQL query syntax, so you can pass through complex boolean logic from your product directly to PDL.

### How fresh is the data returned from PDL?

PDL refreshes its datasets on a rolling basis, and each person record includes a dataset version and last-updated timestamp. For change tracking, use person_changelogs_search to compare origin and current versions and detect updates between refreshes.

### Can I enrich records in bulk instead of one at a time?

Yes. people_bulk_enrich and companies_bulk_enrich let you submit batches in a single call, which Truto proxies directly to PDL — ideal for CRM backfills or scheduled enrichment jobs.

### How do I handle compliance and opt-outs for end users?

Truto exposes subject_requests_download, which returns PDL's opt-out list so you can automate deletion of opted-out records from your users' databases to support GDPR and CCPA obligations.

### Can I preview enrichment results before being billed for a match?

Yes. people_preview_enrich lets you check whether PDL has a match for a given input without consuming a full enrichment credit, which is useful for showing availability indicators in your UI.
