Scrape data from Upwork

The good Upwork jobs go fast, so people refresh the feed all day. A bot can watch it for you, reading new postings that match your skills into a sheet, so you see them without the constant checking. This is for the job feed, not for harvesting the people on it. There are three ways to start, with no code, with code, or with a Claude skill.

What I mean by scraping Upwork


Scraping Upwork means a bot reads the public job postings into a sheet. The title, the budget, the skills asked for, the link to apply, the time it was posted. Point it at a search for your skills and it gathers the matching jobs, so the feed you keep refreshing turns into a list you can scan, sort, and act on when something fits.

The job feed, not the people


There is a right and a wrong shape to this. The right one is watching the job feed, the public postings, so you catch the work that suits you without staring at the page. That is a real time-saver for a freelancer, and it is what this is for.

The wrong one is harvesting freelancer profiles, names, rates, histories, to message or sell to. That is gathering people's personal data for outreach they did not ask for, and it is both against Upwork's terms and a bad idea. So keep to the postings. Upwork's terms restrict scraping in general, so do it small and for your own job search, and leave the profiles alone.

Who this is for


This is for the freelancer who wants to catch the right jobs without living in the feed. You search the same skills every day and you would rather a sheet filled with new matches than a tab you keep refreshing. Your own job hunt, the public postings. If you are looking to harvest profiles for outreach, this is not the tool. No-coders and coders both, since you can build it without code and drop into code when you want.

How I'd approach it


Set up the search that matches your skills. Point the bot at it, read the title, budget, skills, and link of each new posting, and write them to a sheet. Run it on a schedule and keep only what is new since last time, so the sheet is a feed of fresh matches. Keep the pace modest, and stay on the postings, not the people.

Your search, new postings, into a sheet on a schedule. I would lay out the first draft with Build with description.

Scrape Upwork from a description


Describe the search in plain words in the Chrome extension and it builds the steps for you. Give it a few short lines, check what it made, and run it. Explore no-code.

To the right is an example. Describe your job search, and the AI lays out the steps.

Chrome extension
Describe your automation

Instructions

  • Open my Upwork job search and sign in37 / 500
  • Scrape the title, budget, and skills of each job48 / 500
  • Grab the link and the posted time33 / 500
  • Keep only the jobs newer than last run38 / 500
  • Write them to a Google Sheet28 / 500

Scrape Upwork in code


Build with code. You do not have to write the script by hand. Describe the scrape to our Claude skill and it generates a ready-to-run Node script you own, then debugs it with you, fixing a selector that stopped matching or a step that stalls, until the run is clean. Prefer to write it yourself? Explore the code tool. Either way, the script looks like this.

These are axiom's step functions, the same step library that powers the no-code builder, available as code. Describe the scrape to the Claude skill and it generates and debugs this script for you. It runs on our cloud Chromium, with nothing to manage.

Generate it with the Claude skill
upwork.js
1import { AxiomApi } from "axiom-api";2 3const axiom = new AxiomApi(process.env.AXIOM_API_KEY);4 5await axiom.browserOpen();6try {7  // Your own saved search, public postings only8  await axiom.goto("https://www.upwork.com/nx/search/jobs/?q=playwright");9  const jobs = await axiom.scrape("[data-test='job-tile'] [data-test='job-title']");10  console.log(jobs); // write these to your sheet11} finally {12  await axiom.browserClose();13}14 

Build with a Claude skill

Build no-code or code bots with a skill.

Add the Claude skill and describe your job search. It builds the bot for you, no-code or code, reading new postings into a sheet.

Claude building an Upwork job scraper from a description

What can you scrape?


Public job postings, into a sheet. A couple of lines to stay on the right side of.

Works well

  • Job titles and budgets
  • Skills asked for and links
  • New postings since last run
  • A search for your skills on a schedule
  • A clean feed of matches in a sheet

Harder

  • Logins and bot checks
  • Postings that load as you scroll
  • Very high volume, against the terms

Don't try

  • Harvesting freelancer profiles or contacts
  • Scraping for cold outreach
  • Anything against Upwork's terms

What I'd watch out for


Upwork's terms restrict scraping and the value sits in the postings, so keep it tight. Here is what I would watch for.

Postings, not profiles

Read the jobs, not the people. Freelancer names, rates, and histories are personal data, and harvesting them for outreach crosses a clear line. Stay on the public postings.

This is a tool for catching jobs you would apply to, run modestly and on a schedule. It is not a feed to resell, and the terms do not welcome heavy scraping.

Use your own session

Sign in as yourself and store the cookies so the bot keeps the session rather than logging in fresh each run.

Pick fields reliably

Job tiles change, so pick what you read with the selector tool and keep only what is new each run.

"Axiom has saved me countless hours. The automation possibilities are endless."

Robert Taylor

"The best investment we've made in our automation workflow. Simple yet powerful."

Jennifer Brown

"The best browser automation tool I've used. The AI features are game-changing for complex workflows."

Sarah Johnson

"The support team is amazing, and the product just keeps getting better. Worth every penny."

Emma Davis

"Axiom has completely transformed how I handle browser automation. The no-code interface is intuitive and powerful."

John Smith

"Finally, a tool that makes browser automation accessible without compromising on power. Highly recommended!"

Michael Chen

"I was skeptical about no-code automation, but Axiom proved me wrong. It's incredibly powerful."

David Wilson

Fast to build. Easy to run and scale. Outstanding support.

Start for free. No credit card required.