LinkedIn Jobs Scraper - Public Jobs, No Login
Pricing
from $1.00 / 1,000 job results
LinkedIn Jobs Scraper - Public Jobs, No Login
Extract public LinkedIn job listings by keyword and location. Get titles, companies, descriptions, employment types, seniority, industries, applicant counts, and canonical URLs without LinkedIn login or account cookies.
Pricing
from $1.00 / 1,000 job results
Rating
0.0
(0)
Developer
Faiz junsyar firjatullah
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract public LinkedIn job listings by keyword and location without providing a LinkedIn account, cookies, or credentials. The Actor can return lightweight search results or enrich every job with its public description and available criteria.
Use the dataset in job boards, labor-market research, recruiting workflows, competitive analysis, or data pipelines. Results are available as JSON, CSV, Excel, XML, RSS, and through the Apify API.
What this Actor does
- Searches public job listings by keywords and location
- Filters by date posted and workplace type
- Collects up to 1,000 unique jobs per run
- Deduplicates results by LinkedIn job ID
- Optionally fetches job descriptions and criteria
- Uses controlled request pacing and retries temporary HTTP 429 responses
- Saves partial basic listings when a detail page is unavailable
- Supports Apify Proxy and custom proxy configurations
- Reduces planned work and stops cleanly when the run's maximum cost limit is reached
No LinkedIn login is required. The Actor does not solve CAPTCHAs or access private, authenticated, or restricted account data.
Input
| Field | Type | Default | Description |
|---|---|---|---|
keywords | string | required | Job title or search terms, for example Data Engineer. |
location | string | Indonesia | Country, city, or region. |
maxResults | integer | 25 | Maximum number of unique jobs to save; range 1-1,000. |
datePosted | string | anyTime | anyTime, past24Hours, pastWeek, or pastMonth. |
workplaceType | string | any | any, onSite, remote, or hybrid. |
fetchDetails | boolean | true | Fetch description and job criteria with an extra request per job. |
maxConcurrency | integer | 1 | Maximum simultaneous detail requests. |
detailDelaySecs | number | 3 | Minimum delay between the starts of detail requests. |
requestDelaySecs | number | 1 | Delay between search-page requests. |
proxyConfiguration | object | no proxy | Optional Apify Proxy or custom proxy settings. |
Example input
{"keywords": "Data Engineer","location": "Indonesia","maxResults": 25,"datePosted": "pastWeek","workplaceType": "any","fetchDetails": true,"maxConcurrency": 1,"detailDelaySecs": 3,"requestDelaySecs": 1,"proxyConfiguration": {"useApifyProxy": false}}
Output
Each dataset item can contain the following fields. Some detail fields may be empty when LinkedIn does not publish them or temporarily blocks the detail request.
| Field | Description |
|---|---|
job_id | LinkedIn job identifier |
title | Job title |
company_name | Hiring company |
company_url | Public LinkedIn company URL |
location | Advertised job location |
posted_at | Published date when available |
employment_type | Full-time, contract, internship, or another published type |
seniority_level | Published seniority criterion |
job_function | Published job function |
industries | Published industry criterion |
applicant_count | Public applicant-count text when available |
job_url | Canonical public job URL |
description | Plain-text public job description |
scraped_at | UTC timestamp when the item was processed |
Example output
{"job_id": "1234567890","title": "Data Engineer","company_name": "Example Company","company_url": "https://www.linkedin.com/company/example-company","location": "Jakarta, Indonesia","posted_at": "2026-09-15","employment_type": "Full-time","seniority_level": "Mid-Senior level","job_function": "Information Technology","industries": "Technology","applicant_count": "42 applicants","job_url": "https://www.linkedin.com/jobs/view/1234567890","description": "Build and maintain reliable data pipelines.","scraped_at": "2026-09-15T08:30:00+00:00"}
Run with the Apify API
Replace YOUR_USERNAME and YOUR_TOKEN with your Apify account details:
curl -X POST \"https://api.apify.com/v2/acts/YOUR_USERNAME~linkedin-jobs-public-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords":"Data Engineer","location":"Indonesia","maxResults":25}'
You can also call the Actor from Apify clients for Python or JavaScript, schedules, webhooks, Make, Zapier, or other automation tools.
Pricing
The Actor is designed for simple pay-per-result pricing: one chargeable result corresponds to one job written to the default dataset. The final price shown on the Actor page is the source of truth. Runs that return no dataset items do not incur result charges, although platform rules may apply to run-start events.
Tips for reliable runs
Start with maxResults set to 25 and keep maxConcurrency at 1 when fetchDetails is enabled. If detail requests receive HTTP 429 responses, increase detailDelaySecs to 5-10 seconds, narrow the search, or use an appropriate proxy available to your Apify account.
Set fetchDetails to false when you only need titles, companies, locations, dates, and URLs. This mode is faster and makes fewer public requests.
Limitations and responsible use
This Actor relies on public LinkedIn pages that are not documented as a stable public API. LinkedIn may change the HTML structure, return different results by region or IP address, limit the number of results, or temporarily reject requests. Therefore, the Actor cannot guarantee that it will return every job visible to a logged-in LinkedIn user.
Use the Actor responsibly and only for lawful purposes. You are responsible for complying with applicable laws, privacy obligations, and website terms. Do not use the output for spam, harassment, discrimination, or decisions that require data LinkedIn has not made public.
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn.
Support
If a run fails, share the run ID, input with secrets removed, expected behavior, and a short description of the problem through the Actor's Issues tab. Do not post API tokens, cookies, personal credentials, or other secrets.