Upwork Jobs Scraper — Freelance Job Listings & Budgets
Pricing
from $0.001 / job scraped
Upwork Jobs Scraper — Freelance Job Listings & Budgets
Scrape Upwork job listings by keyword: title, description, hourly range or fixed budget, experience level, duration, workload, skills and posting date. Filter by type, level and location. Export to JSON, CSV or Excel.
Pricing
from $0.001 / job scraped
Rating
0.0
(0)
Developer
Hipersoft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Upwork Jobs Scraper extracts public freelance job listings from Upwork by keyword: title, description, hourly range or fixed budget, experience level, project length, workload, skills and posting date. Filter by job type, level, length and client location, then export to JSON, CSV or Excel.

What does Upwork Jobs Scraper do?
It runs your Upwork job searches and returns one clean row per job. Run several searches at once; a job found by two searches is delivered and charged once. A test run collected 1,168 unique jobs across five searches in about two minutes.
Client details aren't included. This actor returns the job listing itself, not client spend, reviews or payment verification.
What data can you scrape from Upwork?
| Data | Fields |
|---|---|
| Job | jobId, title, description, url, publishedAt |
| Pay | jobType, hourlyMin, hourlyMax, fixedBudget |
| Requirements | experienceLevel, skills, duration, workload |
| Context | searchQuery, collectedAt |
Use cases
- Freelancers and agencies: catch new jobs that match your skills, on a schedule.
- Rate research: see what clients offer for a skill.
- Skill demand: track which tools and skills clients ask for.
- Lead generation: spot project demand in your niche.
- Job alerts: send new listings to Slack, Sheets or email with integrations.
How to scrape Upwork jobs
- Open Upwork Jobs Scraper.
- Add your job searches.
- Pick any filters.
- Click Start.
- Export to JSON, CSV, Excel or XML.
Input
{"queries": ["react developer"],"sort": "recency","jobType": "0","experienceLevel": ["2", "3"],"workload": "full_time","minHourlyRate": 30,"maxAgeHours": 720,"maxResultsPerSearch": 40}
| Field | Description |
|---|---|
queries | What to search for. |
maxResultsPerSearch | Jobs per search (default 100). |
sort | recency (newest) or relevance. |
jobType | any, 0 (hourly) or 1 (fixed price). |
experienceLevel | 1 entry, 2 intermediate, 3 expert. |
duration | week, month, semester or ongoing. |
workload | as_needed, part_time or full_time. |
locations | Client regions or countries. |
clientHires | 0, 1-9 or 10-. |
minFixedBudget | Drop fixed-price jobs below this (USD). |
minHourlyRate | Drop hourly jobs whose top rate is below this (USD). |
maxAgeHours | Only jobs posted in the last N hours. |
Output
A real row from a test run, with the description shortened.

{"jobId": "2118006378163258089","title": "Seeking a Full-Stack Developer to Develop an AI-Based SaaS Product","url": "https://www.upwork.com/jobs/~022118006378163258089","jobType": "hourly","hourlyMin": 56,"hourlyMax": 68,"fixedBudget": null,"experienceLevel": "Expert","duration": "More than 6 months","workload": "Full time","skills": ["Next.js","Node.js","AI Development","API Integration","Web Development","PostgreSQL","AI Model Integration","Full-Stack Development","SaaS Development"],"description": "We are looking for an experienced Full-Stack Developer to build an AI-powered SaaS invoici…","publishedAt": "2026-11-04T15:45:47.099Z","searchQuery": "react","collectedAt": "2026-11-04T21:06:16.882481+00:00"}
Output schema
| Field | Type | Description |
|---|---|---|
jobId | string | Upwork job ID. |
title | string | Job title. |
url | string (URL) | Link to the job. |
jobType | string | hourly or fixed. |
hourlyMin / hourlyMax | number | Hourly range in USD, when the client set one. |
fixedBudget | number | Fixed budget in USD, when set. |
experienceLevel | string | Entry level, Intermediate or Expert. |
duration | string | Project length. |
workload | string | Hours per week. Not set on fixed-price jobs. |
skills | array | Skills on the listing. |
description | string | Job description. |
publishedAt | string (ISO date) | When it was posted. |
searchQuery | string | The search that found it. |
collectedAt | string (ISO date) | When the row was collected. |
Need more freelance and job data?
- Google Jobs Scraper: jobs from many boards at once.
- ATS Jobs Scraper: company career sites.
FAQ
How much does it cost? You pay per job delivered, shown on the Pricing tab. Set a maximum cost per run and it stops cleanly at that limit, storing only what you paid for.
How many jobs can I get? That depends on the search. Popular searches returned 400 or more in testing, and narrower ones fewer. Run several searches for broader coverage.
Can I get only new jobs? Yes. Schedule a run with sort Newest and a Posted within window.
Can I connect this to other tools? Yes, through integrations on the Apify platform: Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API and webhooks.
Is it legal to scrape Upwork? It returns publicly listed jobs. You are responsible for how you use them, including Upwork's terms and privacy law.
Related Actors
Notes
Independent tool, not affiliated with Upwork. Returns only public data; you are responsible for how you use it.
Feedback
How did it go? Good or bad, a review helps other users decide and tells us what to improve. Something broken or missing? Open an issue and we'll look at it.