Skip to main content
Scrape Upwork job posts

Authorizations

x-scrapeunblocker-key
string
header
required

Your ScrapeUnblocker API key. Apply on every request.

Query Parameters

q
string | null

What to search for, e.g. 'python' or 'logo design'. Leave empty with sort=recency for the newest jobs.

job_type
string | null

hourly or fixed.

experience
string | null

Experience level, comma list of: entry, intermediate, expert.

budget
string | null

Fixed-price budget in USD, comma list of ranges like '100-499', '1000-4999' or '5000-'.

hourly_rate
string | null

Hourly rate in USD, e.g. '25-50' or '40-'.

client_hires
string | null

Client's past hires, comma list of: 0, 1-9, 10-.

workload
string | null

part_time (under 30 hrs/week) or full_time.

duration
string | null

Project length, comma list of: week, month, semester, ongoing (under a month, 1-3 months, 3-6 months, over 6 months).

location
string | null

Client location, comma list of regions or countries as Upwork names them, e.g. 'Europe' or 'United States'.

category
string | null

Job category, comma list of names (Accounting & Consulting, Admin Support, Customer Service, Data Science & Analytics, Design & Creative, Engineering & Architecture, It & Networking, Legal, Sales & Marketing, Translation, Web, Mobile & Software Dev, Writing) or category ids.

contract_to_hire
boolean
default:false

Only contract-to-hire jobs.

sort
string | null

relevance (default with q) or recency (default without q).

start
integer
default:0

0-based position of the first job, 0-4999 (Upwork shows signed-out visitors the first 5000 results); nextStart continues.

max_results
integer
default:50

Jobs to collect, 1-5000. Each results page (up to 50 jobs) is billed one unit.

details
boolean
default:false

Add each job's page: proposals, client stats, qualifications. Up to 100 jobs; one more unit per job page fetched.

Response

JSON with a jobs array.