platform_execute_action call with the operation ID shown. Call platform_get_action_details first to see the exact parameters, and pass your companyId (from platform_list_companies) on every call.
Choosing an Operation
Enrichment always needs a person identifier. A company on its own is rejected with a
400 error. To find people at a company, run a people search instead, which is free.
Costs
Lookups that find nothing are free. If your balance is too low, the call returns
402; see Credits to top up.
Step 1: Build Filters
Callleads_listFieldOptions with describe=true. It returns every filter field, its type, and its group: person, company, funding, or location. Then fetch the accepted values for the groups you need, for example group=person. Values outside these lists are rejected.
Filters are an object keyed by field name:
- Text and option fields take a list. Any value in the list matches.
- Different fields must all match.
- Countries use two-letter codes.
- Number fields, such as
employeeCountMin, take a single number. - Include at least one positive filter. Exclusions on their own are not enough.
Step 2: Search
Callleads_searchPeopleDatabase with filters, pageSize (5, 10, 25, or 50), and page: 1.
The response contains:
items: matching people, with name, title, company, location, and LinkedIn URL. No emails or phones.total: the total number of matches.nextCursor: the cursor for the next page.
pageSize with page: 2 and cursor set to the previous nextCursor. A nextCursor of null means you’ve reached the last page.
Step 3: Import or Export
-
Pick a destination list with
lists_getLists, or create one withlists_saveList. -
Call
leads_importPeopleDatabaseResultswith the list ID and either:rows: 1–50itemsfrom the search, passed back unchanged, orfilterspluscount(1–50,000, starting from the first result), orimportAll: true.
includeEmail(defaulttrue) andincludePhone(defaultfalse). Pass a new UUID asimportId, and reuse it if you retry so the retry returns the same job instead of starting another. -
To get a CSV instead of a list, call
leads_exportPeopleDatabaseResultswith the same body.
taskId right away. Poll lists_getTaskStatus every 15–60 seconds until status is completed, failed, or cancelled.
processedItemsandtotalItemsshow progress.- A
pendingtask withtaskMetadata.waitReasonis waiting for data credits or for the data provider. It resumes on its own. - When an export completes,
result.downloadUrllinks to the CSV. The link stays valid for 24 hours and is also emailed to you.
Enrich One Person
Callleads_enrichContact with any of firstName, lastName, email, phone, or linkedinUrl. Add company or companyDomain to disambiguate a name. The response is {results, count}. A count of 0 means no match, and it’s free.
Phone numbers come only from leads_enrichPhone, which takes the same identifiers. A LinkedIn URL gives the best match rate.
To save the person, add them to a list with lists_addRows.
Enrich Contacts Already in a Smart List
- Call
lists_getListActionsCatalogand copy theaudience_enrich(Enrichment Waterfall) template. SetincludeEmailandincludePhone. - Add it to the list with
lists_addTableAction. Then calllists_getListSchemato find the new action column’sid. - Run it with
lists_runTableAction, passingactionId,type: "audience_enrich", and optionallyselectedRows. OmittingselectedRowsruns it on every row. - Poll
lists_getActionQueueStatusuntil no rows are pending or processing, then read the rows.
Find People at Each Company in a List
Add theaudience_find_leads (Find Leads at Company) action the same way. Each row needs a company website or name.
People found this way don’t include emails. Run Enrichment Waterfall on them to get emails.
Every match stays on the row’s cell. To choose matches yourself, set
enrichRow: false and autoAddToList: "", run the action, and then for each row:
- Call
leads_getStagedLeadswith the list ID, row ID, andheaderId(the action column’s ID). - Call
leads_applyStagedLeadswithenrichLead(one person to write over the row),appendLeads(people to add as new rows), or both.
Sales Navigator
lists_searchSalesNavigator takes a Sales Navigator URL or filters and returns a searchId. Poll lists_getLeadSearchDetail until status is no longer pending; this takes a few minutes. Then import the results with lists_importLeadSearch, which is free.

