mirror of https://github.com/Bunsly/JobSpy
2.8 KiB
2.8 KiB
JobSpy Scraper
Features
- Scrapes job postings from LinkedIn, Indeed, ZipRecruiter
- Returns jobs with title, location, company, and other data
- JWT authorization
Endpoints
Jobs Endpoint
Endpoint: /api/v1/jobs/
Parameters:
- site_type: str (Required) - Options:
linkedin
,zip_recruiter
,indeed
- search_term: str (Required)
- location: int
- distance: int
- job_type: str - Options:
fulltime
,parttime
,internship
,contract
- is_remote: bool
- results_wanted: int
- easy_apply: bool (Only for LinkedIn)
Example
Response
Schema
JobResponse
- success: bool - Indicates if the request was successful
- error: str - Any error messages, null if no error
- jobs: list[JobPost] - A list of job postings
- total_results: int - Total number of results found
- returned_results: int - Number of results returned in this request
JobPost
- title: str
- company_name: str
- job_url: str
- location: object - (country, city, state, postal_code, address)
- description: str
- job_type: str - Options:
fulltime
,parttime
,internship
,contract
- compensation: object - Contains:
interval
,min_amount
,max_amount
,currency
- date_posted: str
Example
Installation
Python >= 3.10 required
- Clone this repository
- Install the dependencies with
pip install -r requirements.txt
- Run the server with
uvicorn main:app --reload
Usage
Visit http://localhost:8000/docs to see the interactive API documentation.
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