Upwork Jobs Scraper
Pricing
from $0.14 / 1,000 results
Upwork Jobs Scraper
$0.2/1K jobs | Scrape Upwork job listings with advanced filters for skills, budgets, clients, and project requirements.
Pricing
from $0.14 / 1,000 results
Rating
0.0
(0)
Developer
Vali G
Maintained by CommunityActor stats
4
Bookmarked
120
Total users
46
Monthly active users
14 days ago
Last modified
Categories
Features
Share

An Apify Actor for searching Upwork job listings using keywords and optional job, client, project, and location filters. The Actor's input lets you narrow results by category, experience level, contract type, client hiring history, project length, workload, and more.
Features
- Search job titles and descriptions with keywords.
- Sort results by relevance or recency.
- Filter by one or more job categories and subcategories.
- Filter by experience level and hourly or fixed-price contract type.
- Narrow results using client hiring history, location, and time zone.
- Filter by project length, weekly workload, and contract-to-hire status.
- Set a maximum result count from 1 to 5,000.
Input
The Actor accepts a JSON object. Only keywords is required; all other properties are optional.
Example input
{"keywords": "Software Developer","sort": "recency","category2_uid": ["531770282580668418"],"contractor_tier": ["2", "3"],"t": ["0", "1"],"client_hires": ["1-9", "10-"],"location": ["Canada", "United States"],"timezone": ["America/New_York"],"duration_v3": ["month", "semester"],"workload": ["as_needed"],"contract_to_hire": false,"limit": 100}
Input properties
| Property | Type | Required | Default / allowed values | Description |
|---|---|---|---|---|
keywords | string | Yes | Default: Software Developer | Keywords to search in job titles and descriptions. |
sort | string | No | relevance or recency; default: relevance | Sort search results by relevance or recency. In the Apify input UI, these are displayed as Relevance and Newest. |
category2_uid | array of strings | No | Category UIDs listed below | Select one or more job categories. |
subcategory2_uid | array of strings | No | String values | Select one or more subcategories by UID. The schema does not enumerate the available subcategory UIDs. |
contractor_tier | array of strings | No | 1, 2, 3 | Experience level: Entry Level, Intermediate, or Expert. |
t | array of strings | No | 0, 1 | Job type: Hourly or Fixed-Price. |
client_hires | array of strings | No | 0, 1-9, 10- | Client hiring history: No hires, 1 to 9 hires, or 10+ hires. |
location | array of strings | No | Free-form strings; examples: Canada, United States | Filter by one or more client locations. |
timezone | array of strings | No | Free-form strings; example: America/New_York | Filter by one or more client time zones. |
duration_v3 | array of strings | No | week, month, semester, ongoing | Project length: Less than one month, 1 to 3 months, 3 to 6 months, or More than 6 months. |
workload | array of strings | No | as_needed, full_time | Hours per week: Less than 30 hrs/week or More than 30 hrs/week. |
contract_to_hire | boolean | No | Boolean | When true, show only contract-to-hire roles. |
limit | integer | No | Default: 100; minimum: 1; maximum: 5000 | Maximum number of results. |
Category UIDs
Pass the UID value(s) in category2_uid, not the display label.
| Category | UID |
|---|---|
| Accounting & Consulting | 531770282584862721 |
| Admin Support | 531770282580668416 |
| Customer Service | 531770282580668417 |
| Data Science & Analytics | 531770282580668420 |
| Design & Creative | 531770282580668421 |
| Engineering & Architecture | 531770282584862722 |
| IT & Networking | 531770282580668419 |
| Legal | 531770282584862723 |
| Sales & Marketing | 531770282580668422 |
| Translation | 531770282584862720 |
| Web, Mobile & Software Dev | 531770282580668418 |
| Writing | 531770282580668423 |
Experience-level values
| Value | Display label |
|---|---|
1 | Entry Level |
2 | Intermediate |
3 | Expert |
Job-type values
| Value | Display label |
|---|---|
0 | Hourly |
1 | Fixed-Price |
Client-hire values
| Value | Display label |
|---|---|
0 | No hires |
1-9 | 1 to 9 hires |
10- | 10+ hires |
Project-length values
| Value | Display label |
|---|---|
week | Less than one month |
month | 1 to 3 months |
semester | 3 to 6 months |
ongoing | More than 6 months |
Workload values
| Value | Display label |
|---|---|
as_needed | Less than 30 hrs/week |
full_time | More than 30 hrs/week |
Output
The sample output is a job record. The fields below describe the structure shown in the supplied example. Some values in that example are null; values may depend on the job listing.
Sample output item
{"id": "2116258603404893639","cipherText": "~022116258603404893639","url": "https://www.upwork.com/jobs/~022116258603404893639","title": "Experienced Software Development Company / Senior Full-Stack Developer","jobType": "HOURLY","weeklyRetainerBudget": null,"hourlyBudgetMax": "47.0","hourlyBudgetMin": "25.0","hourlyEngagementType": "FULL_TIME","contractorTier": "ExpertLevel","sourcingTimestamp": null,"createTime": "2026-10-30T19:59:04.405Z","publishTime": "2026-10-30T19:59:09.694Z","enterpriseJob": false,"personsToHire": 1,"premium": false,"totalApplicants": 87,"hourlyEngagementDuration": {"rid": 2,"label": "3 to 6 months","weeks": 18,"mtime": "2014-06-04T17:59:10.123Z","ctime": "2014-06-04T17:59:10.123Z"},"fixedPriceAmount": null,"fixedPriceEngagementDuration": null,"skills": [{"uid": "1110580482322976768","prefLabel": "API","highlighted": false},{"uid": "996364628025274385","prefLabel": "PHP","highlighted": false}],"client": {"paymentVerificationStatus": null,"country": "Netherlands","totalReviews": 0,"totalFeedback": 0,"hasFinancialPrivacy": false,"totalSpent": {"isoCurrencyCode": "USD","amount": "0.0"}},"description": "Full job description text..."}
Output fields
| Field | Description |
|---|---|
id | Job identifier. |
cipherText | Encoded job identifier value provided in the sample. |
url | Link to the Upwork job listing. |
title | Job title. |
jobType | Job contract type, such as HOURLY in the sample. |
weeklyRetainerBudget | Weekly retainer budget, or null in the sample. |
hourlyBudgetMin, hourlyBudgetMax | Minimum and maximum hourly budget, represented as strings in the sample. |
hourlyEngagementType | Hourly workload classification, such as FULL_TIME. |
contractorTier | Experience level, such as ExpertLevel. |
sourcingTimestamp | Sourcing timestamp; null in the sample. |
createTime, publishTime | Job creation and publication timestamps. |
enterpriseJob | Whether the listing is marked as an enterprise job. |
personsToHire | Number of people the client intends to hire. |
premium | Whether the listing is marked as premium. |
totalApplicants | Applicant count shown in the sample. |
hourlyEngagementDuration | Hourly project-duration details, including rid, label, weeks, mtime, and ctime. |
fixedPriceAmount | Fixed-price budget amount; null in the hourly sample. |
fixedPriceEngagementDuration | Fixed-price project-duration details; null in the sample. |
skills | Array of skills. Each sample skill includes a uid, prefLabel, and highlighted flag. |
client | Client details, including payment-verification status, country, review and feedback counts, financial-privacy flag, and total spending. |
client.totalSpent | Client spending object with currency code (isoCurrencyCode) and amount. |
description | Full job description text. |
Running the Actor
- Open Upwork Jobs Scraper in Apify Console.
- Enter the required
keywordsvalue. - Optionally configure sorting and filters.
- Set
limitto the maximum number of results you want (between 1 and 5,000). - Run the Actor and inspect the resulting job records in the run's dataset.
Notes
keywordsis the only required input property.- Array-valued filters accept multiple values.
- Use the category UID values above for
category2_uid. subcategory2_uid,location, andtimezoneaccept strings; the supplied schema does not define a fixed list of valid values for them.- The sample shows an hourly job. Fixed-price-related fields are also present in the sample structure but are
nullfor that listing. - The supplied schema and sample do not specify pagination behavior, scraping speed, proxy requirements, authentication requirements, or guarantees about result availability.