Releases · speedyapply/JobSpy · GitHub
Skip to content

Releases: speedyapply/JobSpy

v1.4.1

Choose a tag to compare

@kirkwat kirkwat released this 23 Oct 05:11
a606f9c
  • HelloWork returns jobs again after the site changed its result cards (#433)
  • ZipRecruiter returns jobs again after the site moved to a new search page layout; the old layout still works (#435, closes #434)
  • LinkedIn pay read from a job description keeps its cents, and a range with "k" on one side only, like "$90,000 - $120k", is read (#421)

Thanks @tararuD and @sghanna for the fixes, and @daveroama for the ZipRecruiter report.

v1.4.0

Choose a tag to compare

@kirkwat kirkwat released this 19 Oct 18:20
7a8952a
  • New jobspy command: search from the shell, one JSON line per job; -o saves the full records (#422)
  • New MCP server for AI agents: uvx --from "python-jobspy[mcp]" mcp-jobspy, listed in the MCP Registry as io.github.speedyapply/jobspy (#423, #424)
  • jobs.attrs["errors"] and jobs.attrs["warnings"] say which boards failed or changed the search (#419)
  • A blocked board says so: response status code 429 (blocked: use a proxy) (#423)
  • Invalid scrape_jobs arguments raise a one-line ValueError, unknown ones a TypeError (#415)
  • site_name, job_type and description_format take the exact lower-case value (#415)
  • A search with no jobs returns the usual columns with no rows (#418)
  • Logging uses the standard logging module, with loggers named jobspy.<board>; create_logger and set_logger_level are removed (#414)
  • Type hints ship with the package (py.typed) (#416)
  • JobPost fields are the output columns (#418, closes #265)
  • min_amount and max_amount are always floats, and an empty description is None (#416, #418)
  • Each board checks what it reads; a job that fails the check is skipped with a warning (#416)
  • A proxy passed in proxies is used even when the environment sets one (#415)
  • LinkedIn: pay written in the description fills in when the job page shows none, on US searches (#418)
  • HelloWork, Bayt and Naukri parsing fixes (#416, #418)
  • Removed the job types nights and summer and ten countries with no Indeed or Glassdoor site (#415)
  • For code that imports internals: JobResponse, desired_order, extract_salary and format_description are removed; scraper classes take no constructor arguments (#415, #416, #418)

v1.3.0

Choose a tag to compare

@kirkwat kirkwat released this 08 Oct 07:21
1fffbcd
  • New board: HelloWork (France), site_name="hellowork" (#411)
  • Unknown scrape_jobs arguments warn and suggest the right name; verbose defaults to 1 so warnings show (#402)
  • Google is out of the default boards; site_name="ziprecruiter" is accepted (#402)
  • Proxy lists no longer get challenged on switching proxy; socks5h:// and socks4:// proxies work; ca_cert is used on every board (#402)
  • is_remote no longer marks hybrid jobs remote on Indeed, Glassdoor, Bayt and BDJobs (#403, #405, #407, #408)
  • hours_old no longer returns older jobs on Indeed and Glassdoor, and takes far fewer requests on Bayt and Naukri (#403, #405, #407, #408)
  • A job page that fails is logged and the job is kept, on every board (#404, #405, #406, #407, #408)
  • date_posted is a UTC date on every board; description_format="plain" returns plain text on Indeed, Glassdoor and Bayt (#403, #405, #407)
  • Indeed: "from", "up to" and single-amount salaries keep their numbers; contract and temporary match jobs outside the US; company rating filled (#403)
  • LinkedIn: exact offset, paging stops at the last page, a throttled page is logged; is_remote and job_type warn, since the logged-out search ignores both (#404)
  • Glassdoor: descriptions fetched 25 jobs per request, 100 jobs a page with an exact offset, distance sent, company details filled (#405)
  • ZipRecruiter: nationwide jobs are returned; job_type="internship" works (#406)
  • Bayt: easy_apply uses the site's filter; part time and temporary supported; company size, industry and experience range filled (#407)
  • Naukri: part-time and contract jobs are no longer returned as full time; job_url_direct no longer needs fetch_description (#408)
  • BDJobs: jobs with no location and promoted jobs are returned; apply emails and employer links filled (#408)
  • user_agent is sent as given on every board (#409)
  • For code that imports internals: BaytScraper is now Bayt; CompensationInterval.get_interval, extract_job_type and get_enum_from_value are removed (#405, #407, #409)

thanks @Kev744

v1.2.0

Choose a tag to compare

@kirkwat kirkwat released this 02 Oct 05:27
83efd3d
  • Installs on Python 3.13 and 3.14; dependency pins removed (#390)
  • Glassdoor, ZipRecruiter, Bayt, Naukri and BDJobs return jobs again (#394, #399, #396, #398, #397)
  • New fetch_description flag for boards whose search results don't include the description; replaces linkedin_fetch_description. Glassdoor descriptions now need it (#394)
  • ZipRecruiter, Bayt, Naukri and BDJobs honour more filters (location, hours_old, job_type, is_remote, easy_apply, offset) and fill more fields
  • Indeed: filters combine instead of only one being sent; salaries outside the US (#392)
  • LinkedIn: salary read from the job page; unlisted countries and a missing seniority level no longer crash (#380, #391, #354)
  • One board failing no longer discards the others' jobs: boards log errors instead of raising (#400)
  • One 15 s request timeout and no automatic retries (#400)
  • is_remote on Indeed and LinkedIn no longer guesses from the description (#400)
  • Salaries keep cents (#380)
  • tls-client replaced by curl_cffi (#395)
  • Google returns no jobs: Google Jobs now requires JavaScript (#284)
  • Deprecated, to be removed in 2.0: linkedin_fetch_description, the jobspy.exception classes, Country.US_CANADA (#401)

thanks @ZuoyunZheng, @lixianphys, @thesandrex, @Kaushik4141, @m3ridian-zero, @berkaygemici, @Recursing, @sankalp-b1401, @codechrl, @FullStackist

v1.1.82

Choose a tag to compare

@kirkwat kirkwat released this 30 Sep 08:28

Published to PyPI on 2025-07-28; this GitHub Release was added afterwards (#338). Version 1.1.81 was never published.

  • BDJobs (Bangladesh) job board (#280)
  • SOCKS5 proxy support (#266)
  • Glassdoor: rotate user agent / update headers for 403 responses (#274)

thanks @itsShrizon, @Remote-Radical, @letrongtai902

v1.1.80

Choose a tag to compare

@kirkwat kirkwat released this 30 Sep 08:27
61205bc

Published to PyPI on 2025-03-30; this GitHub Release was added afterwards (#338).

  • Fix negative-days date parsing (#264)

thanks @NeonEvergreen

v1.1.79

Choose a tag to compare

@cullenwatson cullenwatson released this 21 Mar 22:37
  • Naukri support - India's top job board

thanks @lijuuu

v1.1.77

Choose a tag to compare

@cullenwatson cullenwatson released this 21 Feb 18:58

thanks @aHishamm

v1.1.75

Choose a tag to compare

@cullenwatson cullenwatson released this 24 Oct 20:20
338d854

fetch jobs on Google search results with

  • site_name='google'
  • google_search_term='software engineer jobs near San Francisco, CA'

v1.1.66

Choose a tag to compare

@cullenwatson cullenwatson released this 18 Sep 23:45
f7b29d4
  • change Indeed to sort by relevance not date to increase accuracy
  • Also put search in quotes to do exact search on Indeed if results seem inaccurate