Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/speedyapply/JobSpy/llms.txt

Use this file to discover all available pages before exploring further.

Site

Represents a supported job board. Use string values or the enum directly with the site_name parameter of scrape_jobs().
Enum memberString value
Site.LINKEDIN"linkedin"
Site.INDEED"indeed"
Site.ZIP_RECRUITER"zip_recruiter"
Site.GLASSDOOR"glassdoor"
Site.GOOGLE"google"
Site.BAYT"bayt"
Site.NAUKRI"naukri"
Site.BDJOBS"bdjobs"
from jobspy import scrape_jobs
from jobspy.model import Site

# Using strings
jobs = scrape_jobs(site_name=["linkedin", "indeed"])

# Using the enum
jobs = scrape_jobs(site_name=[Site.LINKEDIN, Site.INDEED])

# Mixing both
jobs = scrape_jobs(site_name=[Site.LINKEDIN, "indeed", "zip_recruiter"])

JobType

Represents the employment type of a job posting. Pass the string value to scrape_jobs() via the job_type parameter.
Enum memberPrimary string valueUsage in scrape_jobs()
JobType.FULL_TIME"fulltime"job_type="fulltime"
JobType.PART_TIME"parttime"job_type="parttime"
JobType.CONTRACT"contract"job_type="contract"
JobType.TEMPORARY"temporary"job_type="temporary"
JobType.INTERNSHIP"internship"job_type="internship"
JobType.PER_DIEM"perdiem"
JobType.NIGHTS"nights"
JobType.OTHER"other"
JobType.SUMMER"summer"
JobType.VOLUNTEER"volunteer"
from jobspy import scrape_jobs

# Filter for full-time jobs
jobs = scrape_jobs(
    site_name="indeed",
    search_term="software engineer",
    job_type="fulltime",
)
FULL_TIME includes localized equivalents from multiple languages (e.g., "vollzeit", "tempsplein", "全职") to handle international job boards. When filtering with job_type="fulltime", you should still pass the English string.

CompensationInterval

Represents the pay frequency for a salary or wage. Appears in the interval column of the output DataFrame and in the Compensation.interval field of the JobPost model.
Enum memberString value
CompensationInterval.YEARLY"yearly"
CompensationInterval.MONTHLY"monthly"
CompensationInterval.WEEKLY"weekly"
CompensationInterval.DAILY"daily"
CompensationInterval.HOURLY"hourly"
from jobspy import scrape_jobs

jobs = scrape_jobs(
    site_name=["indeed", "zip_recruiter"],
    search_term="data analyst",
    enforce_annual_salary=True,  # convert all intervals to yearly
)

# Filter for hourly jobs
hourly_jobs = jobs[jobs["interval"] == "hourly"]

DescriptionFormat

Controls the format of job descriptions returned by scrape_jobs(). Pass the string value to the description_format parameter.
Enum memberString valueDescription
DescriptionFormat.MARKDOWN"markdown"HTML converted to Markdown (default)
DescriptionFormat.HTML"html"Raw HTML as returned by the job board
DescriptionFormat.PLAIN"plain"Plaintext with HTML tags stripped
from jobspy import scrape_jobs

# Get descriptions as plain text
jobs = scrape_jobs(
    site_name="linkedin",
    search_term="product manager",
    description_format="plain",
)

SalarySource

Indicates where the salary data for a given job was sourced from. Appears in the salary_source column of the output DataFrame.
Enum memberString valueDescription
SalarySource.DIRECT_DATA"direct_data"Salary was provided directly by the job board’s structured data
SalarySource.DESCRIPTION"description"Salary was extracted by parsing the job description text (US only)
The salary_source column is None when no salary information could be found.

Country

Used with the country_indeed parameter to target a specific country on Indeed and Glassdoor. Pass the country name as a lowercase string. JobSpy supports 60+ countries. The table below lists a selection of commonly used ones. For the complete list, refer to the supported countries guide.
CountryString value for country_indeedIndeedGlassdoor
USA"usa" or "us" or "united states"YesYes
UK"uk" or "united kingdom"YesYes
Canada"canada"YesYes
Australia"australia"YesYes
Germany"germany"YesYes
France"france"YesYes
India"india"YesYes
Netherlands"netherlands"YesYes
Spain"spain"YesYes
Brazil"brazil"YesYes
Mexico"mexico"YesYes
Singapore"singapore"YesYes
Hong Kong"hong kong"YesYes
Italy"italy"YesYes
Ireland"ireland"YesYes
Switzerland"switzerland"YesYes
New Zealand"new zealand"YesYes
Japan"japan"YesNo
China"china"YesNo
Saudi Arabia"saudi arabia"YesNo
from jobspy import scrape_jobs

# Search for jobs in Germany on Indeed
jobs = scrape_jobs(
    site_name="indeed",
    search_term="software engineer",
    location="Berlin",
    country_indeed="germany",
)

# Search in the UK on both Indeed and Glassdoor
jobs = scrape_jobs(
    site_name=["indeed", "glassdoor"],
    search_term="product manager",
    location="London",
    country_indeed="uk",
)
LinkedIn searches globally and ignores country_indeed. ZipRecruiter only searches the US and Canada and also ignores this parameter. Bayt searches internationally and ignores country_indeed as well.
Countries marked with * in the supported countries guide also support Glassdoor. Pass the exact country string shown above — the match is case-insensitive.

Build docs developers (and LLMs) love