Work Scraper avatar
Work Scraper
Try for free

7 days trial then $40.00/month - No credit card required now

View all Actors
Work Scraper

Work Scraper

trudax/work-scraper
Try for free

7 days trial then $40.00/month - No credit card required now

Extract data from the top freelancing websites. Search by URL or search terms, filter by categories, English level, and hourly rate. Get info about freelancers and agencies without login. Download your data as an HTML table, JSON, CSV, Excel, or XML.

What does Work Scraper do?

Work Scraper enables you to extract data from the top freelancers websites. It allows you to extract info from freelancers, jobs and agencies without login. Here is a list of supported websites:

  • Upwork

Why scrape Work?

If you're a freelancer, you might use it to keep track of the competition or identify new opportunities. You can also automatically apply to the jobs by integrating with the this other actor actor and passing the applyUrl. Check the integration documentation for more details.

If you're an employer, you could gather data on potential freelancers, find your competitors on the platform, or make sure that your projects are targeted so as to attract the best talent.

How much will it cost to scrape?

Work Scraper is efficient and cheap to run. It will only cost approx. $0.25 per 100 requests on top of the monthly rental fee.

How to scrape

You can fill the search inputs in the actor or, if you want a more complex search, you can copy the url generated by your search in the origin website and use it as a start url in the actor inputs.

Example results

The output of Work Scraper is stored in a dataset and will look something like this:

Freelancer profile:

1{
2    "name": "John Dow",
3    "location": "St. John's - Canada",
4    "locality": "St. John's",
5    "country": "Canada",
6    "title": "Blockchain Developer",
7    "description": "I believe highly in perfection in my work.  I have written short articles, reviews, as well as blog posts for different companies using WordPress and have done website testing as well. I am a gifted technical writer and article spinner.  I have also been a ghostwriter for multiple clients on a variety of both fiction and non-fiction writing.  I also do data entry on a daily basis into Excel books and am responsible for payroll at my full time job.  I have excellent communication skills and work as an administrative assistant on a full time basis.  I understand the need for quality work and communication to get the job done right!",
8    "jobSuccess": "100%",
9    "hourlyRate": "100.00",
10    "totalHours": "835",
11    "totalJobs": "20",
12    "stats": [
13        "20\nTotal Jobs",
14        "835\nTotal Hours",
15        "20 Total Jobs",
16        "835 Total Hours",
17        "20 Total Jobs",
18        "835 Total Hours"
19    ],
20    "profileUrl": "https://www.website.com/freelancers/XXXXXX"
21}

Job:

1{
2    "title": "Job title",
3    "description": "Job description",
4    "jobType": "Hourly: $45.00",
5    "contractorTier": "Intermediate",
6    "skills": "Database\nDatabase Maintenance\nWeb Service\nJava\nGit\nSQLite\nCSS\nWeb Development\nHTML",
7    "createdAt": "15 minutes ago",
8    "scrapedAt": "2022-08-16T13:50:20.995Z",
9    "url": "https://www.website.com/freelance-jobs/apply/XXXX/",
10    "applyUrl": "https://www.website.com/ab/proposals/job/XXXX/apply/#/"
11}

Extend output function

You can use this function to update the result output of this actor. You can choose what data from the page you want to scrape. The output from this will function will get merged with the result output.

The return value of this function has to be an object!

You can return fields to archive 3 different things:

  • Add a new field - Return object with a field that is not in the result output
  • Change a field - Return an existing field with a new value
  • Remove a field - Return an existing field with a value undefined
1async () => {
2    return {
3        pageTitle: document.querySelector("title").innerText,
4    };
5};

This example will add the title of the page to the final object:

1{
2    "name": "John Dow",
3    "location": "St. John's - Canada",
4    "locality": "St. John's",
5    "country": "Canada",
6    "title": "Blockchain Developer",
7    "description": "I believe highly in perfection in my work.  I have written short articles, reviews, as well as blog posts for different companies using WordPress and have done website testing as well. I am a gifted technical writer and article spinner.  I have also been a ghostwriter for multiple clients on a variety of both fiction and non-fiction writing.  I also do data entry on a daily basis into Excel books and am responsible for payroll at my full time job.  I have excellent communication skills and work as an administrative assistant on a full time basis.  I understand the need for quality work and communication to get the job done right!",
8    "jobSuccess": "100%",
9    "hourlyRate": "100.00",
10    "totalHours": "835",
11    "totalJobs": "20",
12    "stats": [
13        "20\nTotal Jobs",
14        "835\nTotal Hours",
15        "20 Total Jobs",
16        "835 Total Hours",
17        "20 Total Jobs",
18        "835 Total Hours"
19    ],
20    "profileUrl": "https://www.website.com/freelancers/XXXXXX",
21    "pageTitle": "John Doe - Fast, Friendly, Reliable!"
22}

Personal data

You should be aware that your results might contain personal data. Personal data is protected by 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 our blog post on the legality of web scraping.

Developer
Maintained by Community
Actor metrics
  • 16 monthly users
  • 97.9% runs succeeded
  • 0.2 days response time
  • Created in Jun 2020
  • Modified 21 days ago
Categories