Upwork Job Scraper
Pricing
from $1.00 / 1,000 jobs
Pricing
from $1.00 / 1,000 jobs
Rating
4.1
(3)
Developer
delta spider
Maintained by CommunityActor stats
16
Bookmarked
323
Total users
13
Monthly active users
12 hours ago
Last modified
Categories
Share
Upwork Job Scraper - Get the latest jobs and stay ahead of the competition
๐ Scrape Upwork job listings instantly - The most reliable Upwork scraper with extremely fast, accurate, real-time data extraction.
Why Choose This Upwork Scraper?
โ
Fresh Jobs Only - Access the latest Upwork job postings as they appear
โ
Advanced Filtering - Use Upwork's own search URLs or customize with 15+ filter options
โ
Detailed Job Data - Extract comprehensive job details including client history, budgets, and requirements
โ
Multiple Export Formats - Get structured data in JSON, CSV, Excel, or XML
โ
No Coding Required - Simply paste Upwork search URLs and start scraping
๐ฏ Perfect For
- Freelancers: Automate your Upwork job search and never miss opportunities
- Agencies: Track multiple job categories and match team skills efficiently
- Market Researchers: Analyze freelance trends, rates, and skill demand
- Business Intelligence: Monitor client hiring patterns and project types
๐ Quick Start
Method 1: Copy & Paste Upwork URLs (Recommended)
The easiest is to use search_urls - simply copy any Upwork search URL from your browser and paste it directly. This future-proof approach automatically adapts to Upwork's URL changes and captures all filter combinations. Just make sure the urls start with www.upwork.com/nx/search/jobs
{"search_urls": ["https://www.upwork.com/nx/search/jobs/?q=react%20developer&contractor_tier=2,3&hourly_rate=30-80","https://www.upwork.com/nx/search/jobs/?q=python&t=1&amount=1000-4999,5000-&client_hires=10-"],"limit": 100,"includeDetails": true}
Configuration Options
These options apply to both methods:
| Parameter | Description | Default |
|---|---|---|
| search_urls | Array of Upwork search URLs to scrape | empty |
| limit | Maximum jobs to extract per search | 100 |
| includeDetails | Get comprehensive job details (client info, similar jobs, etc.) | false |
Proxies and anti-blocking are handled for you. There is no proxy setting.
Method 2: Custom filters
Prefer not to build a URL? Leave search_urls empty and describe the search with keywords and filters. The Apify input UI offers dropdowns with every valid option, and the same filters work over the API:
{"userQuery": "react developer","contractorTier": ["IntermediateLevel", "ExpertLevel"],"hourlyRateMin": 30,"hourlyRateMax": 80,"workload": ["full_time"],"location": ["United States", "Germany"],"limit": 100}
| Filter | Description | Accepted values |
|---|---|---|
| userQuery | Search keywords | Any text |
| sort | Result order | recency (default), relevance+desc |
| category | Category or subcategory | Pick from the dropdown in the input UI (76 options) |
| contractorTier | Experience level | EntryLevel, IntermediateLevel, ExpertLevel |
| durationV3 | Project length | week (under 1 month), month (1 to 3 months), semester (3 to 6 months), ongoing (over 6 months) |
| jobType | Job type | hourly, fixed |
| hourlyRateMin, hourlyRateMax | Hourly rate range in USD | Numbers, either side optional |
| budget | Fixed-price budget | 0-99, 100-499, 500-999, 1000-4999, 5000- |
| fixedPriceMin, fixedPriceMax | Custom fixed-price range in USD | Numbers, either side optional. Ignored when budget is set |
| clientHires | Client history | 0 (no hires), 1-9, 10- (10 or more) |
| workload | Hours per week | as_needed (less than 30 hrs/week), full_time (more than 30 hrs/week) |
| contractToHire | Only contract-to-hire roles | true |
| location | Client location | Pick from the dropdown: Upwork's own regions, subregions and countries, for example United States, Western Europe |
| timezone | Client time zone | Pick from the dropdown: Upwork's own list. Values are time zone names such as America/New_York, Europe/Berlin |
Two things to know:
- URLs win. If
search_urlscontains at least one URL, the search comes from the URL and the custom filters are ignored. - Ranges pick the job type. A fixed-price budget on its own returns fixed-price jobs, and an hourly rate on its own returns hourly jobs. Set both, or choose
jobTypeyourself, to get both kinds.
Only new jobs and job age
Two options work with both search URLs and custom filters:
| Option | What it does | Default |
|---|---|---|
| onlyNewJobs | Skips jobs that earlier runs of the same search already delivered | false |
| maxJobAgeHours | Only jobs posted within this many hours, for example 24 | empty |
{"search_urls": ["https://www.upwork.com/nx/search/jobs/?q=javascript"],"limit": 100,"onlyNewJobs": true}
- Made for schedules. Run the search every hour with
onlyNewJobsand each run delivers only jobs posted since the last one. The first run delivers up tolimitjobs as usual. - You pay only for new jobs. A run with nothing new delivers nothing and costs nothing.
- Newest first. Both options sort results by newest, whatever the URL or
sortsays, and stop as soon as they reach jobs that are too old or already delivered. - Same search, same memory. A search is remembered by its keywords and filters. Changing a filter starts a new search; changing
limitorincludeDetailsdoes not. - Where it is stored. Delivered job IDs are kept in your own Apify account, in the key-value store
upwork-job-scraper-state. Delete the store to start over.
๐ฐ Pricing
Pay only for the jobs you get. No monthly fee, no start fee, and platform usage is included.
| What you get | Price | Per 1,000 jobs |
|---|---|---|
| A job | $0.001 | $1.00 |
| A job with full details | $0.001 + $0.001 | $2.00 |
- The details add-on is charged only for jobs that come back with details. Upwork hides the details of private listings, and those cost the plain $0.001.
- A run that returns nothing costs nothing.
- Set Maximum charge per run in the Apify Console for a hard ceiling. The scraper stops cleanly when it is reached.
๐ Output Data
Extract structured Upwork job data in your preferred format (JSON, CSV, Excel, XML).
Basic Job Fields
{"_input": "contract_to_hire = true | hourly_rate = 50- | search = blockchain developer | t = 0 | timezone = America/New_York","_position": 1,"title": "Senior Blockchain Cryptography Developer","description": "Project: I/O Coin DIONS Code Review & Upgrade Proposal","url": "https://www.upwork.com/freelance-jobs/apply/~021943382953261501032/","skills": ["Blockchain Architecture", "Blockchain", "Cryptocurrency", "Distributed Ledger Technology", "Java"],"id": "1943382953261501032","ciphertext": "~021943382953261501032","jobType": "HOURLY","weeklyRetainerBudget": null,"hourlyBudgetMax": "85.0","hourlyBudgetMin": "40.0","hourlyEngagementType": "PART_TIME","contractorTier": "ExpertLevel","sourcingTimestamp": null,"createTime": "2025-07-10T18:52:57.256Z","publishTime": "2025-07-10T18:52:57.892Z","fixedPriceAmount": null,"duration": "3 to 6 months","durationWeeks": 18,"durationDays": null,"relevancePosition": 1}
Enhanced Job Details (includeDetails: true)
Enable includeDetails to extract comprehensive information including:
- Client Information: Location, hiring history, total spent, feedback score
- Project Requirements: Preferred qualifications, languages, timezone preferences
- Similar Jobs: Related opportunities from the same client
- Engagement Details: Work arrangements, contract terms, team size
๐ง Use Cases
For Freelancers
- Automated Job Discovery: Set up scheduled runs to find new opportunities matching your skills
- Early Bird Advantage: Be among the first to apply to fresh job postings
- Market Rate Analysis: Track hourly rates and budgets in your niche
- Client Research: Analyze client hiring patterns before applying
For Agencies & Teams
- Multi-Category Tracking: Monitor jobs across different skill sets for your team
- Opportunity Matching: Automatically match team members with suitable projects
- Competitive Intelligence: Understand market demand and pricing trends
- Lead Generation: Identify high-value clients with consistent hiring needs
For Market Research
- Freelance Economy Insights: Track trends in remote work and gig economy
- Skills Demand Analysis: Identify emerging technologies and in-demand skills
- Geographic Trends: Analyze hiring patterns by location and timezone
- Budget Distribution: Understand project value ranges across categories
๐ API Usage Examples
JavaScript/Node.js
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const input = {search_urls: ["https://www.upwork.com/nx/search/jobs/?q=react%20developer"],limit: 100,includeDetails: true,};const run = await client.actor("YOUR_ACTOR_ID").call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')input_data = {'search_urls': ['https://www.upwork.com/nx/search/jobs/?q=python%20developer'],'limit': 100,'includeDetails': True}run = client.actor('YOUR_ACTOR_ID').call(run_input=input_data)items = client.dataset(run['defaultDatasetId']).list_items().items
๐ก Pro Tips
- Optimize Your Searches: Use Upwork's advanced filters in the browser, then copy the URL
- Nothing to Configure: Proxies and anti-blocking are built in, so large searches need no extra setup
- Fresh Data: Schedule the search with
onlyNewJobsto get new postings without repeats from earlier runs - Detailed Insights: Enable
includeDetailsfor comprehensive market analysis - Efficient Filtering: Use search URLs to leverage Upwork's native filtering logic
๐ Start Scraping Upwork Jobs Today
Ready to automate your Upwork job search or conduct market research? This Upwork scraper provides the most reliable and comprehensive data extraction available.
๐ Try the best upwork.com scraper now for free on Apify
Keywords: Upwork scraper, Upwork job scraper, scrape Upwork jobs, Upwork data extraction, freelance job automation, Upwork API alternative, extract Upwork listings, Upwork job search automation, Upwork market analysis, freelance opportunity tracker