# Upwork — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access comprehensive details about Upwork job postings, including descriptions, budgets, required skills, client information, and engagement metrics to help you find and evaluate opportunities. Monitor job activity and client profiles to make informed decisions about which projects to pursue.

**Category:** Jobs | **Website:** [upwork.com/](https://upwork.com/) | **Docs:** [parse.bot/marketplace/bab0726c-3130-4f0d-a4fa-8a8a5f22c072/upwork-com-api](https://parse.bot/marketplace/bab0726c-3130-4f0d-a4fa-8a8a5f22c072/upwork-com-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-upwork-com-api-bab0726c/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### search_freelancers

Full-text search over Upwork's freelancer talent pool. Returns paginated results with detailed profile information including skills, hourly rate, job success score, location, and earnings. Pagination via integer page counter; each page returns up to per_page results. The query matches freelancer titles, descriptions, and skills.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number (1-based) |
| `per_page` | integer | No | Number of results per page (1-50) |
| `query` | string | No | Search keyword(s) to find freelancers by title, description, or skills |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-upwork-com-api-bab0726c/search_freelancers \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","per_page":"<integer>","query":"<string>"}'
```

### search_jobs

Full-text search over Upwork job postings. Returns paginated results with job title, description snippet, budget info, required skills, experience level, duration, and posting date. Pagination via integer page counter; each page returns up to per_page results (max 50). Results are parsed from Upwork's server-rendered search page and may be subject to intermittent Cloudflare challenges.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number (1-based) |
| `per_page` | integer | No | Number of results per page (1-50) |
| `query` | string | No | Search keyword(s) to find job postings by title, description, or skills |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-upwork-com-api-bab0726c/search_jobs \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","per_page":"<integer>","query":"<string>"}'
```
