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

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

Pricing

from $3.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 $3.00 / 1,000 job scrapeds

Rating

5.0

(1)

Developer

Pika Choo

Pika Choo

Maintained by Community

Actor stats

2

Bookmarked

439

Total users

155

Monthly active users

8 days 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 their upstream scrapers are currently unreliable (tracked in JobSpy issues #284 / #302 / #283).

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. Backported three open upstream patches from speedyapply/JobSpy (PR #347, PR #350) that had not yet been merged into the pinned python-jobspy==1.1.82:

  • ๐Ÿฉน 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 /graph endpoint often returns peripheral errors on SEO-only fields (jobsPageSeoData) alongside fully populated data.jobListings. Upstream treated any errors field as fatal and dropped all the good data. Now we only fail when core jobListings 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.