mirror of https://github.com/Bunsly/JobSpy
glassdoorindeedinternshipjob-scraperjob-searchjobs-scraperjobs-searchjobsearchjobseekerlinkedinlinkedin-scraperremote-jobremote-jobsremote-workziprecruiter
369b1cffd6 | ||
---|---|---|
.vscode | ||
api | ||
postman | ||
.gitignore | ||
README.md | ||
main.py | ||
requirements.txt | ||
settings.py |
README.md
JobSpy AIO Scraper
Features
- Scrapes job postings from LinkedIn, Indeed & ZipRecruiter simultaneously
- Returns jobs with title, location, company, description & other data
- Optional JWT authorization
API
POST /api/v1/jobs/
Request Schema
Example
{ "site_type": ["linkedin", "indeed"], "search_term": "software engineer", "location": "austin, tx", "distance": 10, "job_type": "fulltime", "results_wanted": 10 }
Parameters:
Required
- site_type: List[str] -
linkedin
,zip_recruiter
,indeed
- search_term: str
Optional
- location: int
- distance: int
- job_type: str -
fulltime
,parttime
,internship
,contract
- is_remote: bool
- results_wanted: int (per
site_type
) - easy_apply: bool (only for
linkedIn
)
Response Schema
Example
JobResponse
-
success: bool - Indicates if the request was successful
-
error: str
-
jobs: list[JobPost]
-
JobPost
- title: str
- company_name: str
- job_url: str
- location: object - (country, city, state, postal_code, address)
- description: str
- job_type: str -
fulltime
,parttime
,internship
,contract
- compensation: object - Contains:
interval
,min_amount
,max_amount
,currency
- date_posted: str
-
-
total_results: int
-
returned_results: int
Installation
Python >= 3.10 required
- Clone this repository
git clone https://github.com/cullenwatson/jobspy
- Install the dependencies with
pip install -r requirements.txt
- Run the server with
uvicorn main:app --reload
Usage
To see the interactive API documentation, visit localhost:8000/docs.
For Postman integration:
- Import the Postman collection and environment JSON files from the
/postman/
folder.
FAQ
I'm having issues with my queries. What should I do?
Broadening your filters can often help. Additionally, try reducing the number of results_wanted
.
If issues still persist, feel free to submit an issue.
How to enable auth?
Change AUTH_REQUIRED
in /settings.py
to True
The auth uses supabase. Create a project with a users
table and disable RLS.
Add these three environment variables:
SUPABASE_URL
: go to project settings -> API -> Project URLSUPABASE_KEY
: go to project settings -> API -> service_role secretJWT_SECRET_KEY
- typeopenssl rand -hex 32
in terminal to create a 32 byte secret key
Use these endpoints to register and get an access token: