LinkedIn Job Search Scraper โ€“ Jobs & Filters avatar

LinkedIn Job Search Scraper โ€“ Jobs & Filters

Pricing

from $1.00 / 1,000 results

Go to Apify Store
LinkedIn Job Search Scraper โ€“ Jobs & Filters

LinkedIn Job Search Scraper โ€“ Jobs & Filters

Search public LinkedIn jobs by keyword with location, company, and other filters. Export job titles, employers, posting dates, and links with pagination.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Search public LinkedIn vacancies by role or keyword and collect the results as individual job rows. LinkedIn Job Search Scraper returns job titles, employers, locations, posting dates, links, and visible listing labels, with filters and pagination for each query.

Use it to explore hiring demand, build vacancy alerts, or gather job IDs for deeper enrichment. The original search query stays on every result so you can compare the terms that produced it.

At a glanceDetails
๐Ÿ“ฅ InputOne or more job-search phrases
๐Ÿ“ค OutputOne row per collected job, with its source query
๐Ÿ”Ž FiltersLocation, company, posting time, workplace, seniority, job type, and more
๐Ÿ“„ PaginationConfigurable pages per query; normally 10 job cards per page
๐Ÿ” Login requiredNo LinkedIn credentials or cookies

What the LinkedIn job search scraper collects ๐Ÿ”Ž

Each public job card can provide:

  • Job ID, job URL, and title
  • Company ID, name, page URL, and logo
  • Location, posting date, and relative posting-time text
  • Benefits and visible listing labels
  • Actively hiring and promoted indicators
  • The original query used to find the result

These fields are useful for selecting and comparing vacancies. Full descriptions, qualifications, application links, and salary fields can be collected separately with LinkedIn Job Details Scraper.

How to scrape LinkedIn job search results ๐Ÿš€

  1. Enter job-search phrases such as software engineer.
  2. Set pagesPerQuery and optional filters such as location.
  3. Run the Actor and review the returned job rows.
  4. Export the dataset or enrich selected job IDs.
{
"inputList": [
"software engineer"
],
"pagesPerQuery": 2,
"location": "Singapore"
}

Filters apply to all queries in the run. Repeated job IDs are removed within each query's pagination. A job found by two different queries can appear twice, preserving both search contexts.

Job search fields and output ๐Ÿ“ฆ

Field groupIncluded data
Search contextOriginal query and success or failed status
Job identityID, URL, and title
EmployerCompany ID, name, URL, and logo when exposed
Location and timingLocation, posting date, and relative posting text
Listing labelsBenefits, actively hiring indicator, and promoted indicator

Complete illustrative output item with all 15 fields. The employer, vacancy, dates, and values below are fictional examples, not a live result:

{
"input": "software engineer",
"status": "success",
"id": "9876543210",
"url": "https://www.linkedin.com/jobs/view/9876543210/",
"title": "Software Engineer",
"company.id": "12345678",
"company.name": "Example Analytics",
"company.url": "https://www.linkedin.com/company/example-analytics/",
"company.logo": "https://example.com/company-logo.png",
"location": "Singapore",
"posted_at": "2026-09-06",
"posted_time": "2 days ago",
"benefits": [
"Actively Hiring",
"Medical insurance"
],
"actively_hiring": true,
"is_promoted": false
}

Each result is one row in one table. JSON uses the same literal field names, including company.name. Benefits remain an ordered list within the row.

Successful cards may contain empty strings or empty lists for omitted data. Hiring and promoted indicators reflect the labels present on the card; missing labels produce false. Failed results retain the search input, set status to failed, and use null for the other fields.

Input requirements and search coverage โš™๏ธ

ParameterTypeDefaultRules and meaning
inputListarray of stringsRequiredAt least one nonempty job-search phrase
pagesPerQueryinteger1Minimum 1; no fixed upper limit
locationstring""LinkedIn location text
geoIdstring""LinkedIn geographic ID
companyIdstring""Company ID from LinkedIn's f_C URL parameter
timePostedstring""Posting-time value from LinkedIn's f_TPR URL parameter
workplaceTypestring""Workplace value from LinkedIn's f_WT URL parameter
experienceLevelstring""Experience-level value from LinkedIn's f_E URL parameter
jobTypestring""Job-type value from LinkedIn's f_JT URL parameter
sortBystring""Sort value from LinkedIn's sortBy URL parameter
distanceinteger0Minimum 0; zero leaves the distance filter unset
easyApplybooleanfalseRequest LinkedIn's Easy Apply filter
earlyApplicantbooleanfalseRequest LinkedIn's early-applicant filter

Enter search text in inputList. The Actor treats it as a keyword phrase; it does not extract filters from a pasted search URL. Coded filter strings are passed through to LinkedIn, so use LinkedIn's values rather than the corresponding display labels. To reuse filters from a LinkedIn job-search URL, copy its parameter values into the corresponding input fields.

Pagination advances in groups of 10 and stops at your page limit, on a page containing fewer than 10 parsed jobs, or when no new job IDs appear. A first page with no jobs produces a failed row. An empty later page ends that query without adding a failure.

Page count is a request budget, not a promised number of jobs or exhaustive coverage of LinkedIn's search results.

LinkedIn job search use cases ๐ŸŽฏ

Hiring-demand research

Collect comparable samples for a role and location, then group titles and employers to study the vacancies visible in each run.

Vacancy alerts

Schedule repeat searches and compare job IDs with your saved results to identify newly observed openings.

Search-query comparisons

Evaluate how different role phrases overlap. Preserve the input query while consolidating repeated job IDs in your analysis.

Job-detail collection

Choose relevant search results by employer or location, then send their IDs to Job Details Scraper for description and criteria enrichment.

Pricing and billable job rows ๐Ÿ’ฐ

Check the Actor's Pricing tab for the current charging model and rate.

Under dataset-item pricing, every saved job row can count as a result. Saved failed rows can also count, including a search with no jobs on its first page. Request retries do not independently create additional rows.

More queries and pages can increase the result count. Duplicate jobs within a query are removed, but the same job found under different queries can create separate rows.

LinkedIn job search API and integrations ๐Ÿ”Œ

Use the Actor ID from the API tab for $ACTOR_ID and your Apify token for $APIFY_TOKEN:

curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"inputList":["software engineer"],"pagesPerQuery":2,"location":"Singapore"}'

Trigger runs through REST, Apify client libraries, schedules, or webhooks. Export the default dataset to a spreadsheet or connect it to Make, Zapier, a vacancy database, or a reporting service.

Reliability and search limits โš ๏ธ

The Actor processes up to five requests concurrently and retries temporary request failures. One invalid query or unavailable page does not prevent other queries from being processed.

A later-page failure leaves any previously saved jobs intact and adds a failed row for that query. Empty later pages or repeated cards end pagination normally.

LinkedIn may change ranking, hide results, or return different public results between runs. Narrow filters can produce no matches. Visible card fields are not a complete job description, and missing company IDs or labels should remain missing in downstream reporting.

Frequently asked questions โ“

Should I paste a LinkedIn search URL?

Enter the search phrase in inputList and set filters in their own fields. A pasted URL is treated as search text, not as a search configuration.

Can I filter by employer?

Yes. Set companyId to a LinkedIn company ID. Use Company Jobs Scraper when starting from a list of company slugs or URLs.

Why did the same job appear under two queries?

Duplicates are removed within each query. Separate queries retain their own results and original input, even when they find the same job.

Does it return all matches or exactly 10 jobs per page?

Neither is guaranteed. A page normally contains 10 cards, but limited public results, short pages, and duplicate IDs can reduce the number collected.

Why is an empty search marked failed?

No jobs on the first page produces a failed row for the query. An empty page after successful results simply stops pagination.

For a reproducible issue, share the run ID, search phrase, filters, and expected behavior through the Actor's support channel.

Use public vacancy data in accordance with applicable privacy, copyright, contractual, and platform requirements.