Skip to main content
Use this when you need live LinkedIn data — for prospecting, hiring signal detection, or finding people that are not yet in the indexed database. The Person Realtime Search API queries LinkedIn Sales Navigator directly and returns fresh results. It supports both synchronous (page-based) and asynchronous (background job) modes.
POST https://api.crustdata.com/person/professional_network/search/live
Replace YOUR_API_KEY in each example with your actual API key. All requests require the x-api-version: 2025-11-01 header.

Find CEOs at small companies

curl --request POST \
  --url https://api.crustdata.com/person/professional_network/search/live \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "filters": [
      {"field": "CURRENT_TITLE", "type": "in", "value": ["CEO"]},
      {"field": "COMPANY_HEADCOUNT", "type": "in", "value": ["11-50"]}
    ],
    "page": 1
  }'
Response trimmed for clarity. Each profile includes basic info, professional network data, skills, and employment history.

Realtime SearchIndexed Search
Endpoint/person/professional_network/search/live/person/search
Data sourceLinkedIn Sales Navigator (live)Crustdata indexed database
FreshnessReal-timePeriodically updated
Filter syntax[{ "field": "ENUM", "type": "in", "value": [...] }]{ "field": "dotpath", "type": "op", "value": ... }
PaginationPage-based (page)Cursor-based (cursor)
Async supportYes (background_job: true)No
Best forLive prospecting, hiring signalsStructured segmentation, analytics

Search with multiple filters

Filters are combined with implicit AND logic:
curl --request POST \
  --url https://api.crustdata.com/person/professional_network/search/live \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "filters": [
      {"field": "CURRENT_TITLE", "type": "in", "value": ["VP of Sales", "Head of Sales"]},
      {"field": "INDUSTRY", "type": "in", "value": ["Software Development"]},
      {"field": "COMPANY_HEADCOUNT", "type": "in", "value": ["51-200", "201-500"]},
      {"field": "REGION", "type": "in", "value": ["United States"]}
    ],
    "page": 1
  }'

Search by Sales Navigator URL

Instead of building filters, pass a Sales Navigator URL directly:
curl --request POST \
  --url https://api.crustdata.com/person/professional_network/search/live \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "professional_network_search_url": "https://www.linkedin.com/sales/search/people?query=..."
  }'

For large result sets, use background_job: true. The API returns 202 with a job_id:
curl --request POST \
  --url https://api.crustdata.com/person/professional_network/search/live \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "filters": [
      {"field": "CURRENT_TITLE", "type": "in", "value": ["CEO"]},
      {"field": "COMPANY_HEADCOUNT", "type": "in", "value": ["51-200"]}
    ],
    "background_job": true,
    "limit": 2000
  }'

Available filter fields

FieldWhat it filtersOperators
CURRENT_TITLECurrent job titlein, not_in
PAST_TITLEPrevious job titlesin, not_in
CURRENT_COMPANYCurrent employerin, not_in
PAST_COMPANYPrevious employersin, not_in
INDUSTRYLinkedIn industryin, not_in
COMPANY_HEADCOUNTCompany size rangein, not_in
COMPANY_HEADQUARTERSCompany HQ locationin, not_in
REGIONPerson’s regionin, not_in
SENIORITY_LEVELSeniority levelin, not_in
FUNCTIONJob functionin, not_in
SCHOOLEducation institutionin, not_in
YEARS_OF_EXPERIENCEYears of experiencein, not_in
YEARS_AT_CURRENT_COMPANYTenure at current companyin, not_in
KEYWORD_TITLETitle keyword searchin, not_in
KEYWORD_COMPANYCompany keyword searchin, not_in
KEYWORD_FIRST_NAMEFirst name searchin, not_in
KEYWORD_LAST_NAMELast name searchin, not_in

Request parameters

ParameterTypeRequiredDescription
filtersarrayYes*Array of Sales Navigator filter objects.
professional_network_search_urlstringYes*Sales Navigator URL (alternative to filters).
pageintegerNoPage number (sync mode).
limitintegerNoMax profiles to return (max 10,000).
background_jobbooleanNoSet to true for async processing.
previewbooleanNoPreview mode — basic fields only.
job_idstring (UUID)NoRetrieve results from a background job.
post_processingobjectNoExclusion rules: exclude_profiles (URL array), exclude_names (name array), strict_title_and_company_match (boolean).
* Provide filters or professional_network_search_url, not both.
Realtime Search uses its own post_processing schema (defined inline in the spec) which includes strict_title_and_company_match. This is different from the indexed Search PostProcessing schema.

Errors

StatusMeaning
400Invalid filter or malformed request.
401Invalid or missing API key.
500Internal server error.
Current platform behavior: Rate limit is ~15 requests per minute. Max 3 concurrent background jobs.

API reference summary

DetailValue
EndpointPOST /person/professional_network/search/live
AuthBearer token + x-api-version: 2025-11-01
Sync response{ "profiles": [...], "total_display_count": "..." }
Async response202 with { "job_id": "...", "message": "..." }
Errors400, 401, 500

What to do next

  • Enrich matches — take social_handles.professional_network_identifier.profile_url and pass to Enrich.
  • Use indexed search — for structured, repeatable queries use Person Search.
  • See more examples — browse Person Examples.