You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
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)