Upwork Job Scraper avatar
Upwork Job Scraper

Pricing

$25.00/month + usage

Go to Apify Store
Upwork Job Scraper

Upwork Job Scraper

Scrape Upwork jobs without limits 🌟 Bypass CAPTCHAs & apply custom filters.

Pricing

$25.00/month + usage

Rating

4.3

(14)

Developer

Neatrat

Neatrat

Maintained by Community

Actor stats

67

Bookmarked

1.4K

Total users

144

Monthly active users

11 hours

Issues response

18 hours ago

Last modified

Share

Upwork Job Listings Scraper

Why This Scraper?

Stop manually refreshing Upwork search pages and guessing which filters to use. The Upwork Job Listings Scraper continuously pulls fresh, fully authenticated job data for you — safely, reliably, and without any complex setup.

Whether you're a freelancer tracking niche opportunities or an agency monitoring demand in your niche, this scraper turns Upwork into a clean, structured data feed you can actually work with.

🚀 Key Advantages (Read This First)

  • Automatic Authentication (In‑House Cookies) – You now get fully authenticated results by default. No need to paste your own cookies anymore.
  • 🔐 0‑Hassle Anti‑Bot HandlingAutomatic CAPTCHA solving and automatic rotating proxies are built in, so you don't have to fight Upwork's protection.
  • 🧊 0 Ban Risk – All traffic goes through our managed infrastructure (in‑house cookies + proxies), dramatically reducing the risk to your own account.
  • 📊 More Data, Same Price – Authenticated sessions unlock richer job and client details at no extra cost.
  • ⚙️ Still Flexible – Advanced filters, raw URL support, and custom rules let you shape the exact feed you want.

Already live: These protections and automatic authentication are active for all runs — you don't need to change anything to benefit.

What's New (Latest Update)

Great news! We've rolled out a significant upgrade to the Upwork Scraper that makes your life easier and your data richer.

🔑 Automatic In‑House Cookies

  • Automatic Authentication – You now get fully authenticated results by default.
  • Zero Setup Required – No need to provide your own cookies anymore.
  • Richer Data – Access to more job details and client information.
  • Lower Ban Risk – Our rotating in‑house cookie system keeps you safe.
  • Same Price – All these benefits at no additional cost.

This feature is already active on your account. The next time you run the scraper, you'll automatically benefit from:

  • More comprehensive job details
  • Enhanced client statistics
  • Better data quality
  • Improved reliability

Still Want to Use Your Own Cookies?

No problem! You can still provide your own cookies in the input if you prefer. The scraper will use them instead of our in‑house system.


Core Features

  • Customizable Searches: Enter specific keywords, categories, budget ranges, and other criteria to tailor your job search.
  • Flexible Filtering Options: Filter jobs by experience level, job type (hourly or fixed-price), budget ranges, client history, and location.
  • Advanced Custom Filters: Apply custom filters to any job property using conditions like "includes", "equals", "notIncludes", and "notEquals".
  • Job Age Filtering: Filter out jobs older than a specific time threshold (minutes, hours, days, or weeks).
  • Location-Based Filtering: Target jobs by regions, subregions, or specific countries worldwide.
  • Raw URL Support: Directly use specific Upwork search URLs instead of constructing them from parameters.
  • Automatic Authentication (In‑House Cookies): Managed cookie pool for authenticated sessions without requiring your own cookies.
  • Automatic Proxies & CAPTCHA Solving: Built‑in proxy rotation and CAPTCHA bypass keep runs stable and resilient.
  • Detailed Information Extraction: Pulls comprehensive job information including title, description, client statistics, budget details, required skills, and posting time.
  • Modern Architecture: Built with TypeScript and Node.js for reliability and maintainability.
  • Cloudflare / Protection Bypass: Advanced techniques to reliably access Upwork job data.
  • Case-Insensitive Matching: All filtering is case-insensitive for more intuitive search experiences.

Use Cases

  • Targeted Job Hunting: Find exactly the kind of projects you're qualified for without spending hours manually searching.
  • Market Research: Understand what services are in demand and how much clients are willing to pay for different skills.
  • Competitive Analysis: Track which skills are most requested in your field to guide your professional development.
  • Opportunity Alerts: Stay updated with the latest job postings that match your skill set without the need for constant manual searching.
  • Fresh Job Alerts: Focus only on recent job postings by filtering out older listings.
  • Complex Search Criteria: Combine multiple filter conditions to find highly specific job matches.

How to Use

Getting started with the Upwork Job Listings Scraper is easy:

  1. Set Your Parameters:
  • Enter your search query (optional if raw URL provided)
  • Provide a raw Upwork search URL (optional, overrides other search parameters)
  • Set maximum job age to filter out older jobs (e.g., 24 hours, 3 days)
  • Define custom filters for precise job matching
  • Choose which page to start from (default: 1)
  • Set results per page (default: 10)
  • Select sorting order (newest or relevance)
  • Filter by experience level (entry, intermediate, expert)
  • Specify job type (fixed or hourly)
  • Set budget ranges for both fixed and hourly jobs
  • Filter by client hiring history
  • Filter by location (regions, subregions, or countries)
  • (Optional) Provide your own authentication cookies if you want to override the in‑house system.
  1. Run the Scraper: Launch the scraper and let it gather the job listings for you. Automatic cookies, proxies, and CAPTCHA solving are applied behind the scenes.

  2. Analyze the Results: Review the detailed job data to find the perfect opportunities.

Output Format

After each run, the scraper generates a dataset of Upwork jobs with the following information:

  • Job ID and URL: Unique identifiers and direct links to job listings
  • Title and Description: Detailed information about what the job entails
  • Budget Information: Fixed price amount or hourly rate ranges
  • Client Statistics: Total spent, number of hires, feedback scores, etc.
  • Job Requirements: Experience level, skills needed, and category
  • Posting Time: When the job was published
  • Additional Details: Tags, contract type, engagement duration, and more

Supported Filtering Options

Standard Filters

  • Experience Levels: Entry Level, Intermediate, Expert

  • Job Types: Fixed Price, Hourly Rate

  • Client History: No previous hires, 1-9 previous hires, 10+ previous hires

  • Maximum Job Age: Filter by minutes, hours, days, or weeks

  • Locations: Filter by regions, subregions, or specific countries

  • Payment Verification: Filter jobs by whether the client has verified payment methods

    Example Maximum Job Age Filter:

    {
    "value": 24,
    "unit": "hours"
    }

    This example would filter out jobs older than 24 hours. Supported units are "minutes", "hours", "days", and "weeks".

    Example Location Filter:

    ["United States", "Europe", "Australia"]

    This example would filter jobs to only show those from the United States, Europe, and Australia regions.

Custom Filters

Custom filters allow you to filter jobs based on any job property:

  • Available Properties:

    • title
    • description
    • jobType
    • experienceLevel
    • budget
    • tags
    • relativeDate
    • absoluteDate
    • paymentVerified
    • clientLocation
    • allowedApplicantCountries
  • Available Operators:

    • includes - checks if the value is included in the property (supports both single string and array of strings)
    • equals - checks if the value exactly matches the property
    • notIncludes - checks if the value is not included in the property (supports both single string and array of strings)
    • notEquals - checks if the value does not exactly match the property
  • Example Custom Filters:

    [
    {
    "key": "title",
    "operator": "includes",
    "value": "python"
    },
    {
    "key": "experienceLevel",
    "operator": "equals",
    "value": "Expert"
    },
    {
    "key": "tags",
    "operator": "notIncludes",
    "value": "wordpress"
    }
    ]
  • Example Using Arrays with Includes Operator:

    [
    {
    "key": "title",
    "operator": "includes",
    "value": ["react", "vue", "angular"]
    },
    {
    "key": "description",
    "operator": "includes",
    "value": ["typescript", "javascript"]
    }
    ]

    This example will find jobs that have any of "react", "vue", or "angular" in the title AND have either "typescript" or "javascript" in the description. Using arrays with the includes operator allows you to efficiently search for multiple terms without creating separate filters for each term.

Filtering Jobs by Eligible Countries

One of the most powerful features of this scraper is the ability to filter jobs based on which countries are eligible to apply. The allowedApplicantCountries property contains an array of country names that the client has explicitly restricted the job to - meaning only applicants from these countries are allowed to apply, and applicants from all other countries are excluded.

Using the allowedApplicantCountries Filter

To find jobs that specifically allow applicants from your country (and exclude those that don't):

[
{
"key": "allowedApplicantCountries",
"operator": "includes",
"value": "United States"
}
]

This example will only show jobs that explicitly allow applicants from the United States. Jobs that don't include the United States in their allowed countries list will be filtered out.

Finding Jobs Open to Multiple Specific Countries

You can search for jobs that allow applicants from any of several countries using an array:

[
{
"key": "allowedApplicantCountries",
"operator": "includes",
"value": ["United States", "United Kingdom"]
}
]

This example will show jobs that allow applicants from either the United States OR the United Kingdom (or both). The job must allow at least one of these countries to be included in the results.

Finding Jobs Open to All Countries

To find jobs that are open to applicants from all countries (no country restrictions):

[
{
"key": "allowedApplicantCountries",
"operator": "equals",
"value": null
}
]

When a job has no country restrictions (allowedApplicantCountries is null), it means the job is open to applicants from any country.

Using Authentication Cookies (Optional)

You do not need to provide cookies anymore – the scraper uses in‑house cookies automatically.

However, if you prefer to use your own Upwork cookies (for example, to see results exactly as a specific account), you still can.

Required Cookies

If you decide to override the in‑house cookies, provide at least these two from your logged‑in Upwork session:

  • master_access_token
  • oauth2_global_js_token

Cookies Format

Provide cookies as an array of objects with this structure:

[
{
"name": "master_access_token",
"value": "your-cookie-value-here"
},
{
"name": "oauth2_global_js_token",
"value": "another-cookie-value"
}
]

Only the name and value fields are required; the others are handled automatically.

Example

{
"query": "web scraping",
"cookies": [
{
"name": "master_access_token",
"value": "ABC123XYZ"
},
{
"name": "oauth2_global_js_token",
"value": "def456uvw"
}
]
}

The scraper supports filtering jobs from various regions and countries:

Regions

  • Africa
  • Americas
  • Antarctica
  • Asia
  • Europe
  • Oceania

Subregions

  • Australia and New Zealand
  • Caribbean
  • Central America
  • Central Asia
  • Eastern Africa
  • Eastern Asia
  • Eastern Europe
  • Melanesia
  • Micronesia
  • Middle Africa
  • Northern Africa
  • Northern America
  • Northern Europe
  • Polynesia
  • South America
  • South-Eastern Asia
  • Southern Africa
  • Southern Asia
  • Southern Europe
  • Western Africa
  • Western Asia
  • Western Europe

Countries

  • Albania
  • Algeria
  • American Samoa
  • Andorra
  • Angola
  • Anguilla
  • Antigua and Barbuda
  • Argentina
  • Armenia
  • Aruba
  • Australia
  • Austria
  • Azerbaijan
  • Bahamas
  • Bahrain
  • Bangladesh
  • Barbados
  • Belgium
  • Belize
  • Benin
  • Bermuda
  • Bhutan
  • Bolivia
  • Bonaire, Sint Eustatius and Saba
  • Bosnia and Herzegovina
  • Botswana
  • Bouvet Island
  • Brazil
  • British Indian Ocean Territory
  • British Virgin Islands
  • Brunei Darussalam
  • Bulgaria
  • Burkina Faso
  • Burundi
  • Cambodia
  • Cameroon
  • Canada
  • Cape Verde
  • Cayman Islands
  • Central African Republic
  • Chad
  • Chile
  • China
  • Christmas Island
  • Cocos (Keeling) Islands
  • Colombia
  • Comoros
  • Congo
  • Congo, the Democratic Republic of the
  • Cook Islands
  • Costa Rica
  • Cote d'Ivoire
  • Croatia
  • Curacao
  • Cyprus
  • Czech Republic
  • Denmark
  • Djibouti
  • Dominica
  • Dominican Republic
  • Ecuador
  • Egypt
  • El Salvador
  • Equatorial Guinea
  • Eritrea
  • Estonia
  • Ethiopia
  • Falkland Islands
  • Faroe Islands
  • Fiji
  • Finland
  • France
  • French Guiana
  • French Polynesia
  • French Southern and Antarctic Lands
  • Gabon
  • Gambia
  • Georgia
  • Germany
  • Ghana
  • Gibraltar
  • Greece
  • Greenland
  • Grenada
  • Guadeloupe
  • Guam
  • Guatemala
  • Guernsey
  • Guinea
  • Guinea-Bissau
  • Guyana
  • Haiti
  • Heard Island and McDonald Islands
  • Holy See
  • Honduras
  • Hong Kong
  • Hungary
  • Iceland
  • India
  • Indonesia
  • Ireland
  • Isle of Man
  • Israel
  • Italy
  • Jamaica
  • Japan
  • Jersey
  • Jordan
  • Kazakhstan
  • Kenya
  • Kiribati
  • Kuwait
  • Kyrgyzstan
  • Laos
  • Latvia
  • Lebanon
  • Lesotho
  • Liechtenstein
  • Lithuania
  • Luxembourg
  • Macao
  • Macedonia
  • Madagascar
  • Malawi
  • Malaysia
  • Maldives
  • Mali
  • Malta
  • Marshall Islands
  • Martinique
  • Mauritania
  • Mauritius
  • Mayotte
  • Mexico
  • Micronesia, Federated States of
  • Moldova
  • Monaco
  • Mongolia
  • Montenegro
  • Montserrat
  • Morocco
  • Mozambique
  • Myanmar
  • Namibia
  • Nauru
  • Nepal
  • Netherlands
  • Netherlands Antilles
  • New Caledonia
  • New Zealand
  • Nicaragua
  • Niger
  • Nigeria
  • Niue
  • Norfolk Island
  • Northern Mariana Islands
  • Norway
  • Oman
  • Pakistan
  • Palau
  • Palestinian Territories
  • Panama
  • Papua New Guinea
  • Paraguay
  • Peru
  • Philippines
  • Pitcairn
  • Poland
  • Portugal
  • Puerto Rico
  • Qatar
  • Reunion
  • Romania
  • Rwanda
  • Saint Barthelemy
  • Saint Helena
  • Saint Kitts and Nevis
  • Saint Lucia
  • Saint Martin (French part)
  • Saint Pierre and Miquelon
  • Saint Vincent and the Grenadines
  • Samoa
  • San Marino
  • Sao Tome and Principe
  • Saudi Arabia
  • Senegal
  • Serbia
  • Seychelles
  • Sierra Leone
  • Singapore
  • Sint Maarten (Dutch part)
  • Slovakia
  • Slovenia
  • Solomon Islands
  • Somalia
  • South Africa
  • South Korea
  • Spain
  • Sri Lanka
  • Suriname
  • Svalbard and Jan Mayen
  • Swaziland
  • Sweden
  • Switzerland
  • Taiwan
  • Tajikistan
  • Tanzania
  • Thailand
  • Timor-Leste
  • Togo
  • Tokelau
  • Tonga
  • Trinidad and Tobago
  • Tunisia
  • Turkey
  • Turkmenistan
  • Turks and Caicos Islands
  • Tuvalu
  • Uganda
  • Ukraine
  • United Arab Emirates
  • United Kingdom
  • United States
  • United States Minor Outlying Islands
  • United States Virgin Islands
  • Uruguay
  • Uzbekistan
  • Vanuatu
  • Venezuela
  • Vietnam
  • Wallis and Futuna
  • Western Sahara
  • Yemen
  • Zambia
  • Zimbabwe

Note: For locations with spaces, enter them exactly as they appear. In the URL, spaces will be encoded as %2520.