Upwork API for job search
Upwork jobs as JSON from a keyword: description, skills, hourly or fixed budget, experience level, duration and posting time, plus any job in full with applicants and the client's spend history.
Keyword or skill
Endpoint
curl "https://api.toolzerhub.com/v1/upwork/search?query=python+scraping" \
-H "x-api-key: $TOOLZERHUB_API_KEY"{
"data": {
"query": "python scraping",
"page": 1,
"sort": "newest",
"job_type": "any",
"experience_level": "any",
"total": 300,
"page_size": 50,
"max_page": 6,
"has_more": true,
"count": 3,
"url": "https://www.upwork.com/nx/search/jobs/?q=python+scraping&sort=recency",
"stop_reason": null,
"results": [
{
"job_id": "~022118416160812586681",
"title": "Python AI Agent to Generate Application specific Web Scraping rules.",
"url": "https://www.upwork.com/jobs/~022118416160812586681",
"description": "We are looking for an experienced Python AI Agent Developer to build an AI-powered application that automatically generates application-specific web scraping rules.\n\nThe objective is to develop an AI ",
"skills": [
"Python",
"Data Scraping",
"Web Crawling",
"Agentic Workflows",
"AI Agent Development"
],
"job_type": "hourly",
"experience_level": "intermediate",
"budget": {
"fixed_price": null,
"hourly_min": 20,
"hourly_max": 50,
"currency": "USD"
},
"workload": "part_time",
"duration": "1 to 3 months",
"duration_weeks": 9,
"posted_at": "2026-11-05T18:52:52Z"
},
{
"job_id": "~022118388163193053698",
"title": "Build an Automated B2B Lead Generation System for a Recruitment Firm - Fixed Price",
"url": "https://www.upwork.com/jobs/~022118388163193053698",
"description": "About us\nWe’re a recruitment and executive search firm based in Singapore. We want a system that finds companies that are actively hiring, finds the right contact at each one, and contacts them automa",
"skills": [
"Lead Generation",
"Customer Relationship Management",
"Python",
"English"
],
"job_type": "hourly",
"experience_level": "intermediate",
"budget": {
"fixed_price": null,
"hourly_min": null,
"hourly_max": null,
"currency": "USD"
},
"workload": "part_time",
"duration": "Less than 1 month",
"duration_weeks": 3,
"posted_at": "2026-11-05T17:01:49Z"
},
{
"job_id": "~022118324593413766913",
"title": "Python Data Engineer: Build Sports Analytics Database & API (Punting Form Data)",
"url": "https://www.upwork.com/jobs/~022118324593413766913",
"description": "I am looking for an independent, mid-level Python and Data Engineer to build a custom data ingestion pipeline, relational database, and localized API layer. \n\nThe project involves harvesting horse rac",
"skills": [
"Python",
"API",
"Data Extraction",
"ETL Pipeline",
"PostgreSQL",
"API Integration",
"Data Ingestion",
"FastAPI",
"pandas",
"SQLAlchemy"
],
"job_type": "hourly",
"experience_level": "intermediate",
"budget": {
"fixed_price": null,
"hourly_min": 45,
"hourly_max": 75,
"currency": "USD"
},
"workload": "part_time",
"duration": "1 to 3 months",
"duration_weeks": 9,
"posted_at": "2026-11-05T12:49:10Z"
}
]
}
}- 1
- 98.1%
- 2
Endpoints
What you can get
One request each, 1 credit per call. Open one to see its parameters and a real response.
Response
What comes back
Field names and types read off the real responses in the demo above.
- Search jobs
/v1/upwork/search12 fields- job_idstring"~022118416160812586681"
- titlestring"Python AI Agent to Gene…"
- urlstring"https://www.upwork.com/…"
- descriptionstring"We are looking for an e…"
- skillsarray[5 items]
- job_typestring"hourly"
- experience_levelstring"intermediate"
- budgetobject{ fixed_price, hourly_min }
- workloadstring"part_time"
- Job details
/v1/upwork/job16 fields- job_idstring"~022118416160812586681"
- titlestring"Python AI Agent to Gene…"
- statusstring"active"
- descriptionstring"We are looking for an e…"
- job_typestring"hourly"
- experience_levelstring"intermediate"
- budgetobject{ fixed_price, hourly_min }
- workloadstring"Less than 30 hrs/week"
- durationstring"1 to 3 months"
Use cases
What people build with it
- 01Collect new jobs for a skill every daySearch jobs
- 02Compare fixed-price and hourly budgets across keywordsSearch jobs
- 03Read a job's applicants and the client's spend historySearch jobsJob details
How it works
From key to JSON
- 01x-api-key••••••••••Get a key
- 02GET/v1/upwork/searchSend a request
- 03{ data, status }200Get JSON
Pricing
What it costs
Every endpoint on this page costs 1 credit per call. Failed calls cost nothing.
- Free$0
- 10K pack$19
- Starter$29
Per 1,000 credits
Compare
Why not build it yourself
Three ways to get Upwork data into your app.
| Compare | Toolzer Hub | Upwork API (GraphQL) | Your own scraper |
|---|---|---|---|
| Setup | One API key | Key request, decided by Upwork in about a week | Proxies, sessions, retries |
| When Upwork changes | We fix it | Upwork maintains it | You fix the parser |
| Cost to start | 100 free credits a month | Needs $25,000 in lifetime earnings or spend | Proxies and your time |
FAQ
Questions
- Is this the official Upwork API?
- What does the official Upwork API allow?
- What data does it return?
- What does it cost?
Guides
Upwork guides
Tested walkthroughs with real requests and output.
Try the Upwork API free
Every new workspace gets 100 credits a month. Buy credits only when you need more.
More APIs on the same key
- Meta Ad Library
- Threads
- TikTok
- X (Twitter)
- Yandex
- TikTok Ads
- 2GIS
- Ozon
- Airbnb
- Skyscanner
- Telegram
- Capterra
- Shopify
- YouTube
- Google Maps
- Zillow
- Seek
- Indeed
- Naukri
- StepStone
- Internshala
- Hiring.cafe
- Bayt
- Naver Shopping
- Wellfound
- RedNote
- Google Finance
- Google Flights
- SofaScore
- Google Play
- Douyin
- Taobao
- Google Hotels
- Amazon
- Cricbuzz
- Redfin
- Tripadvisor
- Semrush
- Yelp