querystringrequired
Keywords to search Upwork jobs for (e.g. react developer).
https://api.sandbase.ai/v1/api/upwork/jobsSearch Upwork job postings by keyword, with up to 25 fresh listings per request.
Your output will appear here
Complete the inputs, then click Run.
Search Upwork job postings by keyword, with up to 25 fresh listings per request.
curl -X POST "https://api.sandbase.ai/v1/run" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "upwork/jobs", "limit": 10, "query": "web developer", "jobType": "fixed"}'
The result is returned in outputs[0].data. Lookups that find nothing fail with a not-found error.
| Name | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Keywords to search Upwork jobs for (e.g. react developer). |
experienceLevel | string | No | Filter by required experience level. One of: entry, intermediate, expert. |
jobType | string | No | Filter by payment type: fixed-price or hourly jobs. One of: fixed, hourly. |
limit | integer | No | Maximum number of results to return (10-25, default 25). |
location | string | No | Filter by client location - a region, subregion, or country (e.g. United States, Europe). |
paymentVerified | boolean | No | When true, only return jobs from clients with a verified payment method. |
requireFields | array | No | Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example premium or reposted, and it is served only by a source that return |
sort | string | No | Sort order for listings: newest or relevance (e.g. newest). One of: newest, relevance. Default "newest". |
Billed at the actual cost of each call, about $0.007 per request. A call can cost more when the first data source fails and another one answers. Failed calls and lookups that find nothing are not charged.
Start building
Platform API endpoint with unified authentication and usage tracking.
# The quoted heredoc keeps Unicode and shell metacharacters unchanged.
result=$(curl --fail-with-body --silent \
-X POST "https://api.sandbase.ai/v1/api/upwork/jobs" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'SANDBASE_JSON'
{
"sort": "newest",
"limit": 10,
"query": "web developer",
"jobType": "fixed"
}
SANDBASE_JSON
)
printf '%s\n' "$result"Set your SandBase API key in your server environment. Requests use Bearer authentication.
export SANDBASE_API_KEY="YOUR_API_KEY"Keep your key on the server. Do not expose it in browser code.
querystringrequiredKeywords to search Upwork jobs for (e.g. react developer).
sortstringSort order for listings: newest or relevance (e.g. newest).
Default: "newest"
Possible values: newest, relevance
limitintegerMaximum number of results to return (10-25, default 25).
jobTypestringFilter by payment type: fixed-price or hourly jobs.
Possible values: fixed, hourly
locationstringFilter by client location - a region, subregion, or country (e.g. United States, Europe).
requireFieldsarrayOptional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `premium` or `reposted`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a job that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
experienceLevelstringFilter by required experience level.
Possible values: entry, intermediate, expert
paymentVerifiedbooleanWhen true, only return jobs from clients with a verified payment method.
Saved example response for this API; no live request is made when viewing it.
No saved response has been published. Run the API in Playground to inspect its response.
Explore more
| API | Price | Response |
|---|---|---|
Upwork JobsThis API Upwork | From $0.007 per call | JSON |
Questions
Send a POST request to https://api.sandbase.ai/v1/api/upwork/jobs with your SandBase API key in the Authorization header (Bearer) and the parameters as a JSON body. You can also try it in the Playground on this page without writing code.
From $0.007 per call, billed from your SandBase balance. You are only charged for calls you make; there is no subscription.
Required: query (string). Optional: sort (one of newest, relevance), limit (integer), jobType (one of fixed, hourly), location (string), requireFields (array) and experienceLevel (one of entry, intermediate, expert) and 1 more. The Parameters table and the Playground on this page list every field.
A JSON response returned in the same HTTP request (synchronous).
No. Upwork Jobs runs through SandBase, so one SandBase API key covers this endpoint and every other API and model in the catalog. You do not need to apply for Upwork API access separately.