Upwork Jobs Scraper
Pricing
from $2.00 / 1,000 jobs
Upwork Jobs Scraper
The Upwork Jobs Scraper extracts job listings from Upwork, capturing titles, descriptions, hourly and fixed budgets, skills, experience level and duration, plus optional client spend, hire rate, rating and applicant counts โ ideal for freelance lead generation and rate benchmarking.
Pricing
from $2.00 / 1,000 jobs
Rating
0.0
(0)
Developer
FalconScrape
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
๐ Upwork Jobs Scraper
Easily extract job listings from Upwork. The Upwork Jobs Scraper turns the Upwork job marketplace into clean, structured data you can use for freelance lead generation, rate benchmarking, and hiring-market research โ no login and no manual copy-pasting required.
Search by keyword, or leave the query empty to browse everything currently open. Every job comes back with its budget, required skills, experience level, project duration and posting date. Flip one switch and each job is enriched with client intelligence: total spend, hire rate, rating, industry, location and how many freelancers have already applied.
โจ Features
- ๐ผ Complete Job Data: Title, full description, hourly rate range or fixed budget, experience level, project duration, expected workload, required skills and posting date.
- ๐ Keyword Search: Pass any number of search terms โ
python developer,shopify,logo designโ and get every matching open job. - ๐ Browse Everything: Leave the search empty to sweep the whole public job feed instead of a single niche.
- ๐ข Client Intelligence (optional): Total amount spent, jobs posted, hire rate, average rating, hours billed, company industry and size, city and timezone.
- ๐ Competition Signals (optional): Number of applicants, freelancers already hired, interview invitations sent and the client's last activity โ so you can spot fresh, low-competition jobs before everyone else.
- ๐ธ Pay Only For What You Use: Cheap per-listing pricing, with the expensive client lookups billed separately and switched off by default.
๐ ๏ธ How It Works
- Enter Search Queries โ Add one or more keywords, or leave the field empty to browse all open jobs.
- Set a Limit โ Choose how many jobs you want (defaults to 50).
- Optionally Enable Client Details โ Turn on Scrape client details for client spend, ratings and applicant counts.
- Run the Scraper โ Start the run and download your results as JSON, CSV, Excel or HTML.
๐ฅ Input
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["python developer"] | Keywords to search for. Leave empty to browse all open jobs. |
maxItems | integer | 50 | Maximum number of jobs to scrape across all queries. |
scrapeJobDetails | boolean | false | Also collect client intelligence and applicant counts for each job. |
{"searchQueries": ["python developer", "data engineer"],"maxItems": 100,"scrapeJobDetails": false}
๐ Sample Output Data
The scraper provides structured JSON output. Example of a job listing:
[{"id": "2081794040827272124","ciphertext": "~022081794040827272124","title": "Data Tracking and Reporting System - Python Dashboard Developer needed","description": "I work as a project manager for a small group - part time. This is a group of Contract Specialists that complete a number of contract actions on a daily basis...","jobType": "Hourly","hourlyRateMin": 10,"hourlyRateMax": 15,"fixedBudget": null,"currency": "USD","experienceLevel": "Intermediate","duration": "Less than 1 month","workload": "Part time","skills": ["Python", "Database", "API", "Web Design", "Django"],"isPremium": false,"publishedAt": "2026-07-27T20:30:56.280Z","createdAt": "2026-07-27T17:29:12.373Z","renewedAt": null,"searchQuery": "python developer","url": "https://www.upwork.com/jobs/Data-Tracking-and-Reporting-System-Python-Dashboard-Developer-needed_~022081794040827272124/"}]
With Scrape client details enabled, each job additionally carries:
{"clientCountry": "United States","clientCity": "Hackettstown","clientTimezone": "America/Indiana/Knox (UTC-05:00)","clientPaymentVerified": true,"clientTotalSpent": 57.24,"clientTotalJobsPosted": 1,"clientActiveJobs": 1,"clientTotalHires": 1,"clientTotalHours": 2,"clientRating": 0,"clientTotalReviews": 0,"clientIndustry": "Supply Chain & Logistics","clientCompanySize": 1,"totalApplicants": 16,"totalHired": 1,"totalInterviewing": 0,"invitationsSent": 2,"lastClientActivity": "2026-08-04T22:37:51.255Z","occupation": "Coding Tutoring"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
๐ Output Fields
| Field | Description |
|---|---|
id / ciphertext | Unique Upwork job identifiers |
title | Job title |
description | Full job description |
url | Direct link to the job on Upwork |
jobType | Hourly or Fixed price |
hourlyRateMin / hourlyRateMax | Client's hourly budget range |
fixedBudget | Fixed-price budget |
experienceLevel | Entry level, Intermediate or Expert |
duration | Expected project length |
workload | Part time, Full time, As needed or Not sure |
skills | Skills requested on the posting |
publishedAt / createdAt / renewedAt | Posting timestamps |
clientTotalSpent | Lifetime client spend on Upwork * |
clientTotalJobsPosted / clientTotalHires | Client hiring history * |
clientRating / clientTotalReviews | Client feedback score * |
clientCountry / clientCity / clientTimezone | Client location * |
clientIndustry / clientCompanySize | Client company profile * |
totalApplicants / totalHired / totalInterviewing | Current competition on the job * |
lastClientActivity | When the client was last active * |
* Requires Scrape client details to be enabled.
๐ฐ How Much Does It Cost to Scrape Upwork?
This Actor uses pay-per-event pricing, so you pay for results rather than for runtime.
| Event | Price |
|---|---|
| Actor start | $0.005 per run |
| Job listing | $0.002 per job |
| Job with client details | $0.022 per job |
Examples:
- 1,000 job listings โ $2.01
- 100 jobs with full client details โ $2.21
- 5,000 job listings (daily market sweep) โ $10.01
Jobs are billed at the client-details rate only when those details were actually retrieved โ if a lookup fails, that job is billed as a plain listing.
๐ก Tips
- Start without client details. The listing data alone already contains budgets, skills and experience level, and is roughly 10ร cheaper per job.
- Use several narrow queries instead of one broad one. Upwork returns more distinct jobs across
python,djangoandfastapithan acrosspythonalone. - Schedule a daily run with a modest
maxItemsto build your own historical rate database over time โ Apify's scheduler and integrations (Slack, Google Sheets, webhooks, API) make this a one-time setup. - Deduplicate on
idwhen combining results from multiple queries; the same job can match more than one keyword.
โ FAQ
Do I need an Upwork account? No. The Actor only reads publicly visible job postings.
How fresh are the results? Results reflect what Upwork shows to logged-out visitors at the time of the run. Run the Actor on a schedule to keep your dataset current.
Why did I get fewer jobs than my maxItems limit?
Upwork's public job feed is finite, and narrow keywords may simply have fewer open postings. The log reports how many jobs were available for each query.
Is scraping Upwork legal? This Actor collects only publicly accessible information and does not gather personal data. You are responsible for how you use the extracted data, including compliance with Upwork's terms and applicable laws such as GDPR. If in doubt, seek legal advice.
Something isn't working. Report it on the Issues tab and it will be looked into. Custom solutions and extra fields can be arranged on request.
Start finding better freelance work and better clients with Upwork Jobs Scraper today! ๐