Upwork Job Scraper
Pricing
from $35.00 / 1,000 job returneds
Upwork Job Scraper
Scrape Upwork job search results by keyword or search URL, with title, budget, skills and client country, spend and verification status. Works with Apify MCP and the API.
Pricing
from $35.00 / 1,000 job returneds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Upwork Job Scraper — Keyword & URL Job Search
Upwork Job Scraper helps freelancers, agencies, and AI agents pull structured Upwork job-search rows — title, budget, skills, client country/spend/verified status, proposal counts, and permalinks — from keywords or Upwork nx/search/jobs URLs. It runs on Apify (API, schedules, integrations, MCP) so you can monitor niches without manual browsing.
This Actor uses a managed authenticated Upwork access route (account-backed nested provider). Optional caller session cookies can be supplied for a single run; they stay out of the dataset, OUTPUT, and logs.
Upwork is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by Upwork Global Inc.
Best fit
Use this Actor when you need fresh Upwork job cards for monitoring, lead lists, or agent workflows. For multi-board aggregation across Indeed/LinkedIn/Glassdoor, route to Jobs Scraper (multi-board). For Indeed-only detail enrichment, use Indeed Job Scraper (Indeed detail). For Google Jobs SERP cards, use Google Jobs Scraper (Google Jobs SERP).
Workflow story
A freelance agency lead wants new javascript developer posts on a schedule. They save this Actor with searchQueries: ["javascript developer"], sortBy: "recency", and a bounded maxResults. Each execution returns normalized rows with budget and client spend, then Zapier/Make filters payment-verified clients into Slack. When the niche is quiet, the Actor completes with VALID_EMPTY and zero job charges instead of inventing rows.
How to scrape Upwork jobs
- Open this Actor in Apify Console
- Enter one or more
searchQueriesor an Upworknx/search/jobsURL instartUrls - Set
maxResultsfor the quality sample - Start the Actor — download JSON / CSV / Excel from the dataset
Input
See the Input tab. Provide at least one keyword or a valid Upwork search URL.
{"searchQueries": ["javascript developer"],"maxResults": 5,"maxPagesPerQuery": 1,"sortBy": "recency","jobType": "all","experienceLevel": "all","paymentVerified": false}
Optional secret field cookies: JSON array of {"name","value"} session cookies for this run only (excluded from dataset and OUTPUT).
Output
One dataset row per job:
{"jobId": "~022100516022389626945","title": "Looking for Skilled AI Engineers","jobUrl": "https://www.upwork.com/jobs/Looking_~022100516022389626945/","description": "Build agents...","jobType": "Hourly","budget": "$15-$55 / hr","hourlyRange": { "min": 15, "max": 55, "currency": "USD" },"experienceLevel": "Expert","postedAt": "2026-01-15T12:00:00.000Z","skills": ["Node.js", "AI"],"clientCountry": "United Arab Emirates","clientPaymentVerified": true,"clientSpend": 1200,"source": "neatrat-managed"}
Data fields
| Field | Description |
|---|---|
| jobId | Upwork ciphertext id (~…) |
| title / jobUrl / description | Core posting |
| jobType / budget / hourlyRange / fixedPrice | Compensation |
| experienceLevel / duration / engagement | Scope labels |
| postedAtRaw / postedAt | Relative + ISO timestamps |
| skills / proposalsRange / connects | Marketplace signals |
| clientCountry / clientCity / clientPaymentVerified / clientSpend / clientRating / clientHires | Client signals |
Pricing
Monetization is Pay per event + platform usage (usage paid by the run user). The live Pricing tab in Apify Console is the current source of truth for event prices.
Typical events:
| Event | Role |
|---|---|
apify-actor-start | Synthetic start event |
job-found | Primary event — one charge per unique job row |
Invalid inputs and empty matches skip the job-event charge.
API example
curl "https://api.apify.com/v2/acts/khadinakbar~upwork-job-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries":["javascript developer"],"maxResults":5,"sortBy":"recency"}'
MCP / agent prompt card
Tool: apify--upwork-job-scraper
Example request:
Search Upwork for recent javascript developer jobs and return title, budget, skills, clientPaymentVerified, and jobUrl. Cap results with maxResults.
After completion: read the default dataset, confirm OUTPUT.outcome is COMPLETE or VALID_EMPTY, and reconcile job-found charges with row count. Provenance is the managed authenticated Upwork route (source: neatrat-managed). Scope is public job-search cards — not proposals, messages, or private client PII. Paginate with maxPagesPerQuery only when you need depth beyond the first page.
Limits and recovery
Provide specific keywords or a valid Upwork search URL. Confirm OUTPUT.outcome after each execution. Schedule monitoring with bounded maxResults. Source data is current public job-search cards via the managed authenticated route.
Best results
- Prefer specific niche keywords over broad terms
- Use
sortBy: recencyfor monitoring pipelines - Cap
maxResultsfor cost control - Treat
VALID_EMPTYas a real no-match
Builder's note
I built this Actor after cookieless browser routes stalled on Upwork's protected public HTML. I found the reliable product path is a managed authenticated nested Store Actor billed with an owner token, with optional caller cookies forwarded when supplied. My goal was margin-safe PPE after provider cost and Apify’s share.
Legal disclaimer
This Actor retrieves Upwork job listings through a managed authenticated access route for legitimate market research, lead generation, and personal job monitoring. You are responsible for complying with Upwork's Terms of Service, applicable laws, and your own data-use policies. Use this tool for lawful research and monitoring that respects Upwork's Terms of Service, applicable laws, and your own data-use policies. The authors are not affiliated with Upwork.
Support
Open an issue on the Actor's Issues tab. Sibling routing is covered in Best fit above.