---
title: "Search Upwork job postings"
method: GET
path: "/upwork/search"
tags: ["Upwork"]
---

# Search Upwork job postings

`GET /upwork/search`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/upwork/search`
- Auth: API key in header `x-api-key`

Searches Upwork's public job listings by free-text keyword, returning job summaries (title, budget, experience level, duration, posted date, description snippet, skill tags).

## Query parameters

- `q` string, required
- `page` integer

## Headers

- `x-api-key` string, required

## Response `200`

OK

- UpworkSearchResponseDoc
  - `code` integer
  - `data` UpworkSearchResponse
    - `jobs` UpworkJobSummary[]
      - `budget_text` string
      - `budget_type` string: "hourly" or "fixed"
      - `description` string
      - `duration` string
      - `experience_level` string
      - `id` string: ID is Upwork's own opaque job identifier (the digits after "~" in the job's URL), suitable for Service.Job.
      - `posted_at` string
      - `skills` string[]
      - `title` string
      - `url` string
    - `page` integer
    - `query` string
  - `msg` string

## Other responses

- `400`: Bad Request
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/028417aa35bb?raw)
