Upwork Jobs Scraper - Search & All Current Freelance Jobs
Pricing
from $2.00 / 1,000 results
Upwork Jobs Scraper - Search & All Current Freelance Jobs
Scrape public Upwork freelance jobs from the all-current feed or optional English keywords. Export titles, budget, skills, client signals, and job links with residential-proxy support.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Collect current public Upwork jobs without logging in. Start from the unfiltered all-jobs feed, or narrow the run with optional keywords. Export structured titles, budgets, skills, proposal ranges, and client signals into an Apify Dataset you can download as Excel, CSV, or JSON.
This Actor is a thin Apify client: scraping runs on a worker reached through the control plane. The worker collects every surface — jobs, freelancer profiles, the project catalog, and sitemap enumeration — over a direct HTTP lane that reads Upwork's public server-rendered pages. A browser-based fallback is used only when the direct lane is unavailable. No Apify proxy is needed. Dataset field names for the jobs surface stay compatible with previous builds.
Worker URL is config, not code: the Actor reads
WORKER_BASE_URLfrom Actor environment variables (plus optional per-runworkerBaseUrl). Migrating the worker host means updatingWORKER_BASE_URL(andWORKER_AUTHif the API key changes) in Apify Console — no Actor code change required.
There are no preset search keywords. Empty input means “all current job types on the public search feed.” Optional keywords only apply when you enter them.
Need a dedicated scraper for one website?
This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.
I confirm the tier before you pay. The clock starts after that confirmation.
Start here: Submit a custom scraper request
| Starter $50 | Dedicated $100 | Hard target $200–999 | |
|---|---|---|---|
| Site | 1 simple anti-bot public site | 1 medium anti-bot public site | Cloudflare / aggressive anti-bot / custom parser |
| Scope | Full listing + detail fields | Listing + detail + pagination, your field list | Agreed fields, repeatable runs |
| Delivery | CSV/JSON · Apify Actor or standalone runnable client (script/CLI) | Same, plus a sample run and short instructions | Feasibility first, then build |
| Time | 24 hours after we confirm the URL is in scope | 48 hours after confirmation | Quoted after feasibility |
| Fixes | 30 days for small public-layout changes | 30 days | Scoped in the quote |
Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.
Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.
What you can do with it
1. Pull the latest all-jobs feed for market scanning
In plain English: Watch what freelancers and agencies are hiring for right now — without typing a keyword first.
To run this, all you fill in are a few fields in the Apify input form:
| Field | What to enter |
|---|---|
| Keywords | Leave empty |
| Max items | e.g. 20 |
| Sort | recency |
Click Start. The Actor calls the worker through the control plane. The worker fetches the public Upwork search page over its direct HTTP lane; the Actor writes the newest public listings into a clean table:
| Title | Job type | Budget | Proposals | Client country |
|---|---|---|---|---|
| Go High Level Specialist | hourly | $15–$25/hr | 5 to 10 | United States |
| Real Estate Listing Marketing Strategist | fixed | $500 | Less than 5 | Canada |
Every row has the fields you need for research or outreach lists. Download as Excel, CSV, or JSON, or pipe the Dataset into Make / n8n / Zapier.
Each Dataset row is one billed entity and includes a stable rowType + id.
maxItems is the row budget for each keyword or URL input, not one shared
budget for the whole run. The default is 70. Larger requests are dispatched in
parts of at most 70 rows when the selected surface supports continuation. All
row types share the same per-input budget, and the run still stops at your
maximum total charge. Detail enrichment updates the same job row; it does not
create an extra billed row.
2. Track demand for a niche skill or tool
In plain English: See how many public jobs mention tools like n8n, LangChain, or Shopify — and what clients are offering.
| Field | What to enter |
|---|---|
| Keywords | e.g. n8n automation |
| Max pages per keyword | 1–3 |
| Max items | e.g. 50 |
You get titles, skills, budgets, proposal pressure, and client signals so you can compare niches without manual copying.
3. Build agency lead lists from public budgets and client spend
In plain English: Filter for jobs that show public budget and client country/spend signals, then export for CRM or Sheets.
| Field | What to enter |
|---|---|
| Keywords | Optional niche phrases |
| Scrape details | true when you need extra public detail fields |
| Max detail items | e.g. 5 |
Detail enrichment visits a bounded number of public job pages. It is slower; keep maxDetailItems small on first runs.
4. Feed freelancing alerts into automation tools
In plain English: Run on a schedule and push new Upwork listings into Slack, Telegram, Google Sheets, or a database.
| Platform | How to connect |
|---|---|
| Make.com | Apify → Run Actor → lentic_clockss/upwork-jobs-scraper |
| n8n | Apify node → Run Actor |
| Zapier | Apify integration → Run Actor |
| Python / JS | Apify client SDK (example below) |
5. Compare hourly vs fixed-price competition
In plain English: Capture jobType, rate ranges, fixed prices, and proposal midpoints so you can estimate competition density without opening dozens of browser tabs.
6. Collect other public surfaces
Set collectionSurface to switch away from job search:
collectionSurface | What it collects | Extra fields |
|---|---|---|
jobs (default) | Public job search and optional job detail pages | keywords, scrapeDetails, maxDetailItems |
freelancers | Public freelancer profile pages | profileUrls (only https://www.upwork.com/freelancers/... URLs are kept) |
services | Public project catalog listings | — |
sitemap | Public sitemap URL enumeration | maxShards, maxUrlsPerShard (0 = unlimited) |
maxItems applies to each keyword, profile URL, or category URL. An empty
keyword list is one all-current-jobs input. Job search has a continuation cursor
for requests above one 70-row unit; the current category, services, and sitemap
paths stop after their first unit when no continuation is available.
{"collectionSurface": "freelancers","profileUrls": ["https://www.upwork.com/freelancers/~01abc..."],"maxItems": 3}
More Actors like this
Need another job board or a different vertical? Use a dedicated Actor below for structured fields. Use this Actor for Upwork public freelance job search and the all-current feed.
Similar jobs & freelance Actors
- LinkedIn Jobs Scraper
- Indeed Jobs Scraper
- Glassdoor Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Himalayas Jobs Scraper
- RemoteOK Jobs Scraper
- Jobicy Remote Jobs Scraper
- SEEK Jobs Scraper
- Bayt Jobs Scraper
Prefer another specialized scraper?
If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic scrape.
E-commerce
- Walmart Product Scraper
- Amazon Search Scraper
- Shopee Search Scraper
- Etsy Scraper
- SHEIN Product Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- Apartments.com Rental Scraper
- Rightmove Scraper
- Idealista Scraper
- realestate.com.au Scraper
Travel & Stays
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.
How to use (no code required)
- Click Try for free
- Leave keywords empty for the full public feed, or add up to 10 phrases
- Set maxItems for cost control (start with
5–20) - Click Start and open the Dataset
That's the whole workflow: choose scope, start, download. The free monthly Apify credit is enough for small canaries before you scale.
What you get back
Each Dataset item can include:
- Job identity — job ID, title, description snippet, canonical URL
- Search context — keyword used (
allwhen unfiltered), page, source search URL - Budget — hourly min/max or fixed price when public
- Competition — proposal range text + normalized midpoint
- Skills & level — public skill tags and experience level when present
- Client signals — country, total spend bucket, hire rate, payment-verified flag when public
- Timestamp — collection time
Missing public values stay empty/null. The Actor does not invent data.
Run artifacts in Key-Value Store:
| Artifact | What it is |
|---|---|
INPUT_ECHO | Normalized input (presetKeywords: [], collection scope) |
RUN_SUMMARY | Pages succeeded/blocked, worker lane, counts |
ERROR_SUMMARY | Structured failure if the run cannot collect trustworthy rows |
Data source and boundary
| Mode | Source |
|---|---|
| All current jobs | Public Upwork search feed without q |
| Keyword search | Public Upwork search with optional q |
| Optional details | Public job detail pages (bounded) |
| Freelancer profiles | Public profile pages from profileUrls |
| Project catalog | Public project catalog pages |
| Sitemap enumeration | Public sitemap index and shards |
- Primary path: direct HTTP fetch of public server-rendered pages, run by the worker
- Browser fallback: only when the direct lane is unavailable; no Apify proxy involved
- No login, no messaging, no private account data
- Page structure and anti-bot rules change; start small and keep budgets bounded
Free Apify plan limits (set by this Actor's developer)
| Limit | Free Apify plan | Paid Apify plan |
|---|---|---|
| Runs of this Actor | 10 runs total | Unlimited |
| Dataset rows per run | Up to 200 | Limited by your maximum total charge |
When the run cap is hit, the run finishes with a clear status message — not an Apify platform error.
Pricing
Pay per event. No subscription.
Free Apify plan: up to 10 runs of this Actor and 200 Dataset rows per run. Upgrade to a paid Apify plan for unlimited runs. (Limits set by the Actor developer.)
| Event | Price | When charged |
|---|---|---|
apify-actor-start | $0.005 | Once when a normal run starts |
apify-default-dataset-item | $2.00 / 1,000 ($0.002 each) | Each Dataset item written |
User pays platform usage costs: Yes (for example, Actor compute when platform billing is active). The Actor does not use Apify Proxy.
Real-world examples:
| Scenario | Approx. product charge |
|---|---|
| Canary: 5 jobs | $0.005 + 5 × $0.002 = $0.015 |
| Daily niche scan: 100 jobs | $0.005 + $0.20 = $0.205 |
| 1,000 jobs | $0.005 + $2.00 = $2.005 |
Cost scales mostly with results. Platform compute usage is separate and depends on run duration and memory.
Live View endpoints
When Standby / Live View is enabled, the service exposes a small OpenAPI surface:
| Endpoint | Purpose |
|---|---|
GET / | Readiness |
GET /health | Health |
GET /input-example | Low-cost example input |
GET /openapi.json | Deployed OpenAPI document |
Collection still runs through a normal Actor run — Live View does not scrape Upwork by itself.
Connect from code
Actor ID: lentic_clockss/upwork-jobs-scraper
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("lentic_clockss/upwork-jobs-scraper").call(run_input={"collectionSurface": "jobs","maxItems": 70,"sort": "recency",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("title"), item.get("jobUrl"), item.get("salary"))
Input reference
| Parameter | Type | Default | Description |
|---|---|---|---|
collectionSurface | string | jobs | jobs, freelancers, services, or sitemap. |
keywords | string[] | [] | Optional search phrases (max 10). Empty = all-current feed. |
maxPagesPerKeyword | integer | 1 | Pages per keyword (1–10). |
maxItems | integer | 70 | Max Dataset rows for each keyword or URL input (1–500); UI prefill is 3. Larger requests use units of at most 70 where continuation is supported. All row types share the budget. The run stops at your maximum total charge. Free Apify plan: 200 rows/run and 10 total runs. |
sort | string | recency | recency or relevance. |
scrapeDetails | boolean | true | Jobs surface: enrich from public detail pages. |
maxDetailItems | integer | 5 | Max detail pages when enrichment is on. |
profileUrls | string[] | [] | Freelancer profile URLs; used only when collectionSurface is freelancers. |
categoryUrls | string[] | [] | Freelancer category URLs; used when the freelancers surface has no profile URLs. |
maxShards | integer | 0 | Sitemap shards to read (0–500, 0 = unlimited); sitemap only. |
maxUrlsPerShard | integer | 0 | URLs per sitemap shard (0–10000, 0 = unlimited); sitemap only. |
timeoutSecs | integer | 90 | HTTP request timeout (30–180). |
debug | boolean | false | Bounded diagnostics only (no raw HTML stored). |
workerBaseUrl | string | (env) | Optional override, restricted to this Actor's control-plane entry point. Default: Actor env WORKER_BASE_URL. |
A legacy proxyConfiguration block is still accepted for old inputs but is ignored; the worker does not use an Apify proxy.
FAQ
Do I need an Upwork account?
No. The Actor only reads public pages.
Are there preset keywords?
No. Empty keywords collect the unfiltered public feed.
Do I need a proxy?
No. The worker reads public server-rendered pages over its own direct HTTP lane. Any proxyConfiguration in old inputs is ignored.
What if a page is blocked?
The run fails closed when it cannot produce trustworthy rows. It does not fake an empty success after hard blocks.
Can I scrape private proposals or messages?
No.
How fresh is the data?
As fresh as the public search page at run time.
I'm on the free Apify plan — are there limits?
Yes. Free Apify plan users get 10 runs of this Actor and up to 200 Dataset rows per run. These limits are set by the Actor developer (not Apify). When you hit the run cap, the run finishes with a clear status message — it is not a platform bug. Upgrade to a paid Apify plan for unlimited runs.
When to use something else
| If you need… | Use something else |
|---|---|
| RemoteOK / Himalayas / Jobicy job boards | Our dedicated job-board Actors |
| Applying to jobs or messaging clients | Manual Upwork or official APIs |
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss