image
Coin

1

free
new

Upwork Jobs Scraper

Scrape every job from any Upwork search50 data points on the brief, the budget & the client.

Download sample

Trusted worldwide by the best

Export jobs from Upwork — right now

Extract

Paste an Upwork jobs search URL — or just a keyword — and get every job with 50 data points: the full brief, the fixed budget or hourly range, the duration, the weekly workload, the experience level, the skill list and the client behind it.

image

Schedule

Automate Upwork data collection on daily, weekly, or monthly schedules.

image

Export

Export all job data to Google Sheets, email, or S3 — fully automated.

image

Built for Agents

Run it from your stack.
Or hand it to your agent.

Upwork Jobs Scraper ships with a Python SDK, a one-line CLI and a native MCP server your agents can plug into directly — no rate limits to dodge, no bot mitigation to bypass, no parsing errors to chase down.

# install once (Python 3.10+)
pip install lobstrio

# check your token
lobstr whoami

# find the scraper
lobstr crawlers search "Upwork"

# one call — launch, wait, download
lobstr go upwork-jobs-scraper \
  "<any Upwork URL>" \
  --param max_results=200 \
  -o results.csv

50 data attributes per job

Every scrape returns structured data you can export as CSV, JSON, or via API.

Job Id

Unique Upwork job posting identifier.

2090087423123075346
Export Jobs
url

Direct URL to the job posting on Upwork.

Export Jobs
ciphertext

Upwork's public job reference (the `~02...` token used in job URLs).

~022090087423123075346
Export Jobs
title

Job title.

Python Dev
Export Jobs
description

Full job description as posted.

We are seeking a skilled Python developer to create a web scraper using Scrapy.
Export Jobs
Posted At

Date and time the job was published, in UTC.

Aug 19, 2026
Export Jobs
Job Created At

Date and time the job was created by the client, in UTC (usually a few minutes before it was published). Named `job_created_at` to stay clear of the exporter’s own row-timestamp columns.

Aug 19, 2026
Export Jobs
Job Type

`Hourly` or `Fixed-Price`.

Hourly
Export Jobs
budget

Human-readable budget exactly as the module emits it: a plain fixed price ("100", "500"), an hourly range ("15-35/hr", "15-/hr" when only one side is set) or a weekly retainer ("800/week"). No currency symbol - see `currency`.

15-35/hr
Export Jobs
Budget Amount

Fixed-price budget as a number. Empty on hourly jobs.

150
Export Jobs
image

Fast

800 jobs per minute
Lightning-fast performance

image

Solid

99.95% task success rate
Dependable, reliable data every time

image

Cost-competitive

$0.5 per 1000 jobs
Top affordability worldwide

Live

Built to run.

Most scrapers break in silence. This one doesn't — and we show it, openly.

100.00%

incident-free runs · last 90 days

0
incidents · 90 days
100%
resolved
median time to fix
90 days agoToday
Operational
Degraded
Down
Resolved incident
Open incident
How we measure →

Tracked from every run. Incidents stay on the record even after they're fixed.

Simulator plan

Trusted by the best

Used obsessively by the data-hungry around the world

★★★★★
★★★★★
★★★★★
★★★★★
★★★★★
★★★★★

Frequently Asked Questions

Is it legal to scrape Upwork jobs?

Yes — a brief posted in public is public data. Everything we collect is what any visitor can read on Upwork without signing in. More in our guide to the legality of web scraping.

Do I need an Upwork account?

No login required. No account to sync, no cookie to paste, no Chrome extension — and no Upwork account of yours to put at risk. Paste a search and go, which is rarer than it sounds on a marketplace this well guarded.

What data do I get for each job?

50 data points per job. Title, the full brief, when it went live, fixed budget or hourly range, duration, weekly workload, experience level, the complete skill list, how many freelancers are wanted — and the client behind it when Job Details is on.

How fast is it?

About 800 jobs a minute. Switch on Job Details and it settles at roughly 10 a minute — that is the price of the client block. Keep it for shortlists, leave it off when you are sweeping a whole category.

Where do the jobs end up once they are scraped?

Wherever you already work. Google Sheets, Make, n8n, Amazon S3, email, webhooks — plus our MCP server, so Claude or ChatGPT can launch a run and read the results itself. CSV, Excel and JSON too. See all integrations.

What does Job Details add, and what does it cost?

1 extra credit per job, and it roughly doubles the export. You get the client behind the brief — country, total spent, rating, reviews, hires, payment verification, member since — plus the exact proposal count and the applicant requirements. 31 columns become 64.

Can I filter which jobs get collected?

Yes — and the jobs you filter out cost you nothing. Category, hourly or fixed, budget range in dollars, experience level, the client's hiring history, the client's country and how recently it was posted. Whatever your URL already sets is left alone.

Do I get the budget for each job?

Yes, in fields you can actually sort on. Fixed-price jobs bring the budget amount, hourly jobs a minimum and a maximum rate, and every job carries the figure Upwork displays, the currency and whether it is hourly or fixed.

Can I collect only the jobs posted recently?

Yes — set a Newer Than threshold. Give it 24h, 7d, 2w or an exact date in your own timezone, and the search flips to newest-first and stops the moment it reaches older jobs. A daily re-run of the same search costs almost nothing.

Do I need a search URL, or will a keyword do?

All three work. An Upwork search URL with your filters, a plain keyword like python developer, or the link to one posting if you only want that job. Feed it a single job link and Job Details comes free.

Ready to get started?

Export your first jobs for free.

Contact sales