Jobs Scraper — Indeed, LinkedIn & Glassdoor avatar

Jobs Scraper — Indeed, LinkedIn & Glassdoor

Pricing

from $3.00 / 1,000 job results

Go to Apify Store
Jobs Scraper — Indeed, LinkedIn & Glassdoor

Jobs Scraper — Indeed, LinkedIn & Glassdoor

Aggregate job listings from Indeed, LinkedIn and Glassdoor in one run. Returns title, company, location, salary, posted date, apply URL. $3/1K. MCP/API-ready.

Pricing

from $3.00 / 1,000 job results

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

325

Total users

29

Monthly active users

8 days ago

Last modified

Share

Apify Actor khadinakbar/jobs-scraper searches job listings across Indeed, LinkedIn, and Glassdoor in one run and returns one record per job listing. It accepts a job title or keyword, an optional location, platform selection, and result controls. Each record can include job title, company name, location, salary fields, remote status, posted date, apply URL, platform, source URL, company details, and skill signals, giving you a normalized dataset for spreadsheets, dashboards, API workflows, and Apify MCP.

Best fit and connected workflows

This Actor fits workflows that need one searchable view across multiple job boards while keeping the output schema consistent.

Use it when you want to:

  • compare postings for the same role across Indeed, LinkedIn, and Glassdoor
  • filter by role, location, remote status, job type, or recency
  • build lead lists for recruiters, talent sourcers, or job market research
  • feed structured job data into an internal app, CRM, or AI pipeline
  • connect job search results to follow-up Actors that enrich company or contact data

For workflow routing, these verified related Actors are useful when your brief points to a more specific board or region:

Practical scenario

Maya is a recruiter who starts with data engineer in New York, NY and selects Indeed and LinkedIn. The Actor returns listings with job_title, company_name, location, salary_range, posted_date, platform, and apply_url. Maya sees that several roles are remote, one listing includes a salary range, and one has easy_apply: true. She uses those fields to decide which listing to review first, then opens the apply URL to continue outreach or application tracking.

Input fields

FieldTypeDefaultPurpose
searchQuerystringsoftware engineerJob title, skill, or keyword to search
locationstringUnited StatesCity, state, country, or Remote
platformsarray["indeed","linkedin","glassdoor"]Platforms to search
maxResultsinteger50Maximum total listings to return
jobTypestringallEmployment type filter
isRemotebooleanfalseReturn remote jobs only when enabled
hoursOldinteger0Posted within the last X hours
deduplicatebooleantrueRemove cross-platform duplicates

Focused input example

{
"searchQuery": "data engineer",
"location": "New York, NY",
"platforms": ["indeed", "linkedin"],
"maxResults": 20,
"jobType": "fulltime",
"isRemote": false,
"hoursOld": 48,
"deduplicate": true
}

Output fields

Each dataset record contains the following fields when available in the source listing.

FieldTypeMeaning
job_titlestringFull job title
company_namestringHiring company
locationstringJob location
is_remotebooleanRemote or work-from-home status
salary_minnumber or nullMinimum salary value
salary_maxnumber or nullMaximum salary value
salary_currencystring or nullISO currency code
salary_periodstring or nullSalary period such as yearly, monthly, or hourly
salary_rangestring or nullHuman-readable salary display
job_typestring or nullEmployment type
seniority_levelstring or nullExperience level when available
descriptionstringFull job description text
skillsarray or nullSkills detected from the description
posted_datestring or nullISO 8601 posted timestamp
apply_urlstringDirect link to job listing
easy_applyboolean or nullQuick apply indicator when available
platformstringSource platform: Indeed, LinkedIn, or Glassdoor
company_ratingnumber or nullAverage company rating
company_reviews_countinteger or nullNumber of employee reviews
company_sizestring or nullEmployee count range
company_industrystring or nullIndustry classification
company_websitestring or nullCompany website URL
source_urlstringSearch results page that was scraped
scraped_atstringISO 8601 scrape timestamp

Illustrative output record

{
"job_title": "Senior Data Engineer",
"company_name": "Airbnb",
"location": "San Francisco, CA",
"is_remote": false,
"salary_min": 150000,
"salary_max": 200000,
"salary_currency": "USD",
"salary_period": "yearly",
"salary_range": "$150K-$200K/yr",
"job_type": "fulltime",
"seniority_level": "Mid-Senior level",
"description": "We are looking for a Senior Data Engineer to join the team...",
"skills": ["python", "sql", "aws", "spark"],
"posted_date": "2026-03-28T09:00:00.000Z",
"apply_url": "https://www.linkedin.com/jobs/view/3987654321",
"easy_apply": true,
"platform": "linkedin",
"company_rating": 4.3,
"company_reviews_count": 3241,
"company_size": "1001-5000 employees",
"company_industry": "Internet & Web Services",
"company_website": "https://airbnb.com",
"source_url": "https://www.linkedin.com/jobs/search/?keywords=data+engineer&location=United+States",
"scraped_at": "2026-03-31T10:30:00.000Z"
}

How it works

The Actor searches job listings across the selected platforms using the keyword and location you provide. It can search Indeed, LinkedIn, and Glassdoor together, return a combined result set, and distribute the maxResults setting across the chosen platforms. It also supports job type filtering, remote-only filtering, a posted-within-hours filter, and cross-platform deduplication based on job title, company, and location. The dataset schema stores each job listing as one record.

Pricing

This Actor uses Pay per event pricing on Apify. The primary event is one Job Result, which is one scraped job listing from Indeed, LinkedIn, or Glassdoor. Apify platform usage is charged separately according to your account and execution settings, so review the live Pricing tab on the Actor page for current details.

Example in words: if a run returns one hundred job listings, it charges one hundred Job Result events, plus the Apify platform usage associated with the run.

Use with AI agents (MCP)

This Actor is usable through Apify MCP as a tool for job search and market research workflows. The exact Actor identity is khadinakbar/jobs-scraper.

Tool description:

  • search job listings across Indeed, LinkedIn, and Glassdoor
  • return structured records with titles, companies, locations, salary fields, remote status, apply URLs, and source metadata
  • read results from the Apify dataset output for downstream reasoning, enrichment, or ranking

Search for "remote data engineer" roles in the United States, limit to 20 results, use LinkedIn and Indeed, then summarize the records by company, salary range, and apply URL.

Output interpretation:

  • each dataset item is one job listing
  • source_url shows the query page used for the record
  • scraped_at helps distinguish a fresh run from earlier data
  • platform identifies the source board for each record
  • salary_* fields are normalized for analysis when available

Scope, pagination, and cost guidance:

  • maxResults sets the total result target across selected platforms
  • results are distributed across platforms
  • use smaller values for fast tests and larger values when you want broader coverage
  • each returned listing counts as one Job Result event
  • platform usage is billed separately on Apify
  • review the live Pricing tab before production use

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const actor = client.actor('khadinakbar/jobs-scraper');
const run = await actor.call({
searchQuery: 'data engineer',
location: 'New York, NY',
platforms: ['indeed', 'linkedin'],
maxResults: 10,
jobType: 'fulltime',
isRemote: false,
hoursOld: 72,
deduplicate: true,
});
const dataset = client.dataset(run.defaultDatasetId);
const { items } = await dataset.listItems();
console.log(items);

Best results and outcome guidance

Use a focused searchQuery and a concrete location when you want cleaner search results. If you only need one source, set platforms to a subset. When you are comparing overlapping listings, keep deduplicate enabled so the same job appearing on more than one platform is handled as one record. When freshness matters, set hoursOld to a narrow window such as 24 or 48. For broad monitoring, keep jobType on all and widen the location scope.

Design note

I found that the live dataset contract exposes salary_period with the values yearly, monthly, and hourly, which makes the salary fields straightforward to use in spreadsheets and downstream analysis.

FAQ

Can I search more than one job platform in the same run?

Yes. Set platforms to include Indeed, LinkedIn, Glassdoor, or any combination of them.

How do I reduce duplicate listings?

Keep deduplicate set to true. The Actor matches on job title, company, and location, then keeps the record with the richer description.

How do I focus on remote jobs?

Set isRemote to true. You can also combine it with location and jobType for a narrower search.

What should I use for a quick test?

Start with a small maxResults value such as 5 or 10, then review the dataset output before running a larger search.

What field identifies where a listing came from?

Use platform for the source board and source_url for the search results page used to find the record.

When should I route to Ashby Jobs Scraper instead?

Use it when your search brief centers on employers hiring through Ashby and you want a source-specific workflow rather than a cross-board search.

When should I route to Bayt Jobs Data Scraper for MENA Listings instead?

Use it when the search is focused on Bayt listings or a MENA-centered market brief.

When should I route to APEC Jobs Scraper instead?

Use it when the research brief points to APEC-related job boards, geography, or audiences.

Responsible use

Use the Actor in ways that respect the terms of the source platforms and the Apify platform. Review the live Pricing tab before larger runs, and validate the returned fields in your own workflow before making operational decisions from the data.

When your search brief calls for a more specific source, these verified related Actors provide focused routing:

  • Use APEC Jobs Scraper for APEC-centered searches when the next workflow needs that Actor's focused input and output contract.
  • Use Ashby Jobs Scraper for Ashby-hosted listings when the next workflow needs that Actor's focused input and output contract.
  • Use Bayt Jobs Data Scraper for MENA Listings for Bayt and MENA listings when the next workflow needs that Actor's focused input and output contract.