Upwork Jobs & Freelancer Scraper - API & Data Export avatar

Upwork Jobs & Freelancer Scraper - API & Data Export

Pricing

from $2.40 / 1,000 job listings

Go to Apify Store
Upwork Jobs & Freelancer Scraper - API & Data Export

Upwork Jobs & Freelancer Scraper - API & Data Export

Scrape Upwork jobs and freelancers into structured datasets. Pull job listings, full job detail with client spend and hire-rate intelligence, freelancer profiles, JSS and badges. Bulk export to JSON, CSV and Excel for lead generation, recruiting, bid research and market analysis.

Pricing

from $2.40 / 1,000 job listings

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Upwork Jobs & Freelancer Scraper — API & Data Export 💼

Store-SIÁN Agency Store-Jobs Search API Store-Zillow Agent Scraper Store-Property Skip Tracing

🎉 Jobs and freelancers in one actor — plus client spend & hire-rate intelligence no jobs-only scraper gives you

Built for lead-gen teams, recruiters, agencies, and market researchers working the Upwork marketplace


📋 Overview

Scrape the entire Upwork marketplace — both sides of it — into clean structured datasets. Where most Upwork tools only pull job listings, this actor adds freelancer search & profiles and client intelligence (total spend, hire rate, payment-verified status, applicant counts) so you can find who's hiring and who's available, and qualify both before you reach out.

Why teams choose this actor:

  • Both market sides in one tool: jobs (who's hiring) and freelancers (who's available) — most scrapers do only one
  • Client intelligence built in: job detail returns client total spend, hire rate, payment-verified status, and applicant counts — first-class, not a hidden paid add-on
  • 🎯 Freelancer trust signals: Job Success Score (JSS), badge (Top Rated / Plus / Rising Talent), hourly rate, total hours and jobs
  • 💰 Pay only for rows you keep: transparent pay-per-result pricing, with a job-listing rate matched to the market
  • 💎 Real pagination: search multiple pages per keyword for deep, deduplicated coverage
  • Clean export: JSON, CSV, and Excel straight from the Apify dataset — no account or API key needed

✨ Features

  • 🔎 Search Jobs: find open jobs by keyword — title, budget, type, skills, posted date, and link
  • 📑 Job Detail: full record for any job URL with client intelligence — spend, hire rate, payment-verified, applicants, invites, interviews
  • 👥 Search Freelancers: find freelancers by keyword — title, location, hourly rate, JSS, badge, and skills
  • 👤 Freelancer Profile: full profile for any freelancer URL — stats, portfolios, and skills
  • 📄 Paginated search: pull multiple pages per keyword for broad coverage
  • 🏷️ Structured skills: skill tags split into clean arrays for filtering
  • 🧾 Unified dataset: jobs and freelancers in one schema, split by recordType / _operation
  • 📊 HTML run report: success/error counts and run details, written even on a fatal error

🎬 Quick Start

Pick an operation, give it search terms or URLs, and press Start. Results stream into the dataset.

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~upwork-jobs-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "searchJobs", "queries": ["python developer"], "maxPages": 3}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose an operation

Pick Search Jobs, Job Detail, Search Freelancers, or Freelancer Profile.

Step 2: Provide input

Search operations take a list of search terms. Detail operations take a list of URLs (the ones the search ops return are ready to paste).

Step 3: Run and export

Press Start, then download the dataset as JSON, CSV, or Excel.

That's it! In under a minute, you'll have:

  • A clean dataset of Upwork jobs or freelancers
  • Client spend & hire-rate intelligence on every job detail row
  • Freelancer JSS, badges, and rates for sourcing

📥 Input Configuration

FieldTypeRequiredDescription
operationstringYessearchJobs, jobDetail, searchFreelancers, or freelancerProfile
queriesarrayFor search opsKeywords to search (e.g. python developer, shopify expert)
urlsarrayFor detail opsJob or freelancer URLs to enrich
maxPagesintegerNoPages per search term (default 3, max 50)

Search example:

{
"operation": "searchJobs",
"queries": ["react native", "seo specialist"],
"maxPages": 3
}

Detail example:

{
"operation": "jobDetail",
"urls": ["https://www.upwork.com/jobs/~021234567890123456789"]
}

📤 Output

Results are saved to the Apify dataset with 50+ fields including:

FieldTypeDescription
recordTypestringjob or freelancer
recordTitlestringJob title or freelancer headline
recordUrlstringUpwork job or freelancer URL
budgetInfostringRaw budget/rate string from the listing
skillsarraySkill tags
clientSpendingstringClient lifetime spend (job detail)
clientPaymentVerifiedbooleanClient payment-verified status (job detail)
applicationsnumberNumber of applicants (job detail)
hourlyRatenumberFreelancer hourly rate (freelancers)
jssnumberFreelancer Job Success Score (freelancers)
badgestringFreelancer badge (Top Rated / Plus / Rising Talent)

Example (job detail):

{
"recordType": "job",
"recordTitle": "Python Developer",
"jobType": "hourly",
"minHourlyRate": 25,
"maxHourlyRate": 47,
"skills": ["Python", "PostgreSQL"],
"clientSpending": "$6.8K",
"clientPaymentVerified": true,
"applications": 242,
"clientHires": 34,
"_operation": "jobDetail"
}

💼 Use Cases & Examples

1. Lead Generation & Client Prospecting

Agencies and freelancers building outreach lists of buyers actively hiring.

Input: Search Jobs for your niche, then Job Detail on the results Output: Jobs with client spend, hire rate, payment-verified status, and applicant counts Use: Qualify and prioritize the highest-value clients before you pitch.

2. Agency Bid Research

Teams that want the freshest, best-fit projects.

Input: Search Jobs for your skills with multiple pages Output: Budgets, project types, required skills, posted times Use: Bid early on jobs that match your rate and expertise.

3. Freelancer & Talent Sourcing

Recruiters and agencies sourcing vetted talent.

Input: Search Freelancers by skill Output: JSS, badges, hourly rates, total hours, and profiles Use: Build shortlists of Top Rated freelancers for roles or subcontracting.

4. Rate & Market Benchmarking

Analysts setting pricing or studying the market.

Input: Search Jobs and Search Freelancers across roles Output: Hourly and fixed budgets, rates by region Use: Benchmark rates and track how the gig economy shifts.

5. Gig-Economy Trend Analysis

Researchers and investors mapping demand.

Input: Scheduled searches across skills and categories Output: Job and freelancer datasets over time Use: Analyze demand by skill, category, and geography.


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/upwork-jobs-scraper').call({
operation: 'searchJobs',
queries: ['python developer'],
maxPages: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/upwork-jobs-scraper').call(
run_input={'operation': 'searchFreelancers', 'queries': ['shopify expert'], 'maxPages': 2}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~upwork-jobs-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "jobDetail", "urls": ["https://www.upwork.com/jobs/~021234567890123456789"]}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: Schedule or webhook
  2. HTTP Request: Call the actor API
  3. Process: Handle the JSON results
  4. Action: Save to a CRM, notify your team, or enrich a sheet

📊 Performance & Pricing

FREE Tier (Try It Now)

  • Full feature access — every operation, same data quality
  • No credit card required
  • Perfect for testing and small projects
  • Unlimited rows per run
  • Pay-per-result: charged only for the rows you keep
  • Job-listing rate matched to the market

💰 Cheap-per-row job search, premium client-intelligence enrichment.

🔗 View current pricing


❓ Frequently Asked Questions

Q: Can I scrape both jobs and freelancers? A: Yes — that's the whole point. Use Search Jobs / Job Detail for the demand side and Search Freelancers / Freelancer Profile for the supply side.

Q: What is the client intelligence in Job Detail? A: For each job URL, you get the client's total spend, average spend per hire, hire count, payment-verified status, rating, reviews, and the job's applicant/invite/interview counts.

Q: Do I need an Upwork account or API key? A: No. Just provide your search terms or URLs.

Q: What output formats are available? A: JSON, CSV, and Excel — export directly from the Apify dataset.

Q: How many pages can I fetch per search term? A: Up to 50 pages per term (default 3). Each page returns about 10 rows.

Q: How do I tell jobs from freelancers in the dataset? A: Filter on recordType (job / freelancer) or _operation.

Q: Is this legal? A: We only extract publicly available data. See the legal section below.


🐛 Troubleshooting

No results returned

  • Check the operation matches the input: search ops need queries, detail ops need urls
  • Broaden the search term, or confirm the URL is a valid Upwork job/freelancer link

A detail row came back as an error

  • The URL may be expired or removed on Upwork; verify it opens in a browser

Want more rows per term

  • Increase maxPages (up to 50)

⚠️ Trademark Disclaimer

This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Upwork Global Inc. "Upwork" and all related names, marks, and logos are trademarks of their respective owners and are used here for descriptive purposes only. This tool accesses only publicly available information.


Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools