LinkedIn Job Search Scraper โ Jobs & Filters
Pricing
from $1.00 / 1,000 results
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
Maintained by CommunityActor 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 glance | Details |
|---|---|
| ๐ฅ Input | One or more job-search phrases |
| ๐ค Output | One row per collected job, with its source query |
| ๐ Filters | Location, company, posting time, workplace, seniority, job type, and more |
| ๐ Pagination | Configurable pages per query; normally 10 job cards per page |
| ๐ Login required | No 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 ๐
- Enter job-search phrases such as
software engineer. - Set
pagesPerQueryand optional filters such aslocation. - Run the Actor and review the returned job rows.
- 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 group | Included data |
|---|---|
| Search context | Original query and success or failed status |
| Job identity | ID, URL, and title |
| Employer | Company ID, name, URL, and logo when exposed |
| Location and timing | Location, posting date, and relative posting text |
| Listing labels | Benefits, 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 โ๏ธ
| Parameter | Type | Default | Rules and meaning |
|---|---|---|---|
inputList | array of strings | Required | At least one nonempty job-search phrase |
pagesPerQuery | integer | 1 | Minimum 1; no fixed upper limit |
location | string | "" | LinkedIn location text |
geoId | string | "" | LinkedIn geographic ID |
companyId | string | "" | Company ID from LinkedIn's f_C URL parameter |
timePosted | string | "" | Posting-time value from LinkedIn's f_TPR URL parameter |
workplaceType | string | "" | Workplace value from LinkedIn's f_WT URL parameter |
experienceLevel | string | "" | Experience-level value from LinkedIn's f_E URL parameter |
jobType | string | "" | Job-type value from LinkedIn's f_JT URL parameter |
sortBy | string | "" | Sort value from LinkedIn's sortBy URL parameter |
distance | integer | 0 | Minimum 0; zero leaves the distance filter unset |
easyApply | boolean | false | Request LinkedIn's Easy Apply filter |
earlyApplicant | boolean | false | Request 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.
Support, responsible use, and related actors ๐
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.