
Upwork Job Scraper | Scrape up to 10k Jobs β¨
Pricing
Pay per event

Upwork Job Scraper | Scrape up to 10k Jobs β¨
Get ALL Upwork jobs instantly. Pre-indexed database delivers 10,000+ jobs at once. No cookies, no timeouts, filters that actually work. Perfect for freelancers, agencies, and Clay/Zapier automations. Pay only $0.003 per job - no subscriptions required. upwork@vistorio.online
4.0 (1)
Pricing
Pay per event
1
16
16
Issues response
18 hours
Last modified
19 hours ago
Upwork Scraper - Extract up to 10,000 Jobs per request
Experience seamless Upwork job extraction with fast access to comprehensive job data. Pull up to 10,000 jobs from a single search without any authentication hassles.
β¨ Key Features
- π No Credentials Required: Simply configure your search parameters and start extracting. No cookies, login details, or complex authentication needed.
- π High Volume Capacity: Extract up to 10,000 jobs per search - perfect for comprehensive market analysis and bulk data collection.
- β‘ Fast Data Access: Get results quickly from our pre-indexed database. Optimized for speed and reliability.
- π― Precision Filtering: 40+ filter parameters that work exactly as configured - budget, location, skills, client history, and more.
- π Complete Job Data: Access all public job fields including budget details, client stats, vendor requirements, and application costs.
π οΈ How It Works
- Configure Your Search: Set your desired filters - keywords, budget ranges, client requirements, experience levels
- Set Volume Limit: Choose how many jobs to extract (1 to 10,000)
- Run Extraction: Get results in clean, structured JSON format
- Export or Integrate: Use with Clay, Zapier, Make, or export to your preferred format
π° Transparent Pricing & Performance
$0.003 per job ($3.00 per 1,000 jobs)
- Pay only for what you extract
- No subscriptions or hidden fees
- Platform costs included
Volume Examples with Timing
Jobs | Cost | Time |
---|---|---|
100 jobs | $0.30 | ~6 seconds |
500 jobs | $1.50 | ~15 seconds |
1,000 jobs | $3.00 | ~20 seconds |
5,000 jobs | $15.00 | ~40 seconds |
10,000 jobs | $30.00 | ~70 seconds |
πΈ Output Sample
Try the scraper with your own parameters!
π How to Use Job Search
Daily Freelancer Monitor
{"limit": 200,"fromDate": "2025-01-13", // Yesterday"toDate": "2025-01-14", // Today"jobCategories": ["Web Development", "Mobile Development"],"includeKeywords.keywords": ["React", "Node.js", "TypeScript"],"includeKeywords.matchTitle": true,"includeKeywords.matchSkills": false,"includeKeywords.matchDescription": true,"budget.hourlyRate.min": "40","client.includeLocations": [{"type": "COUNTRY", "value": "US"},{"type": "COUNTRY", "value": "CA"},{"type": "COUNTRY", "value": "GB"}],"client.paymentMethodVerified": true}
Agency Market Analysis
{"limit": 5000,"fromDate": "2025-01-01","toDate": "2025-01-14","jobCategories": ["Web Development", "Web & Mobile Design"],"budget.fixedPrice.min": "5000","client.totalSpent.min": "10000","client.minFeedbackScore": "4.0","client.includeLocations": [{"type": "REGION", "value": "north_america"},{"type": "REGION", "value": "europe"}],"vendor.experienceLevel": ["INTERMEDIATE", "EXPERT"]}
Clay Automation Daily Pull
{"limit": 300,"fromDate": "2025-01-13T00:00:00Z","toDate": "2025-01-13T23:59:59Z","includeKeywords.keywords": ["SaaS", "B2B", "startup"],"includeKeywords.matchSkills": false,"includeKeywords.matchTitle": false,"includeKeywords.matchDescription": true,"budget.minClientHireRate": 50,"client.includeLocations": [{"type": "COUNTRY", "value": "US"}],"client.paymentMethodVerified": true,"client.totalSpent.min": "5000"}
Advanced Filtering Example
{"limit": 2000,"fromDate": "2025-01-01T12:30:00Z","jobCategories": ["Web Development","Web & Mobile Design"],"includeKeywords.keywords": ["React", "TypeScript", "Next.js"],"includeKeywords.matchTitle": true,"includeKeywords.matchDescription": true,"includeKeywords.matchSkills": true,"excludeKeywords.keywords": ["WordPress", "PHP", "Shopify"],"excludeKeywords.matchTitle": true,"excludeKeywords.matchDescription": true,"excludeKeywords.matchSkills": true,"budget.hourlyRate.min": "40","budget.hourlyRate.max": "150","budget.jobDurations": ["UP_TO_THREE_MONTHS","UP_TO_SIX_MONTHS","MORE_THAN_SIX_MONTHS"],"budget.minClientHireRate": 50,"client.paymentMethodVerified": true,"client.minFeedbackScore": "4.0","client.includeLocations": [{"type": "COUNTRY", "value": "US"},{"type": "REGION", "value": "europe"},{"type": "COUNTRY", "value": "GB"}],"client.totalSpent.min": "5000","vendor.experienceLevel": ["INTERMEDIATE", "EXPERT"],"vendor.englishProficiency": "FLUENT"}
π Output format
Clean, structured JSON with all job details:
{"uid": "1955020056847176693","title": "React Developer for SaaS Platform","description": "We are looking for an experienced React Developer to help us build and scale our SaaS platform for small-to-medium businesses. Youβll be working closely with our product and backend teams to deliver high-quality, performant, and maintainable features that enhance user experience and support rapid growth.","createdAt": "2025-01-15T10:30:00.000Z","skills": ["React","TypeScript","Node.js","Redux","REST APIs"],"externalLink": "https://www.upwork.com/jobs/~021955020056847176693","applicationCost": 6,"featured": false,"category": "Web Development","ciphertext": "~021955020056847176693","questions": null,"budget": {"fixedBudget": 5000,"hourlyRate": {"min": 40,"max": 80}},"client": {"name": "TechStartup Inc","timezone": "America/New_York","industry": "Technology","companySize": 10,"countryCode": "US","phoneNumberVerified": true,"paymentMethodVerified": true,"enterprise": false,"connectedAt": "2024-05-01T00:00:00.000Z","stats": {"totalSpent": 125000,"totalHires": 42,"hireRate": 85,"avgRate": 65,"feedbackRate": 4.95,"feedbackCount": 38}},"vendor": {"hireType": "FREELANCER","countryCodes": ["US", "CA", "UK"],"experienceLevel": "EXPERT","englishLevel": "FLUENT"},"customJobScore": 4.8}
Field Descriptions
Core Fields:
uid
: Unique identifier for the jobtitle
: Job title/headlinedescription
: Job descriptioncreatedAt
: When the job was posted (ISO 8601)externalLink
: Direct link to job on UpworkapplicationCost
: Connects required to applyfeatured
: Whether it's a featured/promoted jobcategory
: Job category on Upworkciphertext
: Encoded job referencequestions
: Screening questions (array or null)customJobScore
: Client quality score (0-5) based on verification status, ratings, hire history, and spending patterns
Budget Object:
fixedBudget
: Fixed price amount (0 if hourly)hourlyRate.min/max
: Hourly rate range (null if fixed)
Client Object:
name
: Company/client name (may be null)timezone
: Client's timezone (IANA format)industry
: Client's industry sectorcompanySize
: Number of employeescountryCode
: 2-letter country codephoneNumberVerified
: Phone verification statuspymentMethodVerified
: Payment method verifiedenterprise
: Enterprise client flagconnectedAt
: When joined Upworkstats.totalSpent
: Total spent on platformstats.totalHires
: Number of hires madestats.hireRate
: Percentage of jobs that result in hirestats.avgRate
: Average hourly rate paidstats.feedbackRate
: Average rating given (0-5)stats.feedbackCount
: Number of feedback entries
Vendor Object:
hireType
: "FREELANCER", "AGENCY", or "ANY"countryCodes
: Preferred freelancer locationsexperienceLevel
: "BEGINNER", "INTERMEDIATE", or "EXPERT"englishLevel
: "ANY", "BASIC", "CONVERSATIONAL", "FLUENT", or "NATIVE"
π Complete Input Parameters
βοΈ Basic Settings
Parameter | Type | Description | Example |
---|---|---|---|
limit | integer | Max jobs to return (1-10000) | 1000 |
fromDate | string | Jobs posted after (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ) | "2025-01-01" or "2025-01-01T00:00:00Z" |
toDate | string | Jobs posted before (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ) | "2025-12-31" or "2025-12-31T23:59:59Z" |
jobCategories | array | Upwork category names | ["Web Development", "UI/UX Design"] |
π Keyword Filters
Parameter | Type | Description | Example |
---|---|---|---|
includeKeywords.active | boolean | Enable include keywords | true |
includeKeywords.keywords | array | Must contain these terms | ["React", "Node.js"] |
includeKeywords.matchTitle | boolean | Search in titles | true |
includeKeywords.matchDescription | boolean | Search in descriptions | true |
includeKeywords.matchSkills | boolean | Search in required skills | true |
excludeKeywords.active | boolean | Enable exclude keywords | true |
excludeKeywords.keywords | array | Exclude jobs with these terms | ["WordPress", "PHP"] |
excludeKeywords.matchTitle | boolean | Search in titles | true |
excludeKeywords.matchDescription | boolean | Search in descriptions | true |
excludeKeywords.matchSkills | boolean | Search in required skills | true |
π° Budget & Payment
Parameter | Type | Description | Example |
---|---|---|---|
budget.hourlyRate.min | string | Minimum hourly rate (USD) | "50" |
budget.hourlyRate.max | string | Maximum hourly rate (USD) | "150" |
budget.fixedPrice.min | string | Minimum fixed price (USD) | "1000" |
budget.fixedPrice.max | string | Maximum fixed price (USD) | "10000" |
budget.connectsPrice.min | integer | Minimum connects required | 1 |
budget.connectsPrice.max | integer | Maximum connects required | 10 |
budget.jobDurations | array | Contract lengths | ["UP_TO_THREE_MONTHS"] |
budget.hourlyWorkloads | array | Weekly commitment | ["LESS_THAN_30_HOURS"] |
budget.minClientHireRate | integer | Min hire rate (%) | 50 |
π’ Client Requirements
Parameter | Type | Description | Example |
---|---|---|---|
client.paymentMethodVerified | boolean | Verified payment only | true |
client.minFeedbackScore | string | Min rating (0-5) | "4.5" |
client.totalSpent.min | string | Minimum total spent (USD) | "10000" |
client.totalSpent.max | string | Maximum total spent (USD) | "50000" |
client.includeLocations | array | Client locations | [{"type": "COUNTRY", "value": "US"}] |
client.excludeLocations | array | Exclude locations | [{"type": "COUNTRY", "value": "PK"}] |
client.companySizeRange | array | Company sizes | ["UP_TO_100_EMPLOYEES"] |
π€ Vendor Preferences
Parameter | Type | Description | Example |
---|---|---|---|
vendor.experienceLevel | array | Required experience | ["INTERMEDIATE", "EXPERT"] |
vendor.englishProficiency | string | English level | "FLUENT" |
vendor.type | array | Freelancer/Agency | ["FREELANCER"] |
vendor.includeLocations | array | Vendor locations | [{"type": "COUNTRY", "value": "US"}] |
vendor.includeFeatured | boolean | Featured jobs only | true |
Job Categories
Most Popular Categories:
"Web Development"
- Frontend, backend, full-stack"Mobile Development (Web/Mobile)"
- Cross-platform mobile apps"Mobile Development (IT)"
- Native iOS/Android development"UI/UX Design"
- User interface and experience design"AI/ML Engineering"
- Machine learning and AI projects"Data Science & Analytics"
- Data analysis and visualization"Digital Marketing"
- SEO, PPC, social media"Content Writing"
- Articles, blogs, copywriting"Ecommerce Development"
- Online stores, Shopify"DevOps Engineering"
- CI/CD, cloud infrastructure
Development & Tech:
"Web Development"
"Mobile Development (Web/Mobile)"
"Mobile Development (IT)"
"Desktop Software Development"
"Ecommerce Development"
"Game Development"
"Game Design & Development"
"Blockchain & Cryptocurrency"
"AI/ML Engineering"
"Data Engineering"
"Cloud Computing"
"DevOps Engineering"
"DevOps & Solution Architecture"
"QA & Testing (Software)"
"QA & Testing (Web/Mobile)"
Design & Creative:
"UI/UX Design"
"Product Design"
"Visual Design"
"Illustration & Design"
"Web & Mobile Design"
"3D Modeling & CAD"
"Architecture & Interior Design"
Business & Admin:
"Product Management (Business)"
"Product Management (Tech)"
"Project Management"
"Business Analysis & Strategy"
"Virtual Assistance"
"Data Entry & Transcription"
"Market Research"
Marketing & Sales:
"Digital Marketing"
"Social Media Marketing"
"Content Writing"
"Brand Strategy & Marketing"
"Marketing Automation"
"Sales & Business Development"
Note: Use exact category names as shown (case-sensitive). Full list of 70+ categories available.
π‘ Smart Usage Tips - Don't Pay Twice!
Live Job Monitoring (Near Real-Time)
β οΈ Use 10-30 minute overlap ONLY when scraping up to the present moment
Jobs can take up to 30 minutes to sync to our database. If you're monitoring live jobs (toDate = now), use overlap to catch delayed jobs:
// First run at 9:00 AM (scraping up to NOW){"limit": 50,"fromDate": "2025-01-14T07:00:00Z","toDate": "2025-01-14T09:00:00Z" // NOW}// Next run at 11:00 AM (scraping up to NOW){"limit": 50,"fromDate": "2025-01-14T08:30:00Z", // 30-min overlap"toDate": "2025-01-14T11:00:00Z" // NOW}// Next run at 1:00 PM (scraping up to NOW){"limit": 50,"fromDate": "2025-01-14T10:30:00Z", // 30-min overlap"toDate": "2025-01-14T13:00:00Z" // NOW}
When to use overlap: Only when your toDate
is the current time (live monitoring)
Overlap duration: 10-30 minutes maximum (30 min for maximum safety)
Historical Data Collection (Past Jobs)
β NO overlap needed when scraping historical data
When collecting past jobs (not up to the present moment), use exact date boundaries:
// Day 1: Get January jobs{"limit": 1000,"fromDate": "2025-01-01T00:00:00Z","toDate": "2025-01-31T23:59:59Z" // Past date - NO overlap needed}// Day 2: Get February jobs{"limit": 1000,"fromDate": "2025-02-01T00:00:00Z", // Exact boundary - no overlap"toDate": "2025-02-28T23:59:59Z" // Past date - NO overlap needed}
Daily Batch Collection (Previous Day's Jobs)
β NO overlap needed for daily historical pulls
// Monday: Get Sunday's jobs{"fromDate": "2025-01-13T00:00:00Z", // Sunday start"toDate": "2025-01-13T23:59:59Z" // Sunday end - NO overlap}// Tuesday: Get Monday's jobs{"fromDate": "2025-01-14T00:00:00Z", // Monday start - exact boundary"toDate": "2025-01-14T23:59:59Z" // Monday end - NO overlap}
Key Rule: Overlap is ONLY for live monitoring when toDate
= current time
Cost-Effective Filtering
Start with strict filters to minimize costs:
- Use
"client.paymentMethodVerified": true
to filter serious clients - Set
"budget.minClientHireRate": 50
to avoid job collectors - Add
"client.totalSpent.min": "1000"
for proven clients
π§ Integration Options
Automation Platforms
- Clay.com - Direct table import with enrichment
- Make/Zapier - 5000+ app connections
- n8n - Self-hosted workflows
- API - REST API for custom integrations
Export Formats
- JSON (default)
- CSV
- Direct to Google Sheets
- Webhook delivery
π API Documentation
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('upwork-vibe/upwork-job-scraper').call(input);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('upwork-vibe/upwork-job-scraper').call(input)
REST API
curl -X POST "https://api.apify.com/v2/acts/upwork-vibe~upwork-job-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"limit": 100,"includeKeywords.active": true,"includeKeywords.keywords": ["react", "javascript"],"includeKeywords.matchSkills": false,"includeKeywords.matchTitle": true,"includeKeywords.matchDescription": true}'
π Location Reference Guide
How to Use Locations
Locations in client.includeLocations
, client.excludeLocations
, and vendor.includeLocations
use this format:
{"type": "COUNTRY", "value": "US"} // For countries{"type": "REGION", "value": "europe"} // For regions
Common Country Codes (ISO 3166-1 alpha-2)
Country | Code | Country | Code |
---|---|---|---|
United States | US | United Kingdom | GB |
Canada | CA | Australia | AU |
Germany | DE | France | FR |
Netherlands | NL | Switzerland | CH |
Sweden | SE | Denmark | DK |
Norway | NO | Finland | FI |
Spain | ES | Italy | IT |
Poland | PL | Ukraine | UA |
India | IN | Pakistan | PK |
Bangladesh | BD | Philippines | PH |
Singapore | SG | Japan | JP |
Brazil | BR | Mexico | MX |
Argentina | AR | Israel | IL |
United Arab Emirates | AE | South Africa | ZA |
Available Regions
Region | Value | Includes |
---|---|---|
North America | north_america | US, CA, MX |
Europe | europe | All EU countries + UK, CH, NO |
Asia | asia | All Asian countries |
South America | south_america | All South American countries |
Africa | africa | All African countries |
Oceania | oceania | AU, NZ, Pacific Islands |
Example Usage
// Include only US and European clients"client.includeLocations": [{"type": "COUNTRY", "value": "US"},{"type": "REGION", "value": "europe"}]// Exclude specific countries"client.excludeLocations": [{"type": "COUNTRY", "value": "PK"},{"type": "COUNTRY", "value": "BD"},{"type": "COUNTRY", "value": "IN"}]// Vendor location preferences"vendor.includeLocations": [{"type": "REGION", "value": "north_america"},{"type": "COUNTRY", "value": "PH"}]
Note: For the complete list of ISO country codes, see ISO 3166-1 alpha-2
π Troubleshooting
Getting 0 Results?
- Check your date range - Ensure dates aren't in the future
- Verify category names - Must match exactly from the enum list (e.g., "Web Development" not "Web Dev")
- Remove filters progressively - Start broad, then add filters one by one
- Check parameter structure - Use dot notation format (e.g.,
"budget.hourlyRate.min": "50"
)
Validation Errors?
- Use dot notation - Not nested objects:
"includeKeywords.active": true
β vs{"includeKeywords": {"active": true}}
β - Exact category names - "Mobile Development (Web/Mobile)" not "Mobile Development"
- Location format - Must have both fields:
{"type": "COUNTRY", "value": "US"}
- Quote string values - Budget amounts must be strings:
"50"
not50
Performance Issues?
- Start small - Test with
limit: 100
before scaling up - Simplify filters - Complex keyword combinations slow processing
- Segment large requests - Use date ranges to break up big searches
- Avoid overlapping filters - Don't use contradictory include/exclude rules
Unexpected Costs?
- Always set limit - Without it, you might pull thousands of jobs
- Test first - Start with
limit: 10
to verify your filters work - Check itemCount - Monitor response counts before scaling up
- Remember billing - You pay $0.003 per job returned, not per API call
βοΈ Support
β‘ Feel free to reach out to the developer for any issues or suggestions for improvement.
π¬ π§ π π‘ π