Skip to main content
You can filter jobs at two stages: before scraping by passing parameters to scrape_jobs(), and after scraping by querying the returned DataFrame.

Filtering before scraping

These parameters are sent to the job boards and reduce the number of results fetched.

Job type

Use the job_type parameter to restrict results to a specific employment type.
Accepted values: "fulltime", "parttime", "internship", "contract".

Remote jobs

Set is_remote=True to filter for remote positions.

Location and distance

The location parameter accepts a city, state, or country string. The distance parameter sets the search radius in miles (default 50).

Recency

Use hours_old to return only jobs posted within the last N hours.

Easy apply

Set easy_apply=True to filter for jobs hosted directly on the job board (i.e. you apply without leaving the site).
The LinkedIn Easy Apply filter no longer works on LinkedIn’s end. Setting easy_apply=True with site_name="linkedin" has no effect.

Offset

Use offset to start results from the Nth position. This is useful for paginating through results across multiple calls.

Platform-specific limitations

Indeed only supports one of the following per search:
  • hours_old
  • job_type and/or is_remote
  • easy_apply
Combining them will not raise an error, but only one filter will take effect.
LinkedIn only supports one of the following per search:
  • hours_old
  • easy_apply

Filtering after scraping

After scrape_jobs() returns a DataFrame, you can use standard pandas operations to further narrow results.

Filter by column value

Filter by salary range

Drop duplicates

The same posting can appear on multiple boards. Use job_url or title + company to deduplicate.

Filter by keyword in title

Filter by site