Upwork Freelancers & Jobs Scraper
Search Upwork talent and jobs. Extract freelancer profiles (hourly rate, total earned, job success, skills, location) and job posts (budget, type, skills). Export to JSON, CSV or Excel.
{ "title": "Python Full-Stack Developer", "url": "https://www.upwork.com/jobs/~02207444872177208…", "type": "Hourly", "description": "Job Title: Python Full Stack Developer About t…", "currency": "USD", "duration": "3 to 6 months", "engagement": "Part Time", "experienceLevel": "Expert", "premium": false }
Every run returns clean, typed records, ready for your CRM, spreadsheet or database.
- One clean record per result, deduped and normalized
- Stable schema in JSON, CSV or Excel, or read it via the Apify API
- Pay per use in the cloud, nothing to install or maintain
A real example record, exactly the shape you receive.
| Title | Url | Type | Description |
|---|---|---|---|
| Python Full-Stack Developer | https://www.upwork.com/jobs/~0220… | Hourly | Job Title: Python Full Stack Deve… |
| Python Developer | https://www.upwork.com/jobs/~0220… | Fixed | Position- Python Developer Exp- 4… |
| Expert Python Developer | https://www.upwork.com/jobs/~0220… | Fixed | Looking for an experienced Python… |
| Hiring Python Developer | https://www.upwork.com/jobs/~0220… | Hourly | Strong proficiency in Python and … |
{ "title": "Python Full-Stack Developer", "url": "https://www.upwork.com/jobs/~02207444872177208…", "type": "Hourly", "description": "Job Title: Python Full Stack Developer About t…", "currency": "USD", "duration": "3 to 6 months", "engagement": "Part Time", "experienceLevel": "Expert", "premium": false }
Frequently asked questions
Which Upwork data can this scraper collect?
It reads two public surfaces: the talent search (freelancer profiles) and the job search (job posts). Set the search type, enter a keyword, and it returns clean records with rates, earnings, job success, skills, budgets and more.
How many results can I get per keyword?
Popular keywords return tens of thousands of freelancers and thousands of jobs. The talent search exposes up to about 191,000 profiles per keyword. Use the Max Items input to cap how many records you collect.
Do I need an Upwork login or cookies?
No. The scraper only reads publicly available search pages and needs no account, cookie or token from you.
Why are some job budgets or hourly ranges empty?
Some hourly jobs are posted with an open budget and some client details are hidden on public posts, so those values come through empty. Every field that is always empty on public data is left out of the output entirely.
Can I search freelancers and jobs in the same run?
Each run collects one type. Run the actor once with the search type set to freelancers and again with it set to jobs, or schedule two separate tasks.
Ready when you are.
Run the scraper live on Apify right now, or have us build one tailored to exactly what you need.