Skip to main content
The Search Profiles endpoint creates an async task to search LinkedIn for people matching your criteria. Provide one or more search filters and receive a task ID to poll for the matching profiles.

Endpoint

POST https://api.outx.ai/linkedin-agent/search-profiles

Request Body

At least one filter field is required.
keywords
string
General keyword search across name, headline, and profile text
title
string
Filter by job title (e.g., "VP of Engineering")
company
string
Filter by current company name (e.g., "Google")
first_name
string
Filter by first name
last_name
string
Filter by last name
geo_urn
string[]
Array of LinkedIn geographic URNs to filter by location (e.g., ["103644278"] for United States)
current_company
string[]
Array of LinkedIn company URNs to filter by current employer
industry
string[]
Array of LinkedIn industry URNs to filter by industry
past_company
string[]
Array of LinkedIn company URNs to filter by past employer
school
string
Filter by school or university name (e.g., "MIT")
profile_language
string[]
Array of language codes to filter by profile language (e.g., ["en"])
count
number
Number of profiles to return. Defaults to 25, maximum 50.
You can combine multiple filters for more precise results. For example, pass both title and geo_urn to find “Software Engineers in San Francisco”. At least one filter must have a value — sending an empty body will return a 400 error.

Response

The endpoint returns immediately with a task ID. The search is executed asynchronously.
success
boolean
Whether the task was created successfully
api_agent_task_id
string
UUID to poll for results via Get Task Status
message
string
Human-readable confirmation
{
  "success": true,
  "api_agent_task_id": "550e8400-e29b-41d4-a716-446655440000",
  "message": "Profile search task created successfully"
}

Polling for Results

After creating the task, poll the Get Task Status endpoint until the status is completed:
GET https://api.outx.ai/linkedin-agent/get-task-status?api_agent_task_id=550e8400-e29b-41d4-a716-446655440000

Completed Response

When the task finishes, task_output contains the matching profiles:
{
  "success": true,
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "completed",
    "task_input": {
      "task_type": "agent_search_profiles",
      "filters": {
        "title": "VP of Engineering",
        "company": "Google"
      },
      "count": 25
    },
    "task_output": {
      "profiles": [
        {
          "full_name": "Jane Smith",
          "headline": "VP of Engineering at Google",
          "location": "San Francisco, CA",
          "profile_slug": "jane-smith-abc123",
          "profile_urn": "ACoAABCDEFG",
          "connection_degree": 2,
          "image_url": "https://media.licdn.com/dms/image/..."
        },
        {
          "full_name": "John Doe",
          "headline": "VP Engineering | AI & Infrastructure at Google",
          "location": "Mountain View, CA",
          "profile_slug": "johndoe",
          "profile_urn": "ACoAAHIJKLMN",
          "connection_degree": 3,
          "image_url": null
        }
      ],
      "total_count": 2
    }
  }
}

Code Examples

# Search by title and company
curl -X POST \
  "https://api.outx.ai/linkedin-agent/search-profiles" \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "title": "VP of Engineering",
    "company": "Google",
    "count": 25
  }'

# Poll for results
curl -X GET \
  "https://api.outx.ai/linkedin-agent/get-task-status?api_agent_task_id=TASK_ID" \
  -H "x-api-key: YOUR_API_KEY"

Error Responses

StatusErrorDescription
400At least one search filter is required (keywords, title, company, etc.)No filter fields were provided in the request body
401Missing API Key / Invalid API KeyAPI key is missing or invalid
403Plugin installation required...No team member has an active Chrome extension. See Authentication

FAQ

Each profile in the search results typically includes: full name, headline, location, profile slug, profile URN, connection degree (1st, 2nd, or 3rd+), and profile image URL. The profile slug and URN can be used with other API endpoints such as Fetch Profile and Send Message.
The count parameter is capped at 50 profiles per request. If you pass a value greater than 50, it will be clamped to 50. The default is 25 if count is not specified.
LinkedIn URNs for geography, industry, and company can be found by inspecting LinkedIn Voyager API requests in your browser’s developer tools when performing a search on LinkedIn. Common geo URNs: 103644278 (United States), 101165590 (United Kingdom), 102713980 (India).
Yes. OutX is a proxy and does not rate-limit requests on your behalf. Each search is executed as a real LinkedIn people search. Running many searches in rapid succession can trigger LinkedIn’s activity monitoring. Space requests at least 10–30 seconds apart. See Rate Limits.
Yes. Each profile in the results includes a profile_slug. You can pass that slug to the Fetch Profile endpoint to retrieve the full profile data including experience, education, and skills.

Learn More