List all applicants to a job posting

GEThttps://api.postpress.ai/v1/linkedin/jobs/{id}/applicants

Retrieve every user that has applied to a given LinkedIn job offer, with their work experience, education, screening answers and contact info.

Authorization

X-API-KEYstringrequired
API key from your postpress dashboard. Sent as a request header.

Path parameters

idstringrequired
The id of the job offer.

Query parameters

account_idstringrequired
The id of the account to trigger the request from.
servicestringoptional
Which LinkedIn service this job posting depends on. Defaults to `CLASSIC`.
limitintegeroptional
1 to 250. Defaults to 100 in examples.
cursorstringoptional
Pagination cursor returned by a previous call.
ratingsstringoptional
Comma-separated ratings to keep. Allowed: `UNRATED`, `GOOD_FIT`, `MAYBE`, `NOT_A_FIT` (e.g. `GOOD_FIT,MAYBE`).
keywordsstringoptional
Filter results by free-text keywords.
sort_bystringoptional
Sorting rule. Recruiter only.
min_years_of_experiencenumberoptional
LinkedIn Recruiter native filter: YEARS OF EXPERIENCE (min).
max_years_of_experiencenumberoptional
LinkedIn Recruiter native filter: YEARS OF EXPERIENCE (max).
min_years_in_companynumberoptional
LinkedIn Recruiter native filter: YEARS IN CURRENT COMPANY (min).
max_years_in_companynumberoptional
LinkedIn Recruiter native filter: YEARS IN CURRENT COMPANY (max).
min_years_in_positionnumberoptional
LinkedIn Recruiter native filter: YEARS IN CURRENT POSITION (min).
max_years_in_positionnumberoptional
LinkedIn Recruiter native filter: YEARS IN CURRENT POSITION (max).
include_degreearray of stringsoptional
Recruiter filter: DEGREES (included). Repeat the query key for multiple values.
exclude_degreearray of stringsoptional
Recruiter filter: DEGREES (excluded). Repeat the query key for multiple values.

Response 200 OK

objectstringLinkedinJobApplicantListrequired
job_posting_idstringrequired
itemsarray of objectsrequired
items object
objectstringLinkedinJobApplicantrequired
idstringrequired
profile_idstringrequired
public_identifierstringrequired
public_profile_urlstringrequired
namestringrequired
locationstringrequired
headlinestringrequired
profile_picture_urlstring
applied_atnumberrequired
Unix timestamp (ms).
ratingstringrequired
UNRATEDGOOD_FITMAYBENOT_A_FIT
email_addressstring
phone_numberstring
contact_infoobject
contact_info object
email_addressesarray of stringsrequired
phone_numbersarray of stringsrequired
work_experiencearray of objectsrequired
work_experience object
companystringrequired
company_idstring
positionstringrequired
locationstring
descriptionstring
picture_urlstring
startobjectrequired
start object
yearnumberrequired
monthnumberrequired
endobjectrequired
end object
yearnumberrequired
monthnumberrequired
educationarray of objectsrequired
education object
schoolstringrequired
school_idstring
degreestring
descriptionstring
field_of_studystring
picture_urlstring
startobjectrequired
start object
yearnumberrequired
monthnumberrequired
endobjectrequired
end object
yearnumberrequired
monthnumberrequired
screening_questionsarray of objectsrequired
screening_questions object
questionstringrequired
answersarray of stringsrequired
successbooleanrequired
Whether the answers met the must-have criteria.
cursorstringrequired
pagingobjectrequired
paging object
page_countnumberrequired
total_countnumberrequired

Example request

curl --request GET \
  --url 'https://api.postpress.ai/api/v1/linkedin/jobs/3984512098/applicants?account_id=acc_linkedin_01HXYZ4QK3WJ8FN3M6QH7TZ8GR&service=CLASSIC&limit=100' \
  --header 'X-API-KEY: pp_live_...' \
  --header 'accept: application/json'

Example response

{
  "object": "LinkedinJobApplicantList",
  "job_posting_id": "3984512098",
  "items": [
    {
      "object": "LinkedinJobApplicant",
      "id": "appl_01HXYZ4QK3WJ8FN3M6QH7TZ8GR",
      "profile_id": "ACoAAA...",
      "public_identifier": "jordan-walke",
      "public_profile_url": "https://www.linkedin.com/in/jordan-walke",
      "name": "Jordan Walke",
      "location": "San Francisco, California, United States",
      "headline": "Senior Frontend Engineer",
      "profile_picture_url": "https://media.licdn.com/.../picture.jpg",
      "applied_at": 1746460000000,
      "rating": "GOOD_FIT",
      "email_address": "jordan@example.com",
      "phone_number": "+1-415-555-0140",
      "contact_info": {
        "email_addresses": ["jordan@example.com"],
        "phone_numbers":   ["+1-415-555-0140"]
      },
      "work_experience": [
        {
          "company": "Acme Corp",
          "company_id": "9374000",
          "position": "Staff Software Engineer",
          "location": "San Francisco, California",
          "start": { "year": 2023, "month": 1 },
          "end":   null
        }
      ],
      "education": [
        {
          "school": "Stanford University",
          "degree": "BS",
          "field_of_study": "Computer Science",
          "start": { "year": 2014, "month": 9 },
          "end":   { "year": 2018, "month": 6 }
        }
      ],
      "screening_questions": [
        {
          "question": "How many years of React experience do you have?",
          "answers": ["5"],
          "success": true
        }
      ]
    }
  ],
  "cursor": "eyJzdGFydCI6MTAwfQ==",
  "paging": { "page_count": 100, "total_count": 47 }
}

Errors

Every error response follows the same envelope:

titlestringrequired
Short error title.
detailstringoptional
Human-readable explanation.
instancestringoptional
Request identifier for support.
typestringrequired
Error type identifier.
statusnumberrequired
HTTP status code.
400 Bad Request8 types

The query string is malformed or a filter value is invalid.

  • errors/invalid_parameters - One or more parameters are invalid (e.g. unknown `ratings` value, `sort_by` not supported for Classic, ...).
  • errors/malformed_request - The request is malformed.
  • errors/content_too_large - The request is too large.
  • errors/invalid_url - A URL field is invalid.
  • errors/too_many_characters - A string field exceeds the allowed length.
  • errors/unescaped_characters - A field contains characters that must be encoded.
  • errors/missing_parameters - A required field (`account_id`, `id`, ...) is missing.
  • errors/limit_too_high - `limit` exceeds 250.
401 Unauthorized13 types

Credentials are missing, expired, or otherwise invalid.

  • errors/missing_credentials - Some credentials are necessary to perform the request.
  • errors/multiple_sessions - LinkedIn limits multiple sessions on certain Recruiter accounts. Use the cookie connection method.
  • errors/wrong_account - The provided credentials do not match the correct account.
  • errors/invalid_credentials - The provided credentials are invalid.
  • errors/invalid_proxy_credentials - The provided proxy credentials are invalid.
  • errors/invalid_checkpoint_solution - The checkpoint resolution did not pass successfully. Retry.
  • errors/checkpoint_error - The checkpoint does not appear to be resolvable.
  • errors/expired_credentials - Credentials have expired. Reconnect the account.
  • errors/expired_link - This link has expired. Generate a new one.
  • errors/insufficient_privileges - This resource is out of your API-key scopes.
  • errors/disconnected_account - The account is disconnected from the provider service.
  • errors/disconnected_feature - The service you're trying to reach is disconnected.
  • errors/invalid_credentials_but_valid_account_imap - IMAP/SMTP credentials are invalid but the account is otherwise valid.
403 Forbidden9 types

Authenticated but the account is restricted or the action is not allowed.

  • errors/insufficient_permissions - Valid authentication but insufficient permissions to perform the request.
  • errors/account_restricted - The account has been restricted by the provider.
  • errors/account_mismatch - This action cannot be done with your account.
  • errors/unknown_authentication_context - An additional step seems necessary to complete login.
  • errors/session_mismatch - Token user id does not match client session id.
  • errors/feature_not_subscribed - The requested feature has not been subscribed or authenticated properly.
  • errors/subscription_required - A subscription is required to use this feature.
  • errors/resource_access_restricted - You don't have access to this resource.
  • errors/action_required - An additional step is required.
404 Not Found2 types

The targeted account or job does not exist.

  • errors/resource_not_found - The requested resource was not found.
  • errors/invalid_resource_identifier - The provided identifier is not valid for this resource.
422 Unprocessable Entity3 types

The request is well-formed but cannot be fulfilled as-is.

  • errors/invalid_account - The provided account is not designed for this feature.
  • errors/unprocessable_entity - The request cannot be processed in its current form.
  • errors/account_configuration_error - The account configuration prevents this request.
500 Internal Server Error3 types

Something went wrong on our side or with the upstream provider.

  • errors/unexpected_error - Something went wrong.
  • errors/provider_error - The provider is experiencing operational problems. Retry later.
  • errors/authentication_intent_error - The current authentication intent was killed after failure.
503 Service Unavailable5 types

postpress is temporarily unable to handle the request.

  • errors/no_client_session - No client session is currently running.
  • errors/no_channel - No channel to client session.
  • errors/no_handler - Handler missing for that request.
  • errors/network_down - Network is down on the server side. Retry shortly.
  • errors/service_unavailable - Service temporarily unavailable. Retry later.
504 Gateway Timeout1 types

The upstream provider did not respond in time.

  • errors/request_timeout - Request timed out. Retry, and contact support if it persists.
Updated May 2026