Upwork Scraping

Upwork Search Jobs Endpoint

POST /v1/upwork/search-jobs

#Request Example

curl -X POST /v1/upwork/search-jobs \
  -H "Authorization: Bearer your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "laravel",
    "type": "hourly,fixed",
    "difficulty": "intermediate,expert",
    "min_hourly_rate": 25,
    "max_hourly_rate": 100
  }'

#Request Body

{
  "query": "laravel",
  "type": "hourly,fixed",
  "difficulty": "intermediate,expert",
  "min_hourly_rate": 25,
  "max_hourly_rate": 100
}

#Pricing

  • 4 credits

Credits are only deducted for successful requests.

#Input Modes

  • pass a full Upwork search URL
  • pass structured request fields and let the controller map them

#Common Filters

  • query or q
  • page, per_page, sort
  • type: hourly, fixed
  • difficulty: entry, intermediate, expert
  • duration: less_than_1_month, 1_to_3_months, 3_to_6_months, more_than_6_months
  • hours_per_week: less_than_30, more_than_30
  • client_hires: 0, 1-9, 10+
  • min_hourly_rate, max_hourly_rate
  • min_fixed_budget, max_fixed_budget

#Example Response

{
  "response": [
    {
      "title": "Laravel Developer Needed",
      "time": "3 hours ago",
      "info": "Fixed-price - 1 to 3 months - USD 750",
      "description": "Build a REST API using Laravel",
      "skills": ["PHP", "Laravel"],
      "url": "https://www.upwork.com/jobs/~abc123"
    }
  ]
}

#Response Items

Each result is normalized to fields like id, type, title, time, info, description, skills, and url.