Upwork Jobs Scraper
Pricing
from $1.50 / 1,000 jobs
Upwork Jobs Scraper
Scrapes Upwork freelance job listings by keyword with full search filters (sort, experience, job type, budget, hourly rate, client history, location, timezone, project duration, workload).
Pricing
from $1.50 / 1,000 jobs
Rating
0.0
(0)
Developer
Scraptivo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Upwork Jobs Scraper collects freelance job listings from Upwork and turns them into structured data for lead generation, market research, and competitive analysis. Provide search keywords, run the Actor, and export job titles, budgets, hourly rates, experience levels, skills, and full descriptions to JSON, CSV, Excel, or your preferred integration. Use it to find qualified projects, monitor demand for your services, and study freelance market rates. Each job result costs $0.002.
What can you automate with Upwork Jobs Scraper?
- Find qualified freelance projects — search keywords and filter by budget, experience level, job type, and client history.
- Monitor demand for your services — schedule recurring keyword searches to catch new projects early.
- Study market rates — export hourly and fixed-price budgets to benchmark freelance pricing.
- Build lead lists — collect job URLs, skills, and descriptions for outreach.
- Feed a pipeline — export to CSV or a CRM and deduplicate by job ID.
Who is this scraper for?
| Team | Workflow |
|---|---|
| Freelancers and agencies | Find and filter projects that match skills and budget. |
| Market researchers | Track demand and rates across freelance categories. |
| Sales and recruiting teams | Build lists of active buyers and open requirements. |
| Competitor analysts | Watch which skills and projects clients are posting. |
What data can you collect from Upwork?
| Data group | Example fields | How it helps |
|---|---|---|
| Job identity | title, url, id, searchQuery | Identify and link the posting. |
| Budget signals | jobType, fixedPriceAmount, hourlyBudgetMin, hourlyBudgetMax | Assess project value. |
| Requirements | skills, contractorTier, description | Match skills and experience. |
| Timing | publishTime, projectDuration | Gauge urgency and length. |
How to use Upwork Jobs Scraper
- Open the Actor in the Scraptivo account.
- Enter one or more search keywords.
- Optionally apply filters for budget, experience, job type, and location.
- Run the Actor.
- Export the dataset to JSON, CSV, Excel, or your integration.
{ "searchQueries": ["scraping"], "sort": "newest", "maxItems": 20 }
Example workflow
Get new web-scraping projects every morning
- Run a "scraping" search every morning with
sort: newest. - Keep fixed-price jobs above $500 or hourly jobs over $30/hour.
- Send new records to a CRM or Google Sheet.
- Deduplicate using the stable
id.
Automate and integrate your results
- Schedule hourly or daily runs per keyword using Apify's Scheduler or the API.
- Webhooks after a successful run to trigger your downstream pipeline.
- Export to Google Sheets, Make, Zapier, Slack, or a database.
- Deduplicate using the stable
idfield.
curl "https://api.apify.com/v2/acts/scraptivo~upwork-jobs-scraper/run-sync" -H "Content-Type: application/json" -d '{"searchQueries":["scraping"],"maxItems":20}'
Input reference
| Field | Type | Required | Default | What it controls |
|---|---|---|---|---|
| searchQueries | array | yes | — | Keywords to search on Upwork job listings. |
| sort | string | no | relevance | Sort by relevance or newest. |
| jobTypes | array | no | [] | Filter by hourly and/or fixed-price jobs. |
| experienceLevels | array | no | [] | Filter by entry, intermediate, or expert. |
| category2Uids | array | no | [] | Upwork category UID values (optional). |
| locations | array | no | [] | Client location country names. |
| timezones | array | no | [] | Client time-zone codes (e.g. EST, PST). |
| clientHires | array | no | [] | Filter by client hire history (0, 1-9, 10+). |
| budgetRanges | array | no | [] | Fixed-price budget filters. |
| hourlyRate | string | no | "" | Hourly rate range in Upwork format (e.g. 20-50). |
| hourlyRateMin | integer | no | — | Minimum hourly rate in USD. |
| hourlyRateMax | integer | no | — | Maximum hourly rate in USD. |
| projectDurations | array | no | [] | Project duration filters. |
| workloads | array | no | [] | Weekly workload filters. |
| contractToHire | boolean | no | false | Only return contract-to-hire jobs. |
| pageSize | integer | no | 10 | Jobs per API page (max 50). |
| maxItems | integer | no | 0 | Max job records to scrape (0 = unlimited). |
| proxyConfiguration | object | no | RESIDENTIAL | Residential proxy for GraphQL API requests. |
Output example
{"id": "2075247703436095883","title": "Fix Cloudflare Bypass & Cookie Expiration in Existing Web Scraper","url": "https://www.upwork.com/jobs/~022075247703436095883","searchQuery": "scraping","jobType": "FIXED","contractorTier": "ExpertLevel","fixedPriceAmount": "50.0","projectDuration": "Less than 1 month","publishTime": "2026-07-09T16:00:42.559Z","skills": ["Data Scraping", "Python", "Node.js", "Cloudflare"]}
How much does it cost to scrape Upwork?
Upwork Jobs Scraper uses pay-per-event billing on Apify:
- $0.002 per job result (the headline result event).
- $0.00005 per run for the actor-start event.
Examples: 100 jobs cost about $0.20; 1,000 jobs cost about $2.00 plus the start fee. Free Apify plan users are limited to 10 jobs per run. Residential proxy traffic is billed separately by Apify according to your plan.
Reliability and responsible use
- A residential proxy is used for all requests and enabled by default.
- Filter fields are optional; leave them empty to return all matching jobs.
hourlyBudgetMinandhourlyBudgetMaxapply only whenhourlyRateis empty.- Scrape only public job data and follow Upwork's terms of service.
Frequently asked questions
Can I filter Upwork jobs by budget?
Yes. Use budgetRanges for fixed-price jobs and hourlyRate (or hourlyRateMin/hourlyRateMax) for hourly jobs.
Can I schedule Upwork Jobs Scraper to run automatically?
Yes. Use Apify's Scheduler or the API to run keywords on an hourly or daily cadence.
What counts as one result?
One job listing. The dataset records each job as a single dataset-item event.
Why did my run stop at 10 jobs?
Free Apify plan users are limited to 10 jobs per run. Upgrade your plan to scrape more.
How do I avoid duplicate records?
Deduplicate on the stable id field before writing to your CRM or spreadsheet.
Do I need a proxy?
A residential proxy is enabled by default for the GraphQL API requests.
Related Scraptivo automations
- LinkedIn Job Scraper — job postings from LinkedIn.
- Glassdoor Jobs Scraper — job listings and employer ratings from Glassdoor.
Support and custom workflows
Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, a sample URL, the required fields, and expected volume so we can assess the request.