
Google Ads Scraper
scrape.ly/store/querystone/google-ads-scraperLead generationSEO tools
4 monthly users

Scrape vietnamworks.com job listings in Vietnam: title, company, salary, job level, employment type, job function, skills, benefits, full description and requirements, recruiter contact, views and applications. Search by keyword, city and filters, or paste VietnamWorks URLs.
Scrape job listings from VietnamWorks (vietnamworks.com), one of Vietnam's largest job boards. Get every job's title, company, salary, job level, employment type, job function, skills, benefits, the full description and requirements, recruiter contact, views and applications, in English and Vietnamese. No login, no cookies: 1,000 jobs with full details take under a minute, and the whole site (over 10,000 jobs) about 7 minutes.
developer, kế toán), or paste VietnamWorks URLs.| Field | What it does |
|---|---|
searchQueries | Keywords to search, one per line. Each keyword is its own search. |
startUrls | VietnamWorks search, keyword, city or job URLs. |
maxResults | Maximum jobs in total (0 = no limit). |
locations | Cities or provinces, e.g. Ho Chi Minh, Ha Noi, Da Nang. |
jobLevels, employmentTypes, jobFunctions, industries | The site's own filters. |
postedWithin | 24h, 3d or 7d. |
minSalaryUsd, salaryVisibleOnly, urgentOnly | Salary and urgency filters. |
sortBy | Relevance, newest, oldest or highest salary first. |
includeDetails | Open each job page for the full text (on by default). |
{
"searchQueries": ["developer", "kế toán"],
"locations": ["Ho Chi Minh", "Ha Noi"],
"jobLevels": ["Experienced (non-manager)"],
"postedWithin": "7d",
"maxResults": 200
}
| Field | Description |
|---|---|
jobId, title, url | VietnamWorks job id, title and link |
company, companyLogo, companyIndustry, companySize, companyWebsite, companyAddress, companyProfile | Employer |
location, locationAddress, latitude, longitude, locations | Cities, workplace address and coordinates |
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod, isSalaryVisible | Salary |
jobLevel, employmentType, jobFunction, jobRoles, yearsOfExperience, education | Job profile (English, with Vietnamese ...VI fields) |
skills, benefits | Skill tags and benefits |
description, requirement (+ Html and Markdown versions) | Full job text |
contactName, contactEmail, workingDays, workingHours | Recruiter and schedule, when shown |
numOfApplications, numOfViews, postedDate, validThrough, isUrgent, isExpired | Activity and dates |
Example (trimmed; the contact person is fictional):
{
"jobId": 2117437,
"title": "Payable Accountant",
"url": "https://www.vietnamworks.com/payable-accountant-2117437-jd",
"company": "Ginkgo T-shirts",
"companyIndustry": "Retail/Wholesale Trading",
"companyAddress": "107 Đồng Khởi, Bến Nghé, Quận 1, Hồ Chí Minh, Việt Nam",
"location": "Ho Chi Minh",
"locationAddress": "107 Đồng Khởi, Phường Sài Gòn, TP.HCM",
"latitude": 10.775079,
"longitude": 106.703983,
"salaryText": "25m-30m ₫/month",
"salaryMin": 25000000,
"salaryMax": 30000000,
"salaryCurrency": "VND",
"salaryPeriod": "month",
"jobLevel": "Experienced (non-manager)",
"employmentType": "Full-time",
"jobFunction": "Accounting/Auditing",
"jobRoles": ["Accounts Receivable"],
"yearsOfExperience": 5,
"education": "Bachelor",
"skills": ["Kiểm Soát Số Liệu", "Payment Process", "Vendor Coordination", "Pos", "Kế toán công nợ"],
"benefits": [{"name": "Bonus", "nameVI": "Thưởng", "value": "Hưởng phúc lợi gắn kết với các khoản thưởng..."}],
"description": "1. Key Responsibilities\nLevel: Team Leader / Supervisor\nResponsible for overseeing accounts payable control...",
"contactName": "Ms Lan",
"contactEmail": "hr@example.com",
"workingDays": "T2 - T6",
"workingHours": "08:00 - 17:00",
"numOfApplications": 12,
"numOfViews": 640,
"postedDate": "2026-10-06T10:12:31+07:00",
"validThrough": "2026-11-05T23:59:59+07:00",
"detailFetched": true
}
You pay $1.20 per 1,000 jobs ($0.0012 per job saved), plus a small amount of platform usage (compute and datacenter proxy traffic). Example: 1,000 jobs with full details ≈ $1.20 + about $0.02 of usage, measured on a real run. Runs that find nothing cost only the few cents of usage. You can cap the spend of any run with the maximum charge setting.
Is it legal to scrape VietnamWorks? The actor only reads public job listings that anyone can see without an account. Check the site's terms and your local rules (including personal-data rules for recruiter contacts) for your use case.
Do I need a login or proxy? No login. The default datacenter proxy works; if the site ever refuses it, the run switches to residential proxies in Vietnam on its own.
How many results can I get? As many as VietnamWorks lists. Its search serves at most 10,000 results per order, so for a search with more than 10,000 jobs the actor reads it newest-first and then oldest-first, which covers up to 20,000 jobs per search. Add filters to split anything bigger.
Why is a field empty? VietnamWorks only shows what the employer filled in: about a third of jobs publish a salary, and the recruiter email, working hours, company website and coordinates are missing on many jobs.
Can I get English and Vietnamese? Labels such as job level, employment type, job function, city and salary come in both languages (...VI fields). The title and description are in whatever language the employer wrote them.
Can I schedule it or use the API? Yes. Schedule a run with "Past 24 hours" for daily new jobs, and read results through the API, webhooks or integrations.
descriptionTruncated: true), and views, recruiter email, working hours and company website are not included.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch keywords
Job titles, skills or companies to search for, one per line, in English or Vietnamese, for example developer, accountant or kế toán. Each keyword is a separate VietnamWorks search. Leave empty to list every job that matches the filters below.
startUrlsarrayOptionalVietnamWorks URLs
VietnamWorks search pages (vietnamworks.com/viec-lam?q=... or /jobs?q=...), keyword pages (vietnamworks.com/python-kv), city pages (vietnamworks.com/viec-lam-ho-chi-minh-v29-vn) or single job pages (links ending in -jv). Filters set on the site are kept; the filters below apply to keyword searches.
maxResultsintegerOptionaldefault 20Max results
Maximum number of jobs to save in total, across all keywords and URLs. Use 0 for no limit: every job the searches list.
VietnamWorks' own search filters, applied by the site to keyword searches (and to a filters-only run).
locationsarrayOptionalCities or provinces
Vietnamese cities or provinces, in English or Vietnamese, for example Ho Chi Minh, Ha Noi, Da Nang, Binh Duong or Hồ Chí Minh. Jobs in any of them are returned. Use International for jobs abroad. Leave empty for all of Vietnam.
jobLevelsarrayOptionalJob level
Only jobs at any of these levels. Leave empty for all levels.
employmentTypesarrayOptionalEmployment type
Only jobs of any of these types. Leave empty for all types.
jobFunctionsarrayOptionalJob function
Only jobs in any of these job functions (the site's job categories). Leave empty for all.
industriesarrayOptionalCompany industry
Only jobs from companies in any of these industries. Leave empty for all.
postedWithinenumOptionaldefault "any"Date posted
Only jobs posted in this period.
minSalaryUsdintegerOptionalMin monthly salary (USD)
Only jobs whose published monthly salary reaches this many US dollars (VietnamWorks converts VND salaries itself). Jobs with a hidden salary are left out when this is set.
salaryVisibleOnlybooleanOptionaldefault falseOnly jobs with a published salary
Skip jobs whose salary is hidden ("Negotiable"). About a third of VietnamWorks jobs publish a salary.
urgentOnlybooleanOptionaldefault falseUrgent jobs only
Only jobs the employer marked as urgent.
sortByenumOptionaldefault "relevance"Sort by
Order of the results. Relevance is the site's default for keyword searches.
includeDetailsbooleanOptionaldefault trueFull job details
Open every job page for the full description and requirements, recruiter email, views, working hours, company website and address. Turn off for a faster run with the shortened description from the search list.
maxResultsPerSearchintegerOptionaldefault 0Max results per search
Cap the jobs saved per keyword or search URL, so one broad search does not use up the whole limit. 0 means no cap.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for VietnamWorks and are the cheapest. If the site ever refuses them, the run switches to residential proxies in Vietnam on its own.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| jobId | number | null | VietnamWorks job id |
| title | string | null | Job title |
| url | string | null | Job page on vietnamworks.com |
| company | string | null | Hiring company |
| companyId | number | null | VietnamWorks company id |
| companyLogo | string | null | Company logo image |
| companyUrl | string | null | Company page on vietnamworks.com |
| companyWebsite | string | null | Company website, when the employer lists one |
| companyAddress | string | null | Company address |
| companySize | string | null | Company size (employees) |
| companyIndustry | string | null | Main company industry |
| companyIndustries | array | null | All company industries |
| companyProfile | string | null | Company description |
| location | string | null | Cities of the job, comma separated |
| locationCity | string | null | First city (English) |
| locationCityVI | string | null | First city (Vietnamese) |
| locationAddress | string | null | Street address of the workplace |
| latitude | number | null | Workplace latitude |
| longitude | number | null | Workplace longitude |
| locations | array | null | Every workplace: city, Vietnamese city name, address, latitude, longitude |
| salaryText | string | null | Salary as shown (English), e.g. Negotiable or $1,000-1,500 /month |
| salaryTextVI | string | null | Salary as shown in Vietnamese |
| salaryMin | number | null | Minimum salary, when published |
| salaryMax | number | null | Maximum salary, when published |
| salaryCurrency | string | null | Salary currency (USD or VND) |
| salaryPeriod | string | null | Salary period (month, year, ...) |
| isSalaryVisible | boolean | null | The employer publishes the salary |
| jobLevel | string | null | Job level (English) |
| jobLevelVI | string | null | Job level (Vietnamese) |
| employmentType | string | null | Employment type (English) |
| employmentTypeVI | string | null | Employment type (Vietnamese) |
| jobFunction | string | null | Job function (English) |
| jobFunctionVI | string | null | Job function (Vietnamese) |
| jobRoles | array | null | Job roles within the function |
| yearsOfExperience | number | null | Years of experience asked for |
| education | string | null | Minimum education |
| languageRequired | string | null | Language of the CV the employer asks for |
| skills | array | null | Skills |
| benefits | array | null | Benefits: name, Vietnamese name, details |
| description | string | null | Job description (plain text) |
| descriptionHtml | string | null | Job description (HTML) |
| descriptionMarkdown | string | null | Job description (Markdown) |
| requirement | string | null | Job requirements (plain text) |
| requirementHtml | string | null | Job requirements (HTML) |
| requirementMarkdown | string | null | Job requirements (Markdown) |
| descriptionTruncated | boolean | null | True when the description is the shortened one from the search list (details off or the job page failed) |
| contactName | string | null | Recruiter contact name |
| contactEmail | string | null | Recruiter email, when the job page shows one |
| workingDays | string | null | Working days, e.g. T2 - T6 (Monday to Friday) |
| workingHours | string | null | Working hours, e.g. 08:00 - 17:00 |
| numberOfOpenings | number | null | Number of openings, when shown |
| numOfApplications | number | null | Applications so far |
| numOfViews | number | null | Job page views |
| postedDate | string | null | Date the job was published |
| createdAt | string | null | Date the job was created |
| updatedAt | string | null | Last update |
| validThrough | string | null | Expiry date |
| isUrgent | boolean | null | Marked urgent |
| isTopPriority | boolean | null | Promoted job |
| isAnonymous | boolean | null | Employer hidden |
| isExpired | boolean | null | The job has expired |
| applyUrl | string | null | Where to apply |
| detailFetched | boolean | null | The full job page was loaded |
| searchQuery | string | null | Keyword that found this job |
| searchUrl | string | null | VietnamWorks search URL that found this job |
| scrapedAt | string | null | When the job was scraped |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved VietnamWorks job listing. | $0.0012 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/vietnamworks-scraper').call({
"searchQueries": [
"developer"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/vietnamworks-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/vietnamworks-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.

Scrape Google Maps places for any search term and city, with no code or with one API call. A real run, its output, its log and its exact cost, plus the limits and the legal side.
Read the article
Paste an Amazon search or product URL into a ready-made Actor and get one row per product with price, ASIN, rating and review count. This guide covers the no-code steps, the API, ZIP code pricing, a real run and its cost.
Read the article
Scrape Google search results by query and country and get each results page as JSON: organic results with positions, People Also Ask and related searches. Run it without code or from Python, with a real run, the cost per page and Google's terms.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.