
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape public Jobstreet (Malaysia, Singapore, Philippines, Indonesia) and JobsDB (Hong Kong, Thailand) job listings: title, company, salary, location, work type, full description, applicant counts and company ratings. Search by keyword and filters or paste search URLs. No login needed.
Scrape public job listings from Jobstreet (Malaysia, Singapore, Philippines, Indonesia) and JobsDB (Hong Kong, Thailand) in seconds. Get the title, company, salary, location, work type, full description, applicant counts, screening questions and the employer's company profile for every job. No login, no cookies, and one flat price per job.
software developer) and pick a country site, or paste Jobstreet / JobsDB search or job URLs.| Field | What it does |
|---|---|
keywords | Job titles, skills or companies, one search per line. Empty = every job that matches the filters. |
country | MY, SG, PH, ID (Jobstreet) or HK, TH (JobsDB). |
location | City, state or area, e.g. Kuala Lumpur, Metro Manila, Kowloon, Bangkok. |
startUrls | Search result URLs or single /job/ links from any of the six sites. URL filters are used as-is. |
maxResults | Jobs to save per keyword or URL (default 20). |
classification, workTypes, workArrangements | The site's industry, employment-type and remote/hybrid/on-site filters. |
salaryMin, salaryMax, salaryType | Salary range in local currency, monthly by default. |
dateRange, sortBy | Listed within N days; relevance or newest first. |
includeKeywords, excludeKeywords | Keep or drop jobs by words in the title, company, summary or description. |
includeDetails | Full description, applicants and company profile (on by default, same price). |
{
"keywords": ["software developer", "data analyst"],
"country": "MY",
"location": "Kuala Lumpur",
"workTypes": ["fulltime"],
"dateRange": 7,
"sortBy": "ListedDate",
"maxResults": 50,
"startUrls": ["https://hk.jobsdb.com/accountant-jobs/in-Kowloon"]
}
One row per job. Main fields:
| Field | Description |
|---|---|
jobId, url, applyUrl | Job id and links to the public job page |
title, company, companyLogo | Job title and hiring company |
location, locations, country, portal | Where the job is, and which site it came from |
salary, currency | Salary label as shown on the site (only when the employer shows it) |
workType, workArrangement | Full time / part time / contract / casual; on-site / hybrid / remote |
classification, subClassification (+ ids) | Industry classification |
teaser, bulletPoints | The summary and selling points from the search card |
listingDate, listingDateLabel, expiresAt | When it was listed and when it expires |
description, descriptionHtml | Full job description (with details on) |
emails, phoneNumbers | Contacts written in the ad, when there are any |
numApplicants, applicantsWithResumePct, applicantsWithCoverLetterPct | Applicant insights, when the site shows them |
employerQuestions | The employer's screening questions |
companyRating, companyReviews, companyIndustry, companySize, companyWebsite, companyOverview, companyPerks | Company profile, when the employer has one |
searchQuery, scrapedAt | Which keyword or URL found the job, and when |
Example (values shortened, sample company):
{
"jobId": "94927081",
"url": "https://my.jobstreet.com/job/94927081",
"applyUrl": "https://my.jobstreet.com/job/94927081/apply",
"title": "Graduate Software Engineer / Developer",
"company": "Example Tech Sdn Bhd",
"location": "Kuala Lumpur",
"salary": "RM 3,800 – RM 5,700 per month",
"currency": "MYR",
"workType": "Full time",
"workArrangement": "On-site",
"classification": "Information & Communication Technology",
"subClassification": "Engineering - Software",
"teaser": "Build world-class products with a senior mentor from day one.",
"bulletPoints": ["Great career development", "Top remuneration", "Modern tech stack"],
"listingDate": "2026-09-28T15:29:49Z",
"listingDateLabel": "16d ago",
"portal": "jobstreet",
"country": "Malaysia",
"countryCode": "MY",
"searchQuery": "software developer",
"description": "This role is for people who are passionate about programming...",
"emails": [],
"phoneNumbers": [],
"numApplicants": 939,
"applicantsWithResumePct": 100,
"applicantsWithCoverLetterPct": 34,
"employerQuestions": ["What's your expected monthly basic salary?"],
"expiresAt": "2026-10-28T15:29:49Z",
"companyRating": 4.1,
"companyReviews": 170,
"companyIndustry": "Computer Software & Networking",
"companySize": "51-100 employees",
"companyWebsite": "https://www.example.com/",
"scrapedAt": "2026-10-15T00:36:52.364Z"
}
You pay $0.50 per 1,000 jobs saved ($0.0005 per job), with full details included. Platform usage (compute and datacenter proxy traffic) is billed separately and is small: an HTTP-only run at 256 MB uses a fraction of a cent for a typical job.
Example: 1,000 jobs ≈ $0.50 in job fees plus a few cents of platform usage. Jobs removed by your include/exclude keyword filters are not charged.
Is scraping Jobstreet and JobsDB legal? The actor reads only public job listings that anyone can see without logging in. Make sure your use of the data follows the sites' terms and the privacy laws that apply to you, especially for any contact details written into ads.
Do I need a login, cookies or my own proxy? No. The default datacenter proxy works for all six sites.
How many jobs can I get? As many as the site lists for each search. Use several keywords or URLs for more. Each search stops cleanly when the site has no more jobs.
Why is a field empty? Fields are filled only when the listing shows them. Many employers hide the salary, applicant counts appear on some jobs only, and only employers with a company profile have ratings, size and website.
Can I schedule it or use the API? Yes. Schedule a "Newest first" search with "Listed within (days)" set to 1 for daily monitoring, and call the actor through the API or connect it to your workflow tools.
Can I scrape one job?
Yes. Paste its /job/<id> link into Search or job URLs.
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.
keywordsarrayOptionalSearch keywords
Job titles, skills or company names, one search per line (same as the site's search box). Leave empty to list every job that matches the filters.
countryenumOptionaldefault "MY"Country site
Which site the keyword searches run on. Jobstreet: Malaysia, Singapore, Philippines, Indonesia. JobsDB: Hong Kong, Thailand. Search URLs always use their own site.
locationstringOptionalLocation
City, state or area, as typed in the site's location box. Examples: Kuala Lumpur, Metro Manila, Jakarta, Kowloon, Bangkok.
startUrlsarrayOptionalSearch or job URLs
Jobstreet or JobsDB search result URLs (for example https://my.jobstreet.com/developer-jobs/in-Kuala-Lumpur) or single /job/ links. Keywords, location and filters inside each URL are used; the filter fields below apply only to the keyword searches.
maxResultsintegerOptionaldefault 20Maximum jobs per search
How many jobs to save for each keyword or search URL.
Narrow the keyword searches. Search URLs keep their own filters.
classificationarrayOptionalClassification
Industry classifications to include. Leave empty for all.
workTypesarrayOptionalWork types
Employment types to include. Leave empty for all.
workArrangementsarrayOptionalWork arrangements
On-site, hybrid or remote. Leave empty for all.
salaryMinintegerOptionalMinimum salary
Lowest pay in the site's local currency (MYR, SGD, PHP, IDR, HKD, THB), for the period chosen below.
salaryMaxintegerOptionalMaximum salary
Highest pay in the local currency. Leave empty for no upper limit.
salaryTypeenumOptionalSalary period
Which period the salary range refers to. Jobstreet and JobsDB list pay monthly.
dateRangeintegerOptionalListed within (days)
Only jobs listed in the last N days, for example 1, 3, 7, 14 or 31. Leave empty for any age.
sortByenumOptionalSort by
Result order. Newest first suits scheduled monitoring runs.
includeKeywordsarrayOptionalMust contain one of
Keep a job only if its title, company, summary or description contains at least one of these words (case-insensitive). Filtered jobs are not charged.
excludeKeywordsarrayOptionalMust not contain
Drop jobs whose title, company, summary or description contains any of these words.
includeDetailsbooleanOptionaldefault trueInclude full job details
Adds the full description, emails and phones found in it, applicant counts, screening questions, expiry date and the company profile (rating, reviews, industry, size, website). Same price; turn off only for slightly faster runs.
maxTotalResultsintegerOptionalMaximum jobs in total
Optional cap across all searches in the run. Leave empty for no total cap.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Jobstreet and JobsDB and are the default.
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 |
|---|---|---|
| title | any | Title |
| company | any | Company |
| location | any | Location |
| salary | any | Salary |
| workType | any | Work type |
| workArrangement | any | Arrangement |
| classification | any | Classification |
| subClassification | any | Sub-classification |
| listingDate | any | Listed |
| numApplicants | any | Applicants |
| companyRating | any | Company rating |
| country | any | Country |
| url | any | Job page |
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 job listing, full details included. | $0.0005 |
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/jobstreet-scraper').call({
"keywords": [
"software developer"
],
"country": "MY",
"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/jobstreet-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/jobstreet-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Jobs listed in the last 7 days, newest first.
Quick list of Jobstreet jobs for a keyword.
Jobs from pasted JobsDB search links.
Scrape.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.