Upwork Post Details Scraper avatar

Upwork Post Details Scraper

Try for free

2 hours trial then $9.99/month - No credit card required now

Go to Store
Upwork Post Details Scraper

Upwork Post Details Scraper

arlusm/upwork-post-details-scraper
Try for free

2 hours trial then $9.99/month - No credit card required now

This scraper takes direct Upwork job post URLs and extracts information such as job title, budget, description, and client data. It can optionally use a proxy server from a specified country. The results are provided in a structured JSON format for easy analysis or further processing.

Upwork Job Post Scraper

This scraper takes individual Upwork job post URLs and extracts detailed information about each post (title, description, budget, etc.). It can optionally use a proxy with a specified country code to request the data.


Input

The input is a JSON object that must contain at least one startUrls entry. It can also include an optional proxyCountryCode:

1{
2  "startUrls": [
3    {
4      "url": "https://www.upwork.com/freelance-jobs/apply/WIX-Website-Template-Development-for-Virtual-Staging-SaaS_~021883994784056195740"
5    }
6  ],
7  "proxyCountryCode": "FR"
8}

Input Fields

FieldTypeRequiredDescriptionDefault
startUrlsarrayyesAn array of objects, each containing a url for a specific Upwork job post.none
proxyCountryCodestringnoA two-letter country code to configure proxy usage. (e.g., US, FR) or "LOCAL" to disable."FR"
  • startUrls: Each URL should be the direct link to an Upwork job post.
  • proxyCountryCode: Determines where the proxy server is located. If "LOCAL", no remote proxy is used.

Output

The scraper outputs an array of job detail objects. Each job object may contain:

  • title: Title of the job post.
  • paymentType: Indicates if it’s an hourly or fixed-price job.
  • paymentAmount: The proposed pay range or budget.
  • description: Detailed text describing the job scope and requirements.
  • jobPosted: When the job was posted (e.g., “3 days ago”).
  • lastViewedByClient: The client’s latest activity timestamp.
  • jobType: Usually “Remote Job” or region-limited.
  • projectType: Complexity or nature of the project.
  • estimatedHours: “Less than 30 hrs/week” or “More than 30 hrs/week.”
  • duration: Project duration (e.g., “3-6 months”).
  • experienceLevel: The experience level required (“Entry”, “Intermediate”, “Expert”).
  • clientLocation: Where the client is located.
  • clientTotalSpent: Total amount the client has spent on Upwork.
  • clientTotalHires: How many freelancers the client has hired.
  • clientActiveHires: How many of those hires are currently active.
  • clientHoursBilled: The total hours the client has billed.
  • clientMemberSince: The date the client joined Upwork.
  • proposals: The range of proposals submitted (e.g., “5 to 10”).
  • interviews: How many candidates are currently being interviewed.
  • invitesSent: How many invitations the client sent out.
  • skills: An array of extracted skills for the job.
  • locationRestriction: Any geographical restriction applied to applicants (e.g., “Only freelancers located in the U.S. may apply.”).
  • contractToHire: Boolean indicating whether it’s a “contract-to-hire” opportunity.

Example output:

1[
2  {
3    "title": "Looking for a Startup Hubspot Sales Ops and CRM Manager",
4    "paymentType": "Hourly",
5    "paymentAmount": "$65.00 - $110.00",
6    "description": "We’re seeking a skilled and proactive freelance ...",
7    "jobPosted": "3 days ago",
8    "lastViewedByClient": "yesterday",
9    "jobType": "Remote Job",
10    "projectType": "Complex project",
11    "estimatedHours": "Less than 30 hrs/week",
12    "duration": "3-6 months",
13    "experienceLevel": "Intermediate",
14    "clientLocation": "United States",
15    "clientTotalSpent": "$154K",
16    "clientTotalHires": "30",
17    "clientActiveHires": "9",
18    "clientHoursBilled": "8,297 hours",
19    "clientMemberSince": "Apr 20, 2022",
20    "proposals": "20 to 50",
21    "interviews": "7",
22    "invitesSent": "5",
23    "skills": [
24      "HubSpot",
25      "Marketing Automation",
26      "Sales Operations",
27      "Sales"
28    ],
29    "locationRestriction": "Only freelancers located in the U.S. may apply.",
30    "contractToHire": true
31  }
32]

Usage

  1. Provide the Input: When running on Apify, add your Upwork job post URLs in startUrls (and optionally modify the proxyCountryCode).
  2. Run the Scraper: The scraper navigates to each job URL, parses the HTML, and collects the specified data.
  3. View Results: Once finished, the dataset will contain an array of job objects matching the above schema.

Developer
Maintained by Community

Actor Metrics

  • 2 monthly users

  • 0 No stars yet

  • >99% runs succeeded

  • Created in Jan 2025

  • Modified 6 days ago