> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Use People Data Labs in Deepline

> Use clean/autocomplete helpers to normalize input before costly person/company search and enrich calls. Includes SDK V2 examples, schemas, and cost.

[Human guide: work with your agent →](https://deepline.com/docs/human/providers/peopledatalabs/guide.md)
Inspect one People Data Labs action before starting provider-backed work. Your first result is a verified input and output contract.

## Provider-specific requirements

Use People Data Labs when you need explicit, auditable structured filters.

### Reading results

Use the exact declared getters from `describe <tool-id>` or
`describe`: company enrichment declares `company_name` and `company_domain`.
contact enrichment declares contact getters. search actions declare list
getters. Do not invent getters for other profile fields.

`toolResponse.rawV2` preserves the complete parsed and scrubbed provider/tool
adapter envelope. The checked-in company enrichment sample is
`{ data: { status: 200, data: { name, website, ... } } }`, so that sample's
company is at `rawV2.data.data`. Other responses or execution surfaces can have
a different wrapper. Inspect the original retained response, then assert the
exact field path and type before bulk execution. Missing an expected profile
field at a guessed path is an extraction error, not proof PDL returned no data.
`view: "data"` does not flatten rawV2. schema and extractor provenance do not
establish its observed nesting.

### Choosing and calling tools

* Normalize noisy input first with clean helpers before running expensive search/enrich operations.
* Use autocomplete and narrow incrementally to avoid over-constraining initial queries.
* Treat Person Search `size` as a spend cap: every returned profile is billed. Start with `size: 1`, inspect `total` and field coverage, then request only the number of profiles the user can use.
* For surgical gap-fill, prefer `size: 3-5`. Do not default to pages of 30, 40, or 100 after earlier providers have already returned candidates. post-response deduplication cannot recover the PDL spend.
* Put must-have fields into the search itself, for example `work_email IS NOT NULL`, `personal_emails IS NOT NULL`, `mobile_phone IS NOT NULL`, or an Elasticsearch `exists` clause. Use the matching `dataset` slice where appropriate.
* For `peopledatalabs_person_search` / `peopledatalabs_company_search` SQL: use `SELECT *` only and DO NOT include a `LIMIT` clause — PDL rejects any SQL with `LIMIT` as HTTP 400. Pass the `size` input parameter (1–100) to control how many records come back.
* `required` and `min_likelihood` are Person Enrichment controls, not Person Search inputs. Use `peopledatalabs_enrich_contact` when you already know the approximate person and need one strict match.
* Enrichment accepts `data_include`. Use comma-separated fields to include data, or a leading `-` to exclude data. To suppress the data payload, pass the literal two-character quote pair `""`. A bare empty value is ignored and returns the full record. Projection does not reduce usage. Use `required` and `min_likelihood` to control which matches are billable.
* Bulk person and company enrichment preserve these controls. Person bulk details may override shared controls per request. Company bulk controls apply to every domain in the batch.
* Deduplicate and normalize inputs before bulk enrichment. `peopledatalabs_bulk_people_enrichment` and `peopledatalabs_bulk_organization_enrichment` bill per matched row. Repeated matches remain billable. Strip URL schemes, `www.`, and trailing slashes. Reconcile name-based and domain-based rows to one identifier per entity. Exact-string deduplication alone is insufficient. Deepline batch item keys do not merge these variants. Responses correspond to input positions, so the batch cannot safely deduplicate them for you.
* For personal-email-only use cases, require `personal_emails` before billing by passing PDL's `required=personal_emails` parameter. The default Person Enrichment API bills per matched person profile, even if no personal email is present.
* PDL documents `x-call-credits-spent` as the per-call charge response header.
  Deepline parses that header into `meta.creditsSpent` and prefers it for billing
  before any fallback estimate.
* In changed-company email recovery, treat PDL as the fallback after LeadMagic and Crust.
* If earlier, cheaper steps already returned a usable email, skip PDL for that row.

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute peopledatalabs_company_clean --payload '{"name":"Open AI Inc"}'
```

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute peopledatalabs_person_search --payload '{"query":{"bool":{"must":[{"term":{"location_country":"united states"}},{"term":{"job_title_role":"marketing"}}]}},"size":5}'
```

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute peopledatalabs_autocomplete --payload '{"field":"title","text":"growth"}'
```

## Find an applicable action

Confirm your effective workspace, then search the live catalog:

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline auth status --json
deepline search "People Data Labs" --type tools --json
```

Search returns candidates. Check the returned provider and operation rather than selecting a similar title automatically.

## Inspect the selected contract

Replace `<returned-tool-id>` with the identifier returned by discovery:

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline describe <returned-tool-id> --json
```

These commands do not execute the selected provider action. Read its required inputs, supported access mode, pricing unit, outputs, and limits.

A connection does not establish that every action supports BYOK. Follow the provider-specific requirements above and the live action contract.

## Prepare one reviewed input

Use one authorized record that matches the inspected schema. Preserve its source identity and define the result you will accept.

Open the action reference for its payload and response shape. Provider-backed execution can incur usage or external effects.

For reusable logic, follow [Write Plays](https://deepline.com/docs/sdk-v2/plays.md). For direct-call recovery, use [Tool execution recovery](https://deepline.com/docs/sdk-v2/tool-execution-recovery.md).

> [!TIP]
>
> Continue only when the workspace, provider, required fields, acceptance rule, and applicable price are understood. Keep unavailable access separate from no-result evidence.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.