Upwork Jobs Scraper avatar

Upwork Jobs Scraper

Pricing

from $1.60 / 1,000 jobs

Go to Apify Store
Upwork Jobs Scraper

Upwork Jobs Scraper

Extract job listings from Upwork. 🔥No Proxies Needed. ✅ 99.9% Success Rate.📈 Active Development

Pricing

from $1.60 / 1,000 jobs

Rating

0.0

(0)

Developer

Stan Van Rooy

Stan Van Rooy

Maintained by Community

Actor stats

7

Bookmarked

73

Total users

0

Monthly active users

14 hours ago

Last modified

Share

Free-plan sample: Apify Free accounts can collect up to 100 result rows total per run, shared across all inputs. Upgrade your Apify plan for larger runs. Normal Actor charges apply. The sample resets each run; it is not a daily or monthly quota.

Simple setup. Good results. Regular updates.

Get Upwork job data without the complexity. This scraper extracts job listings with their details in a clean, structured format.

What This Scraper Does

✅ Easy Setup - Basic configuration and you're running
✅ Regular Updates - I keep it working when Upwork changes
✅ Good Data - Extracts job details, client info, and budget data

What You Get

Job Information

  • Job descriptions and requirements
  • Budget details (hourly rates, fixed prices)
  • Client information and hiring history
  • Application statistics (proposals, interviews, etc.)

All In Clean JSON Format

  • When jobs were posted
  • How many people applied
  • Client's track record
  • Project duration and scope

Feature requests

Have a feature request? Open an issue on the Issues tab.

Some ideas I'm considering:

  • Filter by job type (hourly vs fixed)
  • Sort by budget range
  • Export to different formats (CSV, Excel)
  • More detailed client verification info
  • Job skills/tags extraction
  • Historical job posting trends

What would you like to see? Let me know and I'll add it!

Simple Setup

Just tell it what you want:

{
"search": "python developer",
"limit": 50
}

Filter By Category (Optional)

Want to be more specific? Filter by categories:

{
"search": "web developer",
"category": "531770282589057024",
"limit": 100
}

Output

Clean, organized JSON:

{
"url": "https://www.upwork.com/jobs/~012a6316c40dab138f",
"id": "012a6316c40dab138f",
"description": "We need an experienced Python developer to build a web application...",
"posted_at": "2024-01-15T10:30:00.000Z",
"scraped_at": "2024-01-15T15:45:30.123456",
"client_location_city": "San Francisco",
"client_location_country": "United States",
"client_industry": "Technology",
"client_size": "10-49",
"client_member_since": "Jan 2020",
"client_stats_active_hires": 3,
"client_stats_total_hires": 25,
"client_stats_hours": 1500,
"client_stats_total_spent": 150000,
"job_activity_proposals_min": 20,
"job_activity_proposals_max": 50,
"job_activity_last_viewed": "2 hours ago",
"job_activity_hires": 5,
"job_activity_interviewing": 2,
"job_activity_invites_sent": 8,
"job_activity_unanswered_invites": 1,
"fixed_budget": 5000,
"hourly_min": 50,
"hourly_max": 80,
"hourly_duration_period": "3-6 months",
"hourly_duration_weekly_commitment": 20
}

Getting Started

  1. Add this actor to your account
  2. Configure your search terms
  3. Run and get results

Note: No proxy configuration needed. Requests will always succeed.

Memory: 512MB (default is fine for most use cases)

Input Parameters

Required:

  • search - What jobs to look for
  • job_type - Select which jobs to include. Options: Both (default), Only hourly, Only fixed. Maps to t: hourly=0, fixed=1, both=0,1. If you set hourly or fixed budget filters, the correct type is added automatically.

Optional:

  • category - Filter by job category
  • limit - How many jobs to get (default: 10)
  • sort - Order results: relevance (default) or newest
  • contractor_tier - Experience levels to include (multi-select array of strings): "1" (Entry level), "2" (Intermediate), "3" (Expert)
  • min_fixed_price - Minimum fixed price budget. Maps to amount. Examples: 123 => amount=123-
  • max_fixed_price - Maximum fixed price budget. Maps to amount. Examples: 123 => amount=-123; with min 123 and max 456 => amount=123-456
  • min_hourly_rate - Minimum hourly rate. Maps to hourly_rate. Examples: 123 => hourly_rate=123-
  • max_hourly_rate - Maximum hourly rate. Maps to hourly_rate. Examples: 123 => hourly_rate=-123; with min 123 and max 456 => hourly_rate=123-456

How I Keep It Working

  • Monitor for Upwork changes
  • Update selectors when needed
  • Test regularly to catch issues
  • Good error handling for reliability

Limitations

  • Limited to publicly available job data

Support

Having issues? Check the Apify Console for logs or contact support.

Fair Use

This scraper respects Upwork's servers and follows ethical scraping practices. Use responsibly and in accordance with Upwork's terms of service.