People Search

LinkedIn Profile Search

Find LinkedIn members by what they post and by their role. Describe the people you want in plain language; the search looks for public LinkedIn posts on the topic and for public profiles whose headline matches the role, reads each profile (headline, company, location, followers, about) and scores how well each person fits. You get profiles, not posts: each with a fit score, the reasons it matched and the posts that prove it. Public data only.

How it runs. The search runs in the background. This call returns a task_id at once. Poll GET /desearch/people/tasks/{task_id} every few seconds, read profiles with GET /desearch/people/tasks/{task_id}/results (they arrive while the search is still running), or download everything with GET /desearch/people/tasks/{task_id}/export?format=csv. You can pause, resume or cancel a search at any time. Results stay available for 30 days.

Billing. count profiles are reserved at the route price when the task is created (cost_usd on this response). When the search ends you pay only for the qualified profiles it delivered (minimum shown below); the rest of the reservation is returned automatically. A search that delivers no profiles costs nothing.

Price: $0.05 per qualified profile, minimum 2 profiles ($0.10) per search that finds any. A search that finds no one is free.

Billing metadata: successful billable responses include the X-Desearch-Cost-Usd, X-Desearch-Usage-Count, X-Desearch-Service, and X-Desearch-Currency headers. JSON object responses also include optional cost_usd, usage_count, service, and currency fields. For example, usage_count=10 at $0.015 / 1,000 resolves to cost_usd=0.00015. JSON arrays, text, and streaming responses keep their body shape and expose billing metadata only through headers.

post/desearch/people/search/linkedin

Request

  • Base URL: https://api.desearch.ai
  • URL: https://api.desearch.ai/desearch/people/search/linkedin
  • Auth: API key in header Authorization

Headers

Idempotency-Keystring

Any unique string, e.g. a UUID. Sending the same key again returns the first search (HTTP 200) instead of starting and charging a new one.

Request body

querystring required

Who you are looking for, in plain language.

countinteger

How many qualified profiles to find. The search reserves this many at the route price and bills only the profiles it delivers (a minimum applies when it finds any; a search that finds none is free).

min_scoreinteger nullable

Only return profiles with at least this fit score (0-100).

excludestring[] nullable

Handles to leave out, for example people you already contacted. Up to 1,000 handles.

metadataobject nullable

Your own labels for this search, e.g. the workspace or campaign it belongs to. At most 10 keys; keys are 1-40 characters of a-z, 0-9, '_', '.' or '-'; values are strings of at most 200 characters. Returned as metadata on the task and usable as a filter on GET /desearch/people/tasks (metadata.<key>=<value>). Never used by the search itself.

Example request

{
  "count": 25,
  "filters": {
    "countries": [
      "United States",
      "United Kingdom"
    ]
  },
  "query": "Heads of sales at fintech startups who post about outbound"
}

Response

Same Idempotency-Key as an earlier search: that task, not charged again.

task_idstring uuid required
search_type'x_profile_search' | 'youtube_creator_search' | 'linkedin_profile_search' | 'tiktok_creator_search' required
platform'x' | 'youtube' | 'linkedin' | 'tiktok' required
status'queued' | 'running' | 'pausing' | 'paused' | 'cancelling' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'expired' required
stage'planning' | 'searching' | 'processing' | 'finalizing' nullable
querystring required
countinteger required
result_countinteger required
metadataobject

The metadata sent when the search was created ({} when none).

interpretedobject nullable

How the search was understood: criteria and the queries it ran.

progressobject
reserved_cost_usdnumber required

Amount reserved when the task was created.

final_cost_usdnumber nullable

Final cost once the task has ended. The rest of the reservation is returned.

refunded_usdnumber nullable
created_atstring date-time required
started_atstring date-time nullable
paused_atstring date-time nullable
finished_atstring date-time nullable
results_expire_atstring date-time nullable

Changes

No recorded changes to this operation across all 1 revision of this API.