Provider-specific requirements
Use People Data Labs when you need explicit, auditable structured filters.Reading results
Use the exact declared getters fromdescribe <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
sizeas a spend cap: every returned profile is billed. Start withsize: 1, inspecttotaland 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 Elasticsearchexistsclause. Use the matchingdatasetslice where appropriate. - For
peopledatalabs_person_search/peopledatalabs_company_searchSQL: useSELECT *only and DO NOT include aLIMITclause — PDL rejects any SQL withLIMITas HTTP 400. Pass thesizeinput parameter (1–100) to control how many records come back. requiredandmin_likelihoodare Person Enrichment controls, not Person Search inputs. Usepeopledatalabs_enrich_contactwhen 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. Userequiredandmin_likelihoodto 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_enrichmentandpeopledatalabs_bulk_organization_enrichmentbill 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_emailsbefore billing by passing PDL’srequired=personal_emailsparameter. The default Person Enrichment API bills per matched person profile, even if no personal email is present. - PDL documents
x-call-credits-spentas the per-call charge response header. Deepline parses that header intometa.creditsSpentand 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.
Find an applicable action
Confirm your effective workspace, then search the live catalog:Inspect the selected contract
Replace<returned-tool-id> with the identifier returned by discovery:
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. For direct-call recovery, use Tool execution recovery.Continue only when the workspace, provider, required fields, acceptance rule, and applicable price are understood. Keep unavailable access separate from no-result evidence.