Upwork Jobs Scraper avatar

Upwork Jobs Scraper

Pricing

from $2.00 / 1,000 jobs

Go to Apify Store
Upwork Jobs Scraper

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

FalconScrape

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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

  1. Enter Search Queries โ€“ Add one or more keywords, or leave the field empty to browse all open jobs.
  2. Set a Limit โ€“ Choose how many jobs you want (defaults to 50).
  3. Optionally Enable Client Details โ€“ Turn on Scrape client details for client spend, ratings and applicant counts.
  4. Run the Scraper โ€“ Start the run and download your results as JSON, CSV, Excel or HTML.

๐Ÿ“ฅ Input

FieldTypeDefaultDescription
searchQueriesarray["python developer"]Keywords to search for. Leave empty to browse all open jobs.
maxItemsinteger50Maximum number of jobs to scrape across all queries.
scrapeJobDetailsbooleanfalseAlso 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

FieldDescription
id / ciphertextUnique Upwork job identifiers
titleJob title
descriptionFull job description
urlDirect link to the job on Upwork
jobTypeHourly or Fixed price
hourlyRateMin / hourlyRateMaxClient's hourly budget range
fixedBudgetFixed-price budget
experienceLevelEntry level, Intermediate or Expert
durationExpected project length
workloadPart time, Full time, As needed or Not sure
skillsSkills requested on the posting
publishedAt / createdAt / renewedAtPosting timestamps
clientTotalSpentLifetime client spend on Upwork *
clientTotalJobsPosted / clientTotalHiresClient hiring history *
clientRating / clientTotalReviewsClient feedback score *
clientCountry / clientCity / clientTimezoneClient location *
clientIndustry / clientCompanySizeClient company profile *
totalApplicants / totalHired / totalInterviewingCurrent competition on the job *
lastClientActivityWhen 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.

EventPrice
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, django and fastapi than across python alone.
  • Schedule a daily run with a modest maxItems to 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 id when 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! ๐Ÿš€