Upwork Jobs Scraper - $0.5 per 1k avatar

Upwork Jobs Scraper - $0.5 per 1k

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Upwork Jobs Scraper - $0.5 per 1k

Upwork Jobs Scraper - $0.5 per 1k

Scrape job listings from Upwork search results by URL or filters. Export titles, descriptions, budgets, skills, experience level and more to JSON, CSV or Excel.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Curious Coder

Curious Coder

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Upwork Job Scraper

Collect job listings from Upwork search results — no login, no manual copy‑pasting. Give it an Upwork search URL or pick a few filters, and the scraper returns clean, structured job data ready to export as JSON, CSV, or Excel.

Great for freelancers tracking new opportunities, agencies building lead lists, and analysts researching the freelance market.

What you can do

  • 🔎 Scrape jobs from any Upwork search — just paste the search URL from your browser.
  • 🎛️ Or build a search right here using simple filters (keyword, budget, experience level, and more).
  • 📄 Get the full job details: title, description, budget, required skills, experience level, and post date.
  • 🔗 Get a direct link to every job.
  • 📊 Export to JSON, CSV, Excel, or push the data to your own apps.
  • 🔁 Run it on a schedule to catch new jobs automatically.

How to use it

  1. Click Try for free.
  2. Either:
    • paste one or more Upwork search URLs into Search URLs, or
    • type a keyword and choose any filters you want.
  3. Set Max jobs (how many results to collect).
  4. Click Start and download your results when the run finishes.

Getting a search URL (easiest method)

  1. Go to upwork.com/nx/search/jobs and search as you normally would.
  2. Apply any filters you like (job type, budget, experience level, client location…).
  3. Copy the full address from your browser's address bar and paste it into Search URLs.

Every filter you set on Upwork is kept in that URL, so the scraper returns exactly what you see on the site.

Input

You can use search URLs, filters, or both. Filters are only needed if you don't provide a URL.

FieldDescription
Search URLsOne or more Upwork job‑search URLs copied from your browser.
Search keywordFree‑text keyword (e.g. react native, logo design).
Sort byMost recent or most relevant.
Job typeHourly, fixed price, or weekly retainer.
Experience levelEntry level, intermediate, or expert.
Hourly rate rangeClient's hourly budget, e.g. 10-50 (or 20- for $20+).
Fixed‑price budgetBudget brackets, e.g. under $100 up to $5,000+.
Client hiresFilter by how many people the client has hired before.
Client location(s)Regions or countries, e.g. Americas, Oceania.
Project durationLess than a month up to 6+ months.
WorkloadAs needed, part time, or full time.
Contract‑to‑hire onlyOnly show contract‑to‑hire roles.
Payment‑verified clients onlyOnly show jobs from payment‑verified clients.
Max jobsHow many jobs to collect (0 = as many as available).

Example input

{
"startUrls": [
"https://www.upwork.com/nx/search/jobs/?q=full%20stack&sort=recency&t=0,1&contractor_tier=2,3"
],
"maxItems": 100
}

Or with filters instead of a URL:

{
"searchQuery": "react native",
"jobType": ["1"],
"experienceLevel": ["3"],
"fixedBudget": ["500-999", "1000-4999"],
"sort": "recency",
"maxItems": 50
}

Output

Each job is saved as one record. Example:

{
"id": "2070162917228783082",
"url": "https://www.upwork.com/jobs/~022070162917228783082",
"title": "React TypeScript Developer / Full Stack Web App",
"description": "We're looking for an experienced developer to build…",
"jobType": "FIXED",
"contractorTier": "ExpertLevel",
"hourly": null,
"fixedPrice": { "amount": "1360.0", "currency": "USD", "duration": "Less than 1 month" },
"skills": ["React", "TypeScript", "Node.js", "Web Development"],
"publishTime": "2026-06-25T15:14:18.014Z",
"createTime": "2026-06-25T15:11:16.284Z",
"searchUrl": "https://www.upwork.com/nx/search/jobs/?q=full%20stack&sort=recency",
"scrapedAt": "2026-06-25T15:33:35.349Z"
}
FieldDescription
titleJob title
urlDirect link to the job on Upwork
descriptionFull job description
jobTypeHOURLY, FIXED, or weekly retainer
contractorTierExperience level required (Entry / Intermediate / Expert)
hourlyHourly budget range, engagement type, and duration (for hourly jobs)
fixedPriceAmount, currency, and duration (for fixed‑price jobs)
skillsSkills requested for the job
publishTime / createTimeWhen the job was posted
searchUrlThe search this job came from
scrapedAtWhen the record was collected

Tips

  • Get more results per keyword by sorting by Most recent and running on a schedule, so you keep catching newly posted jobs.
  • Combine searches by adding several URLs at once — all results land in the same dataset.
  • Export anywhere — download as Excel/CSV/JSON from the run, or connect the dataset to Make, Zapier, Google Sheets, and more.

FAQ

Do I need an Upwork account? No. The scraper reads publicly visible job listings.

Will it return every matching job? It collects up to Max jobs, within the number of results Upwork makes available for a search. Narrow your filters to focus on the most relevant jobs.

Is scraping Upwork allowed? Only collect publicly available data and use it responsibly, in line with Upwork's terms and applicable laws.