One job ad on Pracuj.pl: title, employer, workplaces with addresses and coordinates, contract types each with its salary range, position levels, work modes and schedules, technologies, responsibilities, requirements, benefits, recruitment stages and the other text sections, categories, publication and expiry dates and the apply links. Give id or url, or q (plus any search filter) to open the newest matching ad. Recruiters' phone numbers are never returned.
Every response includes credits_used: the credits this call cost.
Parameters
name
type
description
id
string
Job id (the number after ,oferta, in the URL).
url
string
Job URL on pracuj.pl.
q
string
Keywords (job title, skill or company). Example: python
location
string
City or place (e.g. warszawa, krakow, wroclaw).
radius
0 | 10 | 20 | 30 | 50 | 100
Distance around location in km.
category
string
Category ids, comma separated (see facets.categories; e.g. 5016 IT - software development).
level
string
Position level ids, comma separated (1 trainee, 3 assistant, 17 junior, 4 mid, 18 senior, 19 expert, 5 team lead, 20 manager, 6 director; see facets.position_levels).
contract
string
Contract type ids, comma separated (0 employment contract, 1 contract for specific work, 2 mandate contract, 3 B2B, 4 replacement, 5 agency, 6 temporary, 7 internship).
schedule
string
Work schedule ids, comma separated (0 full time, 1 part time, 2 additional or temporary).
mode
string
Work modes, comma separated: full-office, hybrid, home-office (remote), mobile.
region
string
Region (voivodeship) ids, comma separated (see facets.regions; 7 mazowieckie, 6 malopolskie).
posted
1 | 3 | 7 | 14 | 30
Only ads published in the last N days.
salary_min
string
Minimum monthly salary in PLN (1 = only ads that show a salary).
company_id
string
Only this employer's ads (company_id from results).
import os, requests
res = requests.get(
"https://api.api.sh/pracuj/v1/job",
params={},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json()
const url = new URL("https://api.api.sh/pracuj/v1/job");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();
Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).
The fastest way to see the full response is the playground: it runs this endpoint with your account and shows the exact JSON.