LinkedIn Jobs by Title - Listings, Company, Location & CSV avatar

LinkedIn Jobs by Title - Listings, Company, Location & CSV

Pricing

from $0.50 / 1,000 results

Go to Apify Store
LinkedIn Jobs by Title - Listings, Company, Location & CSV

LinkedIn Jobs by Title - Listings, Company, Location & CSV

LinkedIn job listings scraper for public job listings by title and location - job title, company, location, posted date and job URL. Search multiple job titles in one run, deduplicated across queries, freshest first. No login, no cookies, no API key, no auto-apply. CSV, JSON or Excel.

Pricing

from $0.50 / 1,000 results

Rating

5.0

(1)

Developer

Flash Scrape

Flash Scrape

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

12 hours ago

Last modified

Share

LinkedIn Jobs Scraper — $0.50 per 1,000 jobs, no cookies, no account

The cheapest serious way to get LinkedIn job postings as clean data. Keyword + location in, structured rows out: title, company, location, posting date, seniority, description and the direct job URL. No LinkedIn account, no cookies, no API key — it reads LinkedIn's public guest endpoints directly, which is why it can charge a twentieth of what most rivals do.

Need more than LinkedIn? The same publisher's Multi Job Board Scraper merges LinkedIn + Indeed + Glassdoor + 9 more boards in one run, deduplicated (a job on three boards bills once), with salary annualization, remote-only sweeps across 11 boards, a monitoring mode that only bills postings you haven't seen, and company careers-page watching. This actor is the fast cheap single-board tool; that one is the platform.

Scrape LinkedIn jobs into a clean, analysis-ready spreadsheet. Give this actor job titles and a location and get back one row per posting: title, company, location, parsed salary (min/max/period plus the raw string), employment type, seniority, job function, sector, applicant count as an integer, recruiter, posting date, and the job URL — each row topped with a 0–100 job score so the freshest, best-documented, salary-showing listings sort first. Built for job seekers, recruiters, job-board builders, and labor-market analysts. It reads only public, logged-out listings — no LinkedIn login, no cookies, and it never auto-applies. Pay-per-result — the current rate is on this page's Pricing tab, and it is deliberately one of the cheapest on the Store.

What it does

  • Searches LinkedIn's public job listings by keyword and location — read directly from LinkedIn's logged-out search pages (no third-party data provider, no account), with your native filters (date posted, experience level, employment type, remote/on-site/hybrid, specific companies) applied at the source.
  • Parses salaries into numbers: "$115,000.00/yr - $120,000.00/yr" becomes salaryMin: 115000, salaryMax: 120000, salaryPeriod: "year" — and the minSalary filter annualizes hourly/monthly pay before comparing.
  • Derives an isRemote flag by scanning the title, location, and description for remote/WFH signals (LinkedIn's own field for this isn't exposed on public listings).
  • Parses applicant counts to integers so you can filter to low-competition roles with maxApplicants.
  • Normalizes and cleans: posting dates to YYYY-MM-DD, tracking parameters stripped from job URLs, whitespace collapsed, duplicates removed across all your search queries.
  • Scores every job 0–100 — salary shown +25, freshness up to +25, full description +20, seniority/sector present +12, company present +8 — and sorts the dataset best-first (ties broken by highest salary).
  • Applies your client-side filters after cleaning: requireSalary, minSalary (annualized), easyApplyOnly, maxApplicants.

Use cases

  • Job search automation — schedule a daily run for your target titles, filter to r86400 (past 24 h) and low applicant counts, and be among the first applicants.
  • Recruiting intelligence — see which companies are hiring for a role, at what advertised salary, and how much competition each posting draws.
  • Job-board aggregation — feed a niche job board with clean, deduped LinkedIn postings including salary data where shown.
  • Salary benchmarking — collect the minority of postings that disclose pay and analyze salaryMin/salaryMax by title and region.
  • Labor-market research — track posting volume, seniority mix, and remote share across sectors over time.

Input

FieldTypeDefaultDescription
searchQueriesarray["data analyst"]Job titles, skills, or company keywords — one per line. Each is searched separately and results are deduped.
locationstring"United States"City, state, country, or zip — e.g. London, Remote.
datePostedstring""r86400 (past 24 h), r604800 (past week), r2592000 (past month), or empty for any time.
experienceLevelarray[]Seniority codes: 1 Internship, 2 Entry, 3 Associate, 4 Mid-Senior, 5 Director.
contractTypearray[]Employment type codes: F Full-time, P Part-time, C Contract, T Temporary, I Internship.
remotearray[]Work arrangement codes: 1 On-site, 2 Remote, 3 Hybrid.
companyNamesarray[]Filter to specific company names.
companyIdarray[]Filter by LinkedIn numeric company IDs (from a company page URL).
maxItemsinteger100Max jobs per search query (1–1000).
requireSalarybooleanfalseDrop listings that don't show a salary.
minSalaryinteger0Keep only jobs paying at least this much per year (hourly/monthly pay annualized; 0 = off).
easyApplyOnlybooleanfalseKeep only LinkedIn Easy Apply jobs.
maxApplicantsinteger0Keep only jobs with at most this many applicants (0 = off).
{
"searchQueries": ["data analyst"],
"location": "United States",
"datePosted": "r604800",
"experienceLevel": ["3", "4"],
"remote": ["2"],
"maxItems": 100,
"requireSalary": true,
"minSalary": 90000
}

Output

One dataset row per job, deduped across queries and sorted by job_score. Export to CSV, JSON, or Excel from the Output tab.

{
"jobTitle": "Data Analyst",
"companyName": "Synechron",
"location": "Pittsburgh, PA",
"jobFunction": "Information Technology",
"isRemote": false,
"salaryRaw": "$115,000.00/yr - $120,000.00/yr",
"salaryMin": 115000,
"salaryMax": 120000,
"salaryPeriod": "year",
"employmentType": "Full-time",
"seniority": "Mid-Senior level",
"sector": "IT Services and IT Consulting",
"applicants": 200,
"applyType": "EXTERNAL",
"applyUrl": "https://careers.synechron.com/...",
"postedDate": "2026-06-21",
"postedTimeAgo": "2 weeks ago",
"recruiterName": null,
"recruiterUrl": null,
"companyUrl": "https://www.linkedin.com/company/synechron",
"jobUrl": "https://www.linkedin.com/jobs/view/4422685636",
"descriptionText": "We are seeking a Data Analyst to…",
"descriptionHtml": "<p>We are seeking a Data Analyst to…</p>",
"jobId": "4422685636",
"job_score": 69
}

Pricing

This actor uses Apify pay-per-event pricing — the current per-job rate is on this page's Pricing tab (kept deliberately in the cheapest tier on the Store). You're charged only for the cleaned listings delivered after dedup and your filters — with requireSalary on, listings without pay data cost you nothing. No subscription, no charge for empty runs. The free Apify plan is enough to try it on a real search first.

Tips / FAQ

Does this apply to jobs for me? No. It only collects public listings into a dataset — it never logs in and never submits an application, including Easy Apply.

Do I need a LinkedIn account or cookie? No. It scrapes the public, logged-out job search — no li_at cookie, no credentials, no API key.

Why is salary usually empty? LinkedIn shows pay on a minority of postings. The parser fills salaryMin/salaryMax/salaryPeriod whenever a figure appears; use requireSalary to keep only those rows.

What's the difference between jobFunction and isRemote? jobFunction is the role area LinkedIn lists (e.g. "Information Technology"). Remote status isn't a separate public field, so isRemote is derived from remote/WFH keywords in the title, location, and description — treat it as a strong signal, not gospel.

Where does the data come from, and what if the source is down? Straight from LinkedIn's public, logged-out job search — no intermediary. If one query fails it's skipped and the run continues; on a full transient outage the run ends gracefully with a "temporarily unavailable — please retry" message and you're charged nothing.

Is scraping LinkedIn jobs legal? This collects public job data only, from logged-out pages. LinkedIn rate-limits aggressively and restricts automated access in its terms, so expect occasional partial runs; use the data for personal, research, or recruiting purposes and follow local law.

Support: found a bug or need a feature? Open an Issue on this actor's Issues tab — typical response within 1 business day.

API examples

Run it from code exactly like the Console — same input keys.

// Node.js (apify-client)
const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('flash_scraper/linkedin-jobs-scraper').call({
searchQueries: ['data analyst'], location: 'Austin, TX', maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'jobs');
# Python (apify-client)
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("flash_scraper/linkedin-jobs-scraper").call(run_input={
"searchQueries": ["data analyst"], "location": "Austin, TX", "maxResults": 100,
})
items = client.dataset(run["defaultDatasetId"]).iterate_items()
# cURL
curl -X POST "https://api.apify.com/v2/acts/flash_scraper~linkedin-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"searchQueries":["data analyst"],"location":"Austin, TX","maxResults":100}'

Schedules & pipelines

Every input works identically from the API, so it drops straight into an Apify Schedule (daily exports), webhooks (push finished runs to Slack or Sheets via Zapier/Make/n8n), or your own pipeline via the Dataset API. For a scheduled feed that only ever bills NEW postings, use the Multi Job Board Scraper's monitoring mode.