Upwork Jobs Scraper - Search & All Current Freelance Jobs avatar

Upwork Jobs Scraper - Search & All Current Freelance Jobs

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Upwork Jobs Scraper - Search & All Current Freelance Jobs

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

kane liu

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

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.

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.

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:

FieldWhat to enter
KeywordsLeave empty
Max itemse.g. 20
Sortrecency

Click Start. The Actor opens the public Upwork search surface, solves the Cloudflare challenge path, and writes the newest public listings into a clean table:

TitleJob typeBudgetProposalsClient country
Go High Level Specialisthourly$15–$25/hr5 to 10United States
Real Estate Listing Marketing Strategistfixed$500Less than 5Canada

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.

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.

FieldWhat to enter
Keywordse.g. n8n automation
Max pages per keyword13
Max itemse.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.

FieldWhat to enter
KeywordsOptional niche phrases
Scrape detailstrue when you need extra public detail fields
Max detail itemse.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.

PlatformHow to connect
Make.comApify → Run Actor → lentic_clockss/upwork-jobs-scraper
n8nApify node → Run Actor
ZapierApify integration → Run Actor
Python / JSApify 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.

How to use (no code required)

  1. Click Try for free
  2. Leave keywords empty for the full public feed, or add up to 10 phrases
  3. Set maxItems for cost control (start with 520)
  4. Keep Apify RESIDENTIAL proxy enabled (required)
  5. 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.

Owner / operator note: configure the CAPSOLVER_API_KEY secret once in Actor settings. Never put the key in run input.

What you get back

Each Dataset item can include:

  • Job identity — job ID, title, description snippet, canonical URL
  • Search context — keyword used (all when 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:

ArtifactWhat it is
INPUT_ECHONormalized input (presetKeywords: [], collection scope)
RUN_SUMMARYPages succeeded/blocked, proxy mode, counts
ERROR_SUMMARYStructured failure if the run cannot collect trustworthy rows

Data source and boundary

ModeSource
All current jobsPublic Upwork search feed without q
Keyword searchPublic Upwork search with optional q
Optional detailsPublic job detail pages (bounded)
  • Browser path: Patchright Chrome + sticky Apify RESIDENTIAL proxy
  • Cloudflare Challenge solving: CapSolver AntiCloudflareTask (same sticky proxy + user agent)
  • No login, no messaging, no private account data
  • Page structure and anti-bot rules change; start small and keep budgets bounded

Pricing

Pay per event. No subscription.

EventPriceWhen charged
apify-actor-start$0.005Once 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 (compute, residential proxy, etc. billed to the user when platform billing is active).

Real-world examples:

ScenarioApprox. 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 usage (especially residential proxy) is separate and depends on run duration/memory.

Live View endpoints

When Standby / Live View is enabled, the service exposes a small OpenAPI surface:

EndpointPurpose
GET /Readiness
GET /healthHealth
GET /input-exampleLow-cost example input
GET /openapi.jsonDeployed 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 ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("lentic_clockss/upwork-jobs-scraper").call(
run_input={
"maxItems": 20,
"sort": "recency",
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US",
},
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("title"), item.get("jobUrl"), item.get("salary"))

Input reference

ParameterTypeDefaultDescription
keywordsstring[][]Optional search phrases (max 10). Empty = all-current feed.
maxPagesPerKeywordinteger1Pages per keyword (1–10).
maxItemsinteger20Max deduplicated jobs (1–500).
sortstringrecencyrecency or relevance.
scrapeDetailsbooleanfalseEnrich from public detail pages.
maxDetailItemsinteger5Max detail pages when enrichment is on.
proxyConfigurationobjectRESIDENTIAL USApify RESIDENTIAL sticky proxy required.
timeoutSecsinteger90Browser navigation timeout (30–180).
debugbooleanfalseBounded diagnostics only (no raw HTML stored).

Aliases such as putting CapSolver keys in input are not supported. Use the Actor secret CAPSOLVER_API_KEY.

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.

Why is residential proxy required?
Upwork is protected by Cloudflare. CapSolver Challenge solving and the browser must share a sticky Apify RESIDENTIAL session.

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.

When to use something else

If you need…Use something else
RemoteOK / Himalayas / Jobicy job boardsOur dedicated job-board Actors
Freelancer profile / portfolio mining at scaleA profile-focused scraper
Applying to jobs or messaging clientsManual Upwork or official APIs

→ Browse all tools: apify.com/lentic_clockss