ToolzerHub Docs

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
GET
/v1/upwork/search

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.

Length1 <= length <= 200
page?integer

One-based page of 50 jobs. Upwork serves at most 5,050 jobs for one search, which is page 101.

Range1 <= value <= 101
Default1
sort?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"  }}