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 Search vs indexed Search
Realtime Search Indexed Search Endpoint /person/professional_network/search/live/person/searchData source LinkedIn Sales Navigator (live) Crustdata indexed database Freshness Real-time Periodically updated Filter syntax [{ "field": "ENUM", "type": "in", "value": [...] }]{ "field": "dotpath", "type": "op", "value": ... }Pagination Page-based (page) Cursor-based (cursor) Async support Yes (background_job: true) No Best for Live prospecting, hiring signals Structured 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=..."
}'
Background job (async search)
For large result sets, use background_job: true. The API returns 202 with a job_id:
Submit job
202 Response
Retrieve results
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
Field What it filters Operators CURRENT_TITLECurrent job title in, not_inPAST_TITLEPrevious job titles in, not_inCURRENT_COMPANYCurrent employer in, not_inPAST_COMPANYPrevious employers in, not_inINDUSTRYLinkedIn industry in, not_inCOMPANY_HEADCOUNTCompany size range in, not_inCOMPANY_HEADQUARTERSCompany HQ location in, not_inREGIONPerson’s region in, not_inSENIORITY_LEVELSeniority level in, not_inFUNCTIONJob function in, not_inSCHOOLEducation institution in, not_inYEARS_OF_EXPERIENCEYears of experience in, not_inYEARS_AT_CURRENT_COMPANYTenure at current company in, not_inKEYWORD_TITLETitle keyword search in, not_inKEYWORD_COMPANYCompany keyword search in, not_inKEYWORD_FIRST_NAMEFirst name search in, not_inKEYWORD_LAST_NAMELast name search in, not_in
Request parameters
Parameter Type Required Description filtersarray Yes* Array of Sales Navigator filter objects. professional_network_search_urlstring Yes* Sales Navigator URL (alternative to filters). pageinteger No Page number (sync mode). limitinteger No Max profiles to return (max 10,000). background_jobboolean No Set to true for async processing. previewboolean No Preview mode — basic fields only. job_idstring (UUID) No Retrieve results from a background job. post_processingobject No Exclusion 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
Status Meaning 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
Detail Value Endpoint POST /person/professional_network/search/liveAuth Bearer token + x-api-version: 2025-11-01 Sync response { "profiles": [...], "total_display_count": "..." }Async response 202 with { "job_id": "...", "message": "..." }Errors 400, 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 .