Upwork Job Scraper: Job Posts for Leads & SaaS Ideas
Pricing
from $0.80 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
8 days ago
Last modified
Categories
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,titleanddescription. 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?
| Goal | How |
|---|---|
| Find product and SaaS ideas | Collect 500 or more description values and ask an LLM to cluster them by problem. |
| Find low-competition gigs | Set proposals to 0-4 and sort by recency+desc, then run on a schedule. |
| Watch demand for a skill | Run the same query weekly and count new id values. |
| Build agency lead lists | Search services you sell and read description for the client's need. |
| Benchmark rates | Sort by budget+desc, combine contractorTier and jobType, and read the amounts in description. |
| Feed an AI agent | Call the Actor through Apify MCP and pass title and description straight to the model. |
How it compares
| What you need | Upwork Job Scraper | Manual search and copy-paste | Official Upwork API |
|---|---|---|---|
| Account or login | None | Often needed to see more | OAuth and an approved app |
| Bulk export | Up to 5,000 jobs per run | Slow | Yes, within account limits |
| Filters | Upwork search filters | Yes | Depends on the API |
| Output size | Three fields | Whole page | Full records |
| Price | Pay per job | Your time | Free with access |
Quick start
- Click Try for free and sign in to Apify.
- Enter a query, for example
react developer. - Set maxResults to
10. - 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}
| Field | Type | Default | Effect |
|---|---|---|---|
query | String | Empty | Search keywords. Empty browses all jobs. |
sort | String | relevance+desc | relevance+desc, recency+desc or budget+desc. |
maxResults | Integer | 10 | 1 to 5,000 jobs. |
contractorTier | Array | Empty | Entry, Intermediate or Expert. |
jobType | Array | Empty | Fixed price, hourly or weekly retainer. |
workload | Array | Empty | Part time, full time, as needed or not specified. |
clientHires | Array | Empty | Client's past hires: 0, 1-9 or 10-. |
duration | Array | Empty | Under 1 month up to ongoing. |
contractToHire | Boolean | false | Only contract-to-hire jobs. |
previousClients | Boolean | false | Only clients who have hired on Upwork before. |
proposals | Array | Empty | Proposal 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."}
idis Upwork's job identifier. Use it to deduplicate across runs.titleanddescriptionare 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 case | Frequency | Cron expression |
|---|---|---|
| Lead alerts for new posts | Twice a day | 0 6,18 * * * |
| Daily market research | Daily | 0 6 * * * |
| Weekly demand trends | Weekly (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 onidacross runs. - Demand trend: count of rows per run for the same keywords.
- Topic shifts: keywords in
titleanddescriptionover 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.
Is scraping Upwork legal?
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.
| Plan | Start fee | Per job | 100 jobs | 1,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.
Related Actors
- WeWorkRemotely Jobs Scraper: remote company jobs.
- Whop App Store Scraper: digital product and app research.
- Flippa Scraper: online businesses for sale.
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.