Multi Job Board Scraper β€” LinkedIn, Indeed, Glassdoor & More avatar

Multi Job Board Scraper β€” LinkedIn, Indeed, Glassdoor & More

Pricing

from $5.00 / 1,000 job scrapeds

Go to Apify Store
Multi Job Board Scraper β€” LinkedIn, Indeed, Glassdoor & More

Multi Job Board Scraper β€” LinkedIn, Indeed, Glassdoor & More

Scrape job listings from LinkedIn, Indeed, Glassdoor, Google Jobs & ZipRecruiter simultaneously. Extract job title, company, salary, location, job type, description, company info & more. No API keys needed β€” pay per result.

Pricing

from $5.00 / 1,000 job scrapeds

Rating

5.0

(1)

Developer

Pika Choo

Pika Choo

Maintained by Community

Actor stats

15

Bookmarked

1.8K

Total users

270

Monthly active users

2 months ago

Last modified

Share

🌍 Multi Job Board Scraper

Scrape job listings from LinkedIn, Indeed, Glassdoor, Google Jobs, ZipRecruiter, Bayt, BDJobs, and Naukri simultaneously with a single search β€” and get structured, deduplicated results in one dataset.


✨ Features

  • 🏒 8 job boards in one run β€” LinkedIn, Indeed, Glassdoor, Google Jobs, ZipRecruiter, Bayt, BDJobs, Naukri
  • πŸ’° Rich salary data β€” min/max, currency, interval, annual normalization
  • πŸ“‹ Deep company info β€” size, revenue, rating, industry, logo, description
  • 🎯 Advanced filters β€” remote only, job type, hours posted, distance, easy apply, LinkedIn company targeting
  • πŸ“ Flexible output β€” Markdown or HTML descriptions
  • πŸ” Auto-deduplication β€” same job posted on multiple boards appears only once
  • πŸ›‘οΈ Proxy support β€” residential proxies recommended for LinkedIn
  • πŸ€– Custom User-Agent β€” bypass board-specific blocks
  • πŸ” CA cert support β€” for enterprise proxy authentication

πŸ“₯ Input

πŸ”΄ Required

FieldTypeDescription
searchTerm πŸ”stringJob title or keyword (e.g. "software engineer", "data analyst")

πŸ“ Search & Location

FieldTypeDefaultDescription
location πŸ“stringβ€”City, state, or country (e.g. "New York", "London", "Remote")
distance πŸ“integer50Search radius in miles from location
sites 🏒arrayAll 8Job boards: linkedin, indeed, glassdoor, google, zip_recruiter, bayt, bdjobs, naukri
countryIndeed 🌐stringusaCountry for Indeed/Glassdoor (usa, uk, canada, australia, germany, france, india, etc.)
googleSearchTerm πŸ”Žstringβ€”Custom search term for Google Jobs only (copy from Google Jobs UI for best results)

πŸŽ›οΈ Filters

FieldTypeDefaultDescription
maxResults πŸ“Šinteger20Max results per site (1–100)
isRemote 🏠booleanfalseRemote jobs only
jobType πŸ’Όstringβ€”fulltime, parttime, contract, internship, temporary
hoursOld ⏰integerβ€”Jobs posted within N hours (e.g. 24 = last day, 168 = last week)
easyApply ⚑booleanfalseQuick-apply jobs only (hosted on the job board)
offset ⏭️integerβ€”Skip first N results (pagination)

πŸ”— LinkedIn-Specific

FieldTypeDefaultDescription
linkedinFetchDescription πŸ”—booleanfalseFetch full descriptions + direct URLs (more requests, slower)
linkedinCompanyIds 🏭arrayβ€”Restrict to specific LinkedIn company IDs (e.g. ["1441", "2382910"])

βš™οΈ Output & Advanced Options

FieldTypeDefaultDescription
descriptionFormat πŸ“stringmarkdownJob description format: markdown or html
enforceAnnualSalary πŸ’°booleanfalseConvert all wages to yearly equivalents
userAgent πŸ€–stringβ€”Override default User-Agent header
caCert πŸ”stringβ€”CA certificate path for proxy auth
proxyConfiguration πŸ›‘οΈobjectRESIDENTIALProxy settings (residential recommended for LinkedIn)

πŸ“€ Output

Each item contains:

FieldDescription
titleJob title
companyCompany name
locationJob location
job_urlLink to job listing
job_url_directDirect apply URL (when available)
siteSource job board
date_postedDate the job was posted
job_typeEmployment type
is_remoteRemote flag
job_levelSeniority level (LinkedIn)
job_functionRole category
company_industryIndustry
company_num_employeesEmployee count
company_employees_labelHuman-readable employee range (e.g. "1001-5000")
company_revenueCompany revenue
company_revenue_labelHuman-readable revenue (e.g. "$1B+")
company_countryCompany country (Indeed)
company_ratingCompany rating
company_reviews_countNumber of reviews
company_logoLogo URL
company_descriptionCompany description
salary_minMinimum salary
salary_maxMaximum salary
salary_currencyCurrency
salary_intervalPay period (yearly, monthly, hourly)
descriptionFull job description (Markdown or HTML)
emailsEmails extracted from description
skillsSkills extracted from description (Naukri)
experience_rangeRequired experience (Naukri)
vacancy_countOpen positions (Naukri)
work_from_home_typeWFH type (Naukri)

πŸ’΅ Pricing

$0.003 per job scraped (pay-per-event, charged only for results delivered)


⚠️ Important Notes

API Limitations

  • LinkedIn ⚠️ β€” Cannot combine hoursOld with easyApply in the same search
  • Indeed ⚠️ β€” Cannot combine hoursOld with jobType, isRemote, or easyApply in the same search

Site-Specific Notes

BoardNotes
πŸ”΅ LinkedInRate-limited ~100 results per IP. Use residential proxies for large runs. Enable linkedinFetchDescription for full descriptions.
🟒 IndeedMost reliable, no rate limiting. Best for large scrapes.
🟑 GlassdoorRequires countryIndeed for country targeting.
πŸ”΄ Google JobsBest with a custom googleSearchTerm copied from the browser UI.
🟠 ZipRecruiterUS & Canada only.
πŸŒ™ BaytMiddle East job market. Only searchTerm filter supported.
🟒 NaukriIndia job market. Returns skills, experience_range, company_rating.
πŸ”΅ BDJobsBangladesh job market.

πŸ§ͺ Examples

{
"searchTerm": "software engineer",
"location": "New York"
}

🏠 Remote Full-time Jobs β€” Last 24 Hours

{
"searchTerm": "data analyst",
"isRemote": true,
"jobType": "fulltime",
"hoursOld": 24,
"sites": ["indeed", "google", "zip_recruiter"]
}
{
"searchTerm": "product manager",
"location": "San Francisco",
"sites": ["linkedin"],
"linkedinCompanyIds": ["1441", "2382910"],
"linkedinFetchDescription": true
}

🌏 Global Multi-Board Search with Salary Normalization

{
"searchTerm": "machine learning engineer",
"location": "London",
"sites": ["linkedin", "indeed", "glassdoor"],
"countryIndeed": "uk",
"maxResults": 50,
"enforceAnnualSalary": true,
"descriptionFormat": "markdown"
}
{
"searchTerm": "DevOps engineer",
"sites": ["bayt", "naukri"],
"maxResults": 30
}

πŸ“ Changelog

v1.0.20 β€” 2026-04-23

Quality & reliability: resolved "under maintenance" flag.

Apify's automated quality tests run the actor with only the prefilled input values. When v1.0.18 added multi-term search, the hard requirement on searchTerm was relaxed β€” which meant the QA runs submitted empty input and hit a ValueError crash, which triggered the maintenance flag.

  • 🩹 Prefilled inputs for automated testing: searchTerm β†’
    "software engineer"
    , location β†’ "New York, NY". New users opening the actor for the first time also see these working defaults instead of a blank form.
  • 🩹 Graceful empty-input fallback: if neither searchTerm nor searchTerms is provided, the actor now pushes a single usage-hint row and exits cleanly (exit 0) instead of raising a ValueError (exit 91). No user is ever charged for a pointless failed run.
  • πŸ“¦ All 8 job boards still selectable by default β€” Google & ZipRecruiter remain available even though those platforms are currently rate-limiting automated traffic and may intermittently return no results.

Verified on Apify: empty-input run now succeeds in <1s instead of crashing; prefilled input returns 60 jobs across LinkedIn/Indeed/Glassdoor.

v1.0.18 β€” 2026-04-21

Multi-term OR search (based on store-review feedback).

  • New optional searchTerms array (max 5). Runs each query in turn, merges the results, and tags every row with matched_search_term so you can see which query surfaced each job.
  • Existing single searchTerm field unchanged and fully backwards compatible.
  • Example:
    {
    "searchTerms": ["AI consultant", "AI help"],
    "location": "Remote",
    "sites": ["linkedin", "indeed"]
    }

v1.0.17 β€” 2026-04-20

Glassdoor: fixed β€” now returns real results again. Three fixes for changes Glassdoor made to its site that had been causing every Glassdoor search to return 0 results:

  • 🩹 CSRF token URL: the old bootstrap URL (/Job/computer-science-jobs.htm) began returning HTTP 403 after Glassdoor's Next.js migration, so the session was initialized without a valid token β†’ every Glassdoor search silently returned 0 results. Switched to /Job/index.htm, which returns 200 and the token parses cleanly.
  • 🩹 Location URL-encoding: location strings with commas or spaces (e.g. "Nashville, TN", "New York, NY") were interpolated raw into the location lookup URL, triggering HTTP 400 "location not parsed". Now wrapped with urllib.parse.quote.
  • 🩹 Non-fatal GraphQL errors: Glassdoor's API often returns peripheral errors on SEO-only fields (jobsPageSeoData) alongside fully populated job listings. These were previously treated as fatal, dropping all the good data. Now we only fail when the core job-listings data is actually missing.

Verified locally before deploy: Nashville, TN + "software engineer" β†’ 10 real jobs returned (Deloitte, KPMG, PwC, Amazon, etc.). Full regression on Indeed / LinkedIn / combined runs passed.

v1.0.x (pre-fix)

  • BDJobs user_agent kwarg compatibility shim (still active).
  • Multi-site concurrent scraping across 8 boards.
  • Rich salary, company, and filter support.