Upwork Jobs Scraper - $0.80 / 1000 Jobs
Pricing
from $0.80 / 1,000 jobs
Upwork Jobs Scraper - $0.80 / 1000 Jobs
Scrape Upwork job posts as clean JSON: title, full description, budget or hourly range, experience level, skills and post time for any search or the newest-jobs feed, with Upwork's filters. Optional proposals and client stats. No login. $0.80 per 1000 jobs.
Pricing
from $0.80 / 1,000 jobs
Rating
0.0
(0)
Developer
Scrapeunblocker
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Upwork Jobs Scraper
Scrape Upwork job posts as clean, structured JSON - the title, the full description, when the job was published, whether it is hourly or fixed price with the hourly range or budget, the experience level, project length, workload and the skills the client asks for. Search by keyword with Upwork's own filters, or read the newest jobs feed. Turn on job page details to also get the number of proposals, interviews and hires, the qualifications and the client's country, city, payment verification, rating, reviews and total spent. No Upwork account, API key or proxies to set up.
Features
- Any keyword - the jobs Upwork lists for it, in Upwork's order (
position), up to 5000 per search. - Newest jobs feed - every new job, newest first, with no keyword (enter
*). - Upwork's filters - job type, experience level, fixed-price budget, hourly rate, client's past hires, hours per week, project length, client location, category and contract-to-hire.
- Numbers you can compute with -
hourlyMin,hourlyMaxandbudgetin USD as numbers, dates in ISO 8601 UTC. - Full descriptions - the whole job text, not a snippet.
- Job page details - proposals, interviews, invites, hires, positions to hire, the client's last activity, required qualifications (countries, Job Success Score, English level) and the client's stats (never the client's name).
- Deduplicated - a job that moves between pages while you read is returned once per search.
Use cases
- Job alerts - run the newest jobs feed or your keywords on a schedule and act on new posts first.
- Lead generation - find clients with verified payment, a high rating and a big total spend.
- Market research - which skills are in demand, at which rates and budgets.
- Pricing your services - compare hourly ranges and budgets for your skill and experience level.
- Competition checks - see how many proposals a job already has before you apply.
Input
| Field | Type | Default | Description |
|---|---|---|---|
searches | array | ["python"] | Keywords (one search each); * (or an empty string) = newest jobs feed. |
maxResultsPerSearch | integer | 50 | Jobs per search (1-5000). |
includeDetails | boolean | false | Add each job's page: proposals and client stats. |
jobType | string | any | hourly or fixed. |
experienceLevel | array | all | entry, intermediate, expert. |
fixedPriceMin / fixedPriceMax | integer | - | Fixed-price budget range in USD. |
hourlyRateMin / hourlyRateMax | integer | - | Hourly rate range in USD. |
clientHires | array | all | Client's past hires: 0, 1-9, 10-. |
workload | string | any | part_time (under 30 hrs/week) or full_time. |
projectLength | array | all | week, month, semester (3-6 months), ongoing (over 6 months). |
clientLocations | array | all | Client regions or countries as Upwork names them, e.g. Europe, United States. |
categories | array | all | Upwork categories (pick from the list). |
contractToHire | boolean | false | Only contract-to-hire jobs. |
sort | string | Upwork's | relevance or recency (default: relevance for a keyword, newest for the feed). |
concurrency | integer | 2 | Searches run at the same time (1-5). |
Example input
{"searches": ["python", "*"],"maxResultsPerSearch": 200,"jobType": "hourly","experienceLevel": ["intermediate", "expert"],"hourlyRateMin": 40,"sort": "recency"}
Output
One dataset item per job:
{"id": "2112181236302511171","ciphertext": "~022112181236302511171","url": "https://www.upwork.com/jobs/~022112181236302511171","title": "Python Expert","description": "FastAPI Qdrant Multi Tenant XTTS Voice Clone SadTalker Avatar Docker\n\nDescription:\n\nBuild secure multi tenant AI Avatar backend in FastAPI plus Docker ...","publishedAt": "2026-10-19T14:16:56.680Z","createdAt": "2026-10-19T13:57:04.268Z","renewedAt": null,"jobType": "fixed","hourlyMin": null,"hourlyMax": null,"budget": 150,"weeklyRetainerBudget": null,"currency": "USD","experienceLevel": "expert","duration": "1 to 3 months","workload": null,"skills": ["Python", "Python Script", "API"],"premium": false,"enterprise": null,"position": 1,"query": "python","sort": "relevance"}
With includeDetails on, each job also gets (shortened):
{"title": "Full Stack Developer for Node.js and React.js","jobType": "fixed","budget": 700,"privateListing": false,"category": "Web Development","categoryGroup": "Web, Mobile & Software Dev","occupation": "Full Stack Development","proposals": 16,"interviewing": 0,"invitesSent": 0,"hired": 0,"positionsToHire": 4,"lastClientActivity": "2026-10-15T15:48:40.742Z","qualifications": {"countries": ["India"],"minJobSuccessScore": 90,"englishLevel": 3,"risingTalent": true,"portfolioRequired": false},"client": {"country": "India","city": "Pune","timezone": "Europe/London (UTC+01:00)","paymentVerified": true,"rating": 4.99,"reviews": 12,"totalSpent": 7432.47,"hires": 24,"totalAssignments": 28,"activeAssignments": 3,"hoursBilled": 415.5,"memberSince": "2021-04-10T00:00:00.000Z","isTopClient": false,"isEnterprise": false}}
A private listing (its page is shown to signed-in Upwork members only) keeps the search fields and gets "privateListing": true; a job whose page could not be read gets "detailsError": "unavailable".
The Jobs view shows one row per job with the title, date, type, rates or budget, experience level, length, workload and skills; the Job page details view shows the proposals and the client's stats. Searches that return no jobs or cannot be run go to the ERRORS record in the run's key-value store, with the reason. They are not billed.
Pricing
$0.80 per 1000 jobs (pay per result) - one dataset item is one job. With includeDetails on, every job that comes back with its job page details is also charged the job-details event at $0.80 per 1000 ($1.60 per 1000 jobs with details in all); private listings and pages that could not be read are not. Failed searches are free.
Notes
- Upwork shows signed-out visitors the first 5000 results of a search; split a broad search with filters or narrower keywords to go further.
- The client's stats and the number of proposals are on each job's page, so they come only with
includeDetails(one more request per job, a slower run). - The newest jobs feed (
*) lists every new job; withsortset torecency, a renewed job is placed by its renewal time. - Client names are never returned.
- Powered by ScrapeUnblocker.