VietnamWorks Jobs Scraper avatar

VietnamWorks Jobs Scraper

Pricing

from $1.40 / 1,000 jobs

Go to Apify Store
VietnamWorks Jobs Scraper

VietnamWorks Jobs Scraper

Get VietnamWorks job listings with salary, company, skills and full descriptions. For recruiters and market research. No login.

Pricing

from $1.40 / 1,000 jobs

Rating

0.0

(0)

Developer

Pakpoom

Pakpoom

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Categories

Share

Search VietnamWorks, a Vietnamese job board, and get structured job listings: title, company, salary, level, skills, benefits, locations and the full description as plain text. Plain HTTP, no browser, no login.

Who it is for

  • Recruiters and HR teams tracking which companies hire for which skills, and at what salary, in Vietnam.
  • Market and salary researchers building a dataset of Vietnamese job postings by role, level and city.
  • Job aggregators and career sites that want fresh VietnamWorks listings in their own database.
  • Analysts and LLM pipelines that need clean job text and skill lists to classify or summarize.

What you get

  • Many searches in one run. One keyword per line: a job title, a skill or a company. An empty keyword returns the newest jobs of the whole site.
  • Salary, when the employer shows it. salaryMin, salaryMax and salaryCurrency (USD or VND in nearly all jobs) next to the text the site displays. Hidden or negotiable salaries are null.
  • Descriptions as plain text. The job description and the requirements, without HTML. Turn them off to get a lighter dataset.
  • Duplicates removed. A job found by several of your searches is returned, and charged, once.
  • Failures don't fail the run. A search that fails becomes an error item (never charged) and the other searches continue.
  • Options for scheduled runs. failOnError and minResults end a run as failed when something is wrong, so a scheduled run with alerts cannot fail silently.

Input

FieldDefaultWhat it does
queries["developer"]Search keywords, one per entry (1 to 50).
maxResults100Stop after this many jobs in total, 1 to 5,000.
postedWithinDaysnoneKeep only jobs posted in the last N days (1 to 365).
includeDescriptiontrueInclude description and requirements.
failOnErrorfalseEnd the run as failed if any search ends in an error item.
minResults0End the run as failed if fewer jobs than this came back.

Example: Java developer jobs from the last two weeks

{ "queries": ["java developer"], "maxResults": 300, "postedWithinDays": 14 }

Output

One dataset item per job. This is a real item from our test runs, shortened:

{
"jobId": 2112665,
"url": "https://www.vietnamworks.com/general-accountant-1790586940418274981-2112665-jv",
"title": "General Accountant",
"companyName": "Q Industries & Trade JSC",
"companyId": 32368,
"companySize": "25-99",
"salaryText": "$ 700-885 /tháng",
"salaryMin": 700,
"salaryMax": 885,
"salaryCurrency": "USD",
"jobLevel": "Experienced (non-manager)",
"employmentType": "Full-time",
"yearsOfExperience": 3,
"jobFunction": "General Accounting",
"jobFunctionGroup": "Accounting/Auditing",
"skills": [
"Kế Toán Tổng Hợp",
"Kế Toán",
"General Accountant",
"Báo Cáo Tài Chính",
"Internal Accountant"
],
"locations": [
"Ho Chi Minh"
],
"postedAt": "2026-09-28T09:15:40.000Z",
"query": "accountant",
"scrapedAt": "2026-10-17T16:48:19.115Z"
}

The example leaves out industries, benefits, address, languageRequired, updatedAt, expiresAt, description and requirements, which every item also has.

FieldNotes
jobId, title, query, scrapedAtNever null.
salaryMin, salaryMax, salaryCurrencyNull when the employer hides the salary or it is negotiable.
companyName, companySize, jobLevel, employmentType, yearsOfExperience, jobFunction, address, postedAt, updatedAt, expiresAtCan be null when the employer left them empty.
skills, benefits, industries, locationsArrays; empty when none.
description, requirementsNull when includeDescription is off or the employer left them empty.

A failed search or an invalid input produces { "type": "error", "input": ..., "message": ... }. Error items are never charged.

Measured limits

From our tests in October 2026 (four runs, 5,828 jobs, no errors):

  • Depth. One run with an empty keyword returned 5,000 jobs in about 5 minutes (104 result pages) and stopped at maxResults, not because the site ran out. A keyword returns as many jobs as the site finds for it; on the day of testing the site reported 143 for "developer".
  • Salary. 37% of the jobs showed a numeric salary (about 11% in USD, 26% in VND). The rest are hidden or negotiable and come back as null.
  • Other fields. Company size was set on 45% of jobs, minimum years of experience on 87%, address on 85%, language requirement on 99% and locations on 99.8%. industries was filled on only 0.2% of jobs. Title, company, level, employment type, function, skills, benefits, dates and link were present on every job.
  • Speed. Runs of 128 to 400 jobs finished in 4 to 29 seconds.

Pricing

Pay per result: $1.40 per 1,000 jobs, plus a small start fee per run. No monthly fee (you need an Apify account). Error items and duplicates are never charged.

  • 100 jobs: $0.14.
  • 5,000 jobs (the per-run maximum): $7.00.

You can set a maximum cost per run in Apify; the Actor stops cleanly when it is reached.

FAQ

Does it need a login or cookies? No. It reads the same public search results any visitor sees.

Does it use a proxy? No, it runs from Apify's platform addresses and backs off when the site slows down.

Is it legal? It collects only publicly visible job postings. You are responsible for how you use the data, including data-protection law for any personal data in descriptions.

Why is the salary empty for so many jobs? About 6 in 10 employers on VietnamWorks hide it or write "Negotiable", and the Actor does not guess.

How many jobs can I get? Up to 5,000 per run; run several searches for more.

More from this developer


Not affiliated with VietnamWorks. Version 1.0.