Jobs API in Python: pip install to live postings in 5 minutes
The official jobspipe package on PyPI, a working search in eight lines, and the filters that matter - salary, remote, recency, country - plus free previews for sizing queries before you spend credits.
Dvir Atias
Founder, JobsPipe
The official jobspipe package is on PyPI. This is the whole quickstart: install, export a key, eight lines to live postings.
pip install jobspipe
export JOBSPIPE_API_KEY=jp_live_... # free at jobspipe.dev/signupfrom jobspipe import Jobspipe
client = Jobspipe() # reads JOBSPIPE_API_KEY
results = client.jobs.search(
description_or=["python", "django"],
job_country_code_or=["US"],
remote=True,
posted_at_max_age_days=7,
limit=25,
include_total_results=True,
)
print(f"{results.metadata.total_results} matches")
for job in results.data:
print(f"{job.job_title} @ {job.company}")The filters that matter
job_title_or/job_title_not- match or exclude on title;description_orsearches body text for skills.posted_at_max_age_days- recency window. Combined with a daily run this is a new-jobs feed in four lines.remote,job_country_code_or,job_seniority_or- the workforce slicers.company_name_or- watch specific accounts, the core of hiring-signal monitoring.
Every response row carries parsed salary ranges where present, ISCO-08 occupation codes, and company enrichment - the full shape is in the search API guide.
Size before you spend
Billing is one credit per job returned - an empty result costs nothing. Before pulling a big result set, pass blur_company_data=True: the response returns masked employer fields but real titles, locations, salaries, and the full match count, at zero credit cost. Check results.metadata.total_results, tune the filters, then run the unblurred query.
Paginate with the cursor
Use results.metadata.next_cursor and pass it back as cursor rather than using offsets - keyset pagination stays stable while new postings land, so you never pay twice for a row that shifted pages. If your consumer is an agent rather than a script, the same corpus is queryable over MCP - see the MCP server post.
pip install jobspipe - 1,000 jobs/month free, key in 30 seconds.
Get a free API keyFrequently Asked Questions
How do I use a jobs API in Python?
pip install jobspipe, export JOBSPIPE_API_KEY, then Jobspipe().jobs.search() with the filters you need - description_or for skills, posted_at_max_age_days for recency, remote and job_country_code_or for location. The response carries parsed salary ranges, occupation codes, and company enrichment on each row, with total_results available via include_total_results.
Is there a free jobs API for Python?
JobsPipe's free tier is 1,000 jobs per month with no card, and the metering is per job returned rather than per request - an empty search costs nothing, and blur_company_data=True previews return real titles, locations, salaries and match counts at zero credit cost so you can tune filters before spending.
How do I paginate job results in Python?
Pass results.metadata.next_cursor back as the cursor parameter. Keyset pagination stays stable while new postings are ingested, unlike offset paging where rows shift between pages and you can be charged twice for the same job. Loop until next_cursor is null.

