Upwork Job Scraper: Job Posts for Leads & SaaS Ideas avatar

Upwork Job Scraper: Job Posts for Leads & SaaS Ideas

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Upwork Job Scraper: Job Posts for Leads & SaaS Ideas

Upwork Job Scraper: Job Posts for Leads & SaaS Ideas

Scrape Upwork job posts by keyword with Upwork's own filters: experience level, budget type, workload, client hires, duration and proposal count. Each row has the job ID, title and full description, ready for lead lists, rate checks and LLM prompts. No login. Export to CSV, Excel, JSON or API.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

Epic Scrapers

Epic Scrapers

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 days ago

Last modified

Share

Upwork Job Scraper: export Upwork job posts for leads, rate checks and SaaS ideas

Upwork Job Scraper turns Upwork job searches into a dataset of job titles and descriptions. Each post is a client describing a problem in their own words, so a few hundred rows give you demand signals for market research, rate checks, lead lists and LLM prompts. It is for freelancers, agencies, founders and analysts.

  • Only the fields that carry signal. Every row has id, title and description. Nothing to strip out before you paste into a prompt.
  • Upwork's own filters. Experience level, job type, weekly workload, client hiring history, duration, contract-to-hire, proposal count and repeat clients.
  • Three sort orders. Most relevant, newest, or highest budget.
  • Up to 5,000 jobs per run. Start with 10 to test your filters.
  • Live results. Every run searches Upwork at that moment, so a scheduled run picks up posts from the last few hours.
  • Pay per job, no login. No Upwork account, cookies or API key. Export to JSON, CSV, Excel or Google Sheets, or call it from an AI agent through the Apify MCP server.

Scope: This Actor returns job titles and descriptions only. It does not return budgets, client details or proposal counts as fields. For remote company jobs use WeWorkRemotely Jobs Scraper. For app-store and business-for-sale research see Whop App Store Scraper and Flippa Scraper.

What can you do with Upwork Job Scraper?

GoalHow
Find product and SaaS ideasCollect 500 or more description values and ask an LLM to cluster them by problem.
Find low-competition gigsSet proposals to 0-4 and sort by recency+desc, then run on a schedule.
Watch demand for a skillRun the same query weekly and count new id values.
Build agency lead listsSearch services you sell and read description for the client's need.
Benchmark ratesSort by budget+desc, combine contractorTier and jobType, and read the amounts in description.
Feed an AI agentCall the Actor through Apify MCP and pass title and description straight to the model.

How it compares

What you needUpwork Job ScraperManual search and copy-pasteOfficial Upwork API
Account or loginNoneOften needed to see moreOAuth and an approved app
Bulk exportUp to 5,000 jobs per runSlowYes, within account limits
FiltersUpwork search filtersYesDepends on the API
Output sizeThree fieldsWhole pageFull records
PricePay per jobYour timeFree with access

Quick start

  1. Click Try for free and sign in to Apify.
  2. Enter a query, for example react developer.
  3. Set maxResults to 10.
  4. Click Start and open the Output tab.

Input

{
"query": "react developer",
"sort": "recency+desc",
"maxResults": 50,
"contractorTier": ["Intermediate", "Expert"],
"jobType": ["fixed", "hourly"],
"proposals": ["0-4", "5-9"],
"previousClients": true
}
FieldTypeDefaultEffect
queryStringEmptySearch keywords. Empty browses all jobs.
sortStringrelevance+descrelevance+desc, recency+desc or budget+desc.
maxResultsInteger101 to 5,000 jobs.
contractorTierArrayEmptyEntry, Intermediate or Expert.
jobTypeArrayEmptyFixed price, hourly or weekly retainer.
workloadArrayEmptyPart time, full time, as needed or not specified.
clientHiresArrayEmptyClient's past hires: 0, 1-9 or 10-.
durationArrayEmptyUnder 1 month up to ongoing.
contractToHireBooleanfalseOnly contract-to-hire jobs.
previousClientsBooleanfalseOnly clients who have hired on Upwork before.
proposalsArrayEmptyProposal ranges such as 0-4, 5-9, 10-14, 15-19, 20-49.

Allowed values for each filter are listed in the input form.

Output

{
"id": "2072993847889702808",
"title": "Build AI Lead Generation + Verification Workflow in Google Sheets/Airtable",
"description": "We need someone to help build a simple AI-assisted lead generation + verification workflow.\n\nThis is not meant to be a large custom software project."
}
  • id is Upwork's job identifier. Use it to deduplicate across runs.
  • title and description are plain text with Upwork's markup artifacts removed.
  • Budget and rate details appear only if the client wrote them in the description.

Track Upwork jobs over time with scheduled runs

Run the same search on a schedule to catch new job posts quickly. Apify can run the Actor for you and send the results wherever you need them.

1. Save your input as a task

Open the Actor, set your keywords and options, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule.

2. Schedule the task

In Apify Console, go to Schedules, click Create new, choose how often to run (for example daily at 06:00 in your time zone), and add your task. See Schedules and How to create a schedule.

Watch how to schedule an Actor:

Or schedule a saved task:

Common schedules:

Use caseFrequencyCron expression
Lead alerts for new postsTwice a day0 6,18 * * *
Daily market researchDaily0 6 * * *
Weekly demand trendsWeekly (Monday)0 6 * * 1

3. Send the results to a spreadsheet

Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically:

4. Compare runs

  • New jobs: ids that appear for the first time. Deduplicate on id across runs.
  • Demand trend: count of rows per run for the same keywords.
  • Topic shifts: keywords in title and description over time.

FAQ

How many jobs can I get?

Up to 5,000 per run. Upwork limits how deep a single search goes, so for more, run several queries and merge by id.

Why did I get fewer jobs than maxResults?

Narrow filters or a rare query can match fewer jobs than you asked for. Remove a filter or broaden the query.

Do I need an Upwork account or proxy?

No account, cookies or API key. The Actor handles its own proxy use.

What happens if Upwork blocks a request?

Upwork sits behind Cloudflare, which blocks some IP addresses. The Actor then retries with a new residential IP, up to 10 times, and logs a warning for each retry. You don't need to set up a proxy.

How is this different from the Upwork API?

The official API needs OAuth and an approved app and is built for account holders. This Actor reads public search results and returns three fields.

Can I use it with AI agents?

Yes. Connect to the Apify MCP server at https://mcp.apify.com, find epicscrapers/upwork-scraper-mcp and run it with the input above.

The Actor collects public job posts. You are responsible for complying with Upwork's terms and local law.

Cost

Pay per event: a small start fee per run plus a fee per job saved. Rates depend on your Apify plan.

PlanStart feePer job100 jobs1,000 jobs
Free$0.05$0.005$0.55$5.05
Bronze$0.01$0.001$0.11$1.01

Higher plans pay less per job, down to $0.0008. See the Pricing tab for current rates.

Support

Found a problem? Open an issue in the Issues tab and include the run ID and your input.

This Actor is not affiliated with, endorsed by or sponsored by Upwork Inc. All trademarks belong to their owners.