{"id":8553,"library":"python-jobspy","title":"JobSpy","description":"JobSpy is a Python library designed for scraping job postings from major job boards including LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, and Naukri. It aggregates job data into a Pandas DataFrame, supports concurrent scraping, and includes features like proxy support to manage rate limiting. The library is actively maintained, with frequent updates adding new features and improving scraper reliability.","status":"active","version":"1.1.82","language":"python","source_language":"en","source_url":"https://github.com/cullenwatson/JobSpy","tags":["job scraping","web scraping","jobs","linkedin","indeed","glassdoor","ziprecruiter","bayt","naukri","automation","data extraction"],"install":[{"cmd":"pip install -U python-jobspy","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"Requires Python 3.10 or higher, but less than 4.0.","package":"python","optional":false}],"imports":[{"symbol":"scrape_jobs","correct":"from jobspy import scrape_jobs"}],"quickstart":{"code":"import pandas as pd\nfrom jobspy import scrape_jobs\n\njobs = scrape_jobs(\n    site_name=[\"indeed\", \"linkedin\", \"zip_recruiter\", \"google\", \"glassdoor\"],\n    search_term=\"software engineer\",\n    location=\"San Francisco, CA\",\n    results_wanted=10,\n    country_indeed=\"USA\", # Required for Indeed/Glassdoor in many cases\n    hours_old=72, # Jobs posted within the last 72 hours\n    description_format=\"markdown\",\n    verbose=1 # Show warnings and errors\n)\n\nif isinstance(jobs, pd.DataFrame):\n    print(f\"Found {len(jobs)} jobs\")\n    print(jobs.head())\n    # To save to CSV:\n    # import csv\n    # jobs.to_csv(\n    #     \"jobs.csv\",\n    #     quoting=csv.QUOTE_NONNUMERIC,\n    #     escapechar=\"\\\\\",\n    #     index=False,\n    # )\nelse:\n    print(\"No jobs found or an error occurred.\")","lang":"python","description":"This quickstart example demonstrates how to scrape job postings for 'software engineer' in 'San Francisco, CA' from multiple job boards. It retrieves the latest 10 results posted within the last 72 hours, specifying 'USA' for Indeed/Glassdoor. The results are returned as a Pandas DataFrame."},"warnings":[{"fix":"Set `verbose=1` (for warnings+errors) or `verbose=2` (for all logs) in the `scrape_jobs` function call to re-enable detailed logging.","message":"Default logging verbosity changed. Logs are now suppressed by default, showing only errors.","severity":"gotcha","affected_versions":"v1.1.77 and later"},{"fix":"If exact date-based sorting is crucial, consider filtering results by `hours_old` or refining `search_term` for more precise matches.","message":"Indeed job sorting changed from date to relevance by default, which may affect expected results.","severity":"gotcha","affected_versions":"v1.1.66 and later"},{"fix":"Implement delays between `scrape_jobs` calls, use proxies (via the `proxies` parameter), or enable authenticated scraping where available (e.g., `use_creds=True` for LinkedIn).","message":"Job boards aggressively block IP addresses for too many requests, leading to `response code 429` (rate limiting).","severity":"gotcha","affected_versions":"All versions"},{"fix":"Always specify `country_indeed='USA'` or the appropriate country code when scraping Indeed or Glassdoor.","message":"When searching Indeed or Glassdoor, the `country_indeed` parameter is often required for specific countries to yield correct results.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Consult the `scrape_jobs` documentation to understand parameter incompatibilities for each job board and choose only one of the conflicting filters.","message":"Certain parameters like `hours_old` cannot be combined with other filtering parameters (e.g., `job_type` + `is_remote`) for specific sites like Indeed or LinkedIn.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"search_vec":"'activ':50 'ad':55 'aggreg':27 'autom':73 'bayt':23,71 'board':15 'concurr':35 'data':29,74 'datafram':33 'design':7 'extract':75 'featur':39,57 'frequent':53 'glassdoor':19,69 'googl':21 'improv':59 'includ':16,38 'inde':18,68 'job':10,14,22,28,62,66 'jobspi':1,2 'librari':6,48 'like':40 'limit':46 'linkedin':17,67 'maintain':51 'major':13 'manag':44 'naukri':25,72 'new':56 'panda':32 'post':11 'proxi':41 'python':5 'rate':45 'reliabl':61 'scrape':9,36,63,65 'scraper':60 'support':34,42 'updat':54 'web':64 'ziprecruit':20,70","created_at":"2026-04-16T17:02:47.922938+00:00","updated_at":"2026-04-16T17:02:47.922938+00:00","problems":{"verify_error":"error: unexpected argument '- ' found\n\n  tip: to pass '- ' as a value, use '-- - '\n\nUsage: uv pip install [OPTIONS] <PACKAGE|--requirements <REQUIREMENTS>|--editable <EDITABLE>|--group <GROUP>>\n\nFor more information, try '--help'."},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.1.82","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/cullenwatson/JobSpy","docs":null,"changelog":null,"pypi":"https://pypi.org/project/python-jobspy/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["data","http-networking","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"install_fail","verified_at":"2026-06-28","last_verified":"2026-06-28","next_check":"2026-07-05","install_tag":null}}