Search jobs (v1)
Returns one page of 50 Upwork jobs with the full description, skills, job type, experience level, budget, duration and posting time, plus Upwork's counts by filter. Upwork serves the first 5,050 jobs of a search.
1 credit / requestBilled only on success
Authorization
ApiKeyAuth x-api-key<token>
In: header
Query Parameters
query*string
Keywords, a skill or a job title, such as python scraping or shopify developer.
Length
1 <= length <= 200page?integer
One-based page of 50 jobs. Upwork serves at most 5,050 jobs for one search, which is page 101.
Range
1 <= value <= 101Default
1sort?string
newest (the default, as on upwork.com), relevance, client_spend (clients who have spent most first) or client_rating.
Default
"newest"Value in
- "newest"
- "relevance"
- "client_spend"
- "client_rating"
job_type?string
hourly or fixed price jobs only; any keeps both.
Default
"any"Value in
- "any"
- "hourly"
- "fixed"
experience_level?string
The experience level the client asks for: entry, intermediate or expert.
Default
"any"Value in
- "any"
- "entry"
- "intermediate"
- "expert"
curl -X GET "https://example.com/v1/upwork/search?query=python+scraping" \ -H "x-api-key: YOUR_API_KEY"{ "data": { "query": "python scraping", "page": 1, "sort": "newest", "job_type": "any", "experience_level": "any", "total": 300, "page_size": 50, "max_page": 6, "has_more": true, "count": 0, "url": "https://www.upwork.com/nx/search/jobs/?q=python+scraping&sort=recency", "stop_reason": null, "facets": { "job_type": { "hourly": 153, "fixed": 147 } }, "results": [ { "job_id": "~022118388163193053698", "title": "Python Data Engineer", "url": "https://www.upwork.com/jobs/~022118388163193053698", "description": "string", "skills": [ "Python", "Data Scraping" ], "job_type": "hourly", "experience_level": "intermediate", "budget": { "fixed_price": 500, "hourly_min": 45, "hourly_max": 75, "currency": "USD" }, "workload": "part_time", "duration": "1 to 3 months", "duration_weeks": 9, "posted_at": "2026-11-05T17:01:49Z" } ] }, "details": { "reason": "string", "message": "string" }}