Upwork Jobs Scraper

A whole search of jobs,
as rows you can sort.

Paste an Upwork job-search URL and get the postings back as rows: the title, a link to the posting, when it went up, the budget, whether it is fixed-price or hourly, the experience level asked for, how many proposals it has already drawn, the skill tags and the full description. Sorted by relevance or by recency, your choice.

one-time 500 free rows$0.002 per row after10 columnsCSV · XLSX · JSON
How it works

A search URL in,
its postings out.

The input is the search, not the job - you build the query on Upwork the way you always would, then hand us the URL instead of scrolling it.

  1. STEP 1Sign in to the platform.
  2. STEP 2Open the Upwork Jobs Scraper.
  3. STEP 3Paste Upwork job-search URLs, one per line - or upload a CSV, XLSX, TXT or Parquet file.
  4. STEP 4Set a limit per query, or leave it at zero to take everything.
  5. STEP 5Pick a sort order and choose your output format.
  6. STEP 6Click Get Data.

One row per posting, tagged with the search it came from - so a run across a dozen skill queries still reconciles back to your input list.

Why teams use it

The market for a skill,
in one file.

You already know the query

Every filter Upwork gives you - keywords, category, budget, level - is already encoded in the search URL. Build the search on the site, paste the address here, and the scraper honours exactly the query you built. Nothing new to learn.

A moment in the market, repeatable

One run is a snapshot of what clients are asking for and what they will pay. Run the same searches weekly and the file becomes a series - which skills are appearing more often, and how the budgets attached to them move.

Sorted and capped before it runs

Choose relevance or most-recent, cap the rows per query, or walk a search from its oldest posting forward. Decisions made on the job rather than in a spreadsheet afterwards.

What you get back

Ten columns,
one row per posting.

What the search results page shows about each job, flattened into a row: how it is titled and where it lives, when it went up, what the client will pay and on what basis, the experience level they asked for, how much competition the posting has already attracted, the skill tags, and the description in full.

One thing we would rather set straight than let you discover. This page lists the ten columns by name and says what each field is, and it stops there - it does not tell you how posted is formatted, whether proposals arrives as a number or a band, or which words job_type and experience_level use. Those are answers a real export gives, and we would rather publish nothing than publish a guess dressed up as a specification. Run a small free-tier job on your own search: the header row and the first few rows of that file are the definitive answer for the query you actually care about.

Data dictionary

Ten columns,
named and nothing more.

The export's header row, in order. Descriptions say what each field is on an Upwork posting; they deliberately claim nothing about its format - see the note underneath.

query
The Upwork search URL you submitted, repeated on every row that came from it.
title
The job title, as the client wrote it.
url
Link to the posting on Upwork.
posted
When the job was published.
budget
What the client says they will pay. Upwork shows this as a fixed price on some postings and an hourly range on others, so expect both shapes in one file.
job_type
Whether the job is fixed-price or hourly.
experience_level
The experience level the client asked for.
proposals
How much competition the posting has already attracted.
skills
The skill tags attached to the posting. More than one per job, so expect several values in the cell.
description
The job description, as written. The longest field by far - mind the column width when you open the file.

Names, not formats. The ten column names above are corroborated by two independent sources, so you can write your header mapping against them today. What is deliberately missing is everything a description could get wrong: no types, no date or currency formats, no enumerated values for job_type or experience_level, and no note on whether proposals is a count or a band. A free-tier run over your own search answers all of those in one file, and it answers them for your query rather than for somebody else's.

Run controls

Set on the job,
not in the spreadsheet.

The search URL carries your filters. These decide how much of it you take, in what order, and how you hand the list over.

upwork.com/nx/search/jobs/… Sort: Relevance Sort: Most recent Limit per query Oldest first Paste one per line CSV upload XLSX upload TXT upload Parquet upload One row per posting
Common workflows

Three jobs people
most often run here.

A few examples of what a table of job postings is actually good for.

Pricing

Find out what the work pays

Pull every posting for the skill you sell and read the budgets together. A hundred rows tell you more about the going rate than a week of scrolling, and they tell it to you in a form you can put in a deck.

Freelance · Agency
Demand

Watch a skill rise or fade

Run the same searches on a schedule and count the postings each week. Which tools clients are asking for, and which have stopped appearing, is a leading indicator worth having before you invest in learning one.

Strategy
Research

Map a category end to end

Take a dozen related searches and export the lot. Job types, experience levels, budgets and skill tags in one file let you describe a market with evidence rather than impressions.

Research
Pricing

Pay only for the postings
you actually pull.

No subscription, no minimum, no recurring bill. Your first 500 rows are on us - after that, pay-as-you-go at the same flat rate as every other scraper here.

Free tier

500 free rows - $0

Every new account, one-time. No credit card required. Sorting, per-query limits, file upload and every export format included.

$0 forever
Pay-as-you-go

$0.002 per row, after the free tier

Roughly $2 per 1,000 postings. The pre-flight estimator shows the row count and credit cost before a run starts - no surprise bills, no compute units to translate.

Most popular
Volume

Custom · high volume

Volume pricing, dedicated workers and an SLA for tracking many searches on a schedule. Tell us your numbers and we will quote.

Talk to us
10% off your first paid run.Use code LIVESCRAPER10 at checkout.
Sign up
Pairs well with

The work being outsourced,
and the rest of the market.

An Upwork posting does not name the client, so there is no join to make here. These two cover the parts of the hiring picture this dataset cannot.

The legal bit

Is it legal to scrape
Upwork job postings?

Short answer: yes for the public posting - and a job advert is business information, not somebody's profile.

Everything collected here appears on a public Upwork search results page: the title, the link, the posting date, the budget, the job type, the experience level asked for, the proposal count, the skill tags and the description the client wrote. No login, no paywall, nothing behind an account.

It is worth naming what is absent, because it is what keeps this simple. Upwork does not publish the client's name on a search listing, and there is no column for one - nor for any freelancer who has applied. The export describes advertised work, not the people on either side of it, which puts it on the business-data side of the line.

Upwork's terms restrict automated access, so this is a terms question as well as a legal one - if you have a contractual relationship with the site, check it. We run no third-party trackers on the data layer, and your exports auto-delete after 30 days.

livescraper.app · principles
Public search listings only
No logins, no accounts touched
No client or freelancer names in the export
GDPR-aligned by default
Exports auto-delete (30 days)
Check Upwork's own terms before scaling.
Common questions

Things people
ask before signing up.

The questions we hear most. Anything else? Talk to us - humans, not bots, write the answers.

How do I scrape Upwork jobs?+
Using the Upwork Jobs Scraper:
  1. Sign in to the platform.
  2. Open the Upwork Jobs Scraper.
  3. Paste Upwork job-search URLs, one per line - or upload a CSV, XLSX, TXT or Parquet file.
  4. Set a limit per query, or leave it at zero to take everything.
  5. Pick a sort order and choose your output format.
  6. Click Get Data.
What can I use as input?+
An Upwork job-search URL - the address in your browser once you have built the search on Upwork, of the form upwork.com/nx/search/jobs/ with your query on the end. Paste them one per line or upload a CSV, XLSX, TXT or Parquet file. Every filter you set on the site travels with the URL, so the run returns the search you built.
What comes back for each posting?+
Ten columns: the search you submitted, the job title, a link to the posting, when it was published, the budget, the job type, the experience level asked for, the proposal count, the skill tags and the full description.
What format are the budget and posted dates in?+
We would rather not say than guess. The column names are confirmed, but the exact rendering of the budget, the posting date and the proposal count is something an export answers definitively and a documentation page can only approximate. Run a free-tier job on one of your own searches and the file will tell you exactly, for the query you care about.
Do I get the client's name?+
No. Upwork does not publish the client on a search listing, so there is no such column and nothing here infers one. The same is true of freelancers who have applied - you get the proposal count, never who they are.
Can I sort or limit the results?+
Yes, and both are set before the run rather than afterwards. Sort by relevance or by most recent, set a limit per query, or leave the limit at zero to take the whole search. There is also an oldest-first option for walking a search from its earliest posting forward.
Can I track a search over time?+
That is the most common reason people use it. Run the same search URLs on a schedule and each export is a dated snapshot - how many postings, which skills, what budgets. Comparing files week to week is where the value is; a single run is just a list.
How much does it cost?+
The first 500 rows are free and one-time, with no credit card. After that it is $0.002 per row - about $2 per 1,000 postings - which is the same flat rate as every other scraper on the platform. The estimator shows the cost of a run before it starts.

Your first 500 postings,
on the house.

500 one-time free rows on every new account - no expiry. After that it is $0.002 per row, pay-as-you-go - no card on file until you say so.

Activates instantly · no card required

Scrape Upwork job postings into a spreadsheet

Livescraper's Upwork Jobs Scraper turns a job search into a dataset. You build the search on Upwork the way you normally would, submit the resulting URL - typed one per line, or uploaded as a CSV, XLSX, TXT or Parquet file - choose whether results come back by relevance or by recency, cap the rows per query if you want to, and download the file as clean CSV, Excel or JSON. One row per posting.

Each row carries what the search results page shows about a job: the title as the client wrote it, a link to the posting, when it went up, the budget, whether the work is fixed-price or hourly, the experience level the client asked for, how many proposals it has already drawn, the skill tags attached to it, and the description in full.

Freelancers and agencies pull every posting for the skill they sell and read the budgets together, which says more about the going rate than a week of scrolling. Strategy teams run the same searches on a schedule and count postings week over week, because a skill appearing more often is a leading indicator worth having early. Researchers export a dozen related searches at once to describe a category with evidence instead of impressions.

One note on what this page does and does not tell you. The ten column names are confirmed by two independent sources, so you can map your headers against them today - but we do not publish the format of the budget, the posting date or the proposal count, because those are answers a real export gives and a documentation page can only approximate. Start free and let the file tell you: your first 500 rows cost nothing and need no credit card, and after that it is $0.002 per row, flat.