JobStreet & JobsDB Scraper: 6 Asian Countries in One Run avatar

JobStreet & JobsDB Scraper: 6 Asian Countries in One Run

Pricing

Pay per event

Go to Apify Store
JobStreet & JobsDB Scraper: 6 Asian Countries in One Run

JobStreet & JobsDB Scraper: 6 Asian Countries in One Run

Scrape JobStreet (Philippines, Malaysia, Singapore, Indonesia) and JobsDB (Hong Kong, Thailand) in one run: title, company, salary parsed to min/max/yearly, work type, remote, category, posting date, URL. Job alerts mode returns only new jobs. No login. $1 per 1,000 jobs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DataDesk

DataDesk

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

Scrape JobStreet (Philippines, Malaysia, Singapore, Indonesia) and JobsDB (Hong Kong, Thailand) in one run: title, company, salary parsed to min/max/yearly, work type, remote, category, posting date, URL. Job alerts mode returns only new jobs. No login. $1 per 1,000 jobs.

Scrape jobs from JobStreet (Philippines, Malaysia, Singapore, Indonesia) and JobsDB (Hong Kong, Thailand) in seconds: no login, no browser, no proxy setup. Built for recruiters, BPO and staffing firms, HR-tech and market researchers in Southeast Asia.

What you can do with it

  • One feed for 6 countries instead of one Actor per site
  • Salary comparison across PH, MY, SG, ID, HK and TH (local currency + yearly)
  • Lead lists of companies hiring in Southeast Asia
  • Daily job alerts per country and keyword

Why this scraper

  • Clean, normalized salary: the text as shown plus salaryMin, salaryMax, salaryCurrency, salaryPeriod and a yearly equivalent (salaryYearlyMin / salaryYearlyMax) so you can sort and compare.
  • Job alerts mode: turn on Only new jobs, schedule the Actor daily, and you get (and pay for) only jobs you have not received before.
  • Fast and cheap: reads the site's own search data instead of rendering pages. A default run finishes in a few seconds.
  • Pay only for results: $1.00 per 1,000 jobs + $0.005 per run. No results, no job charges. Your spending limit is respected exactly: we never deliver rows you did not pay for, and never charge for rows we did not deliver.
  • Deduplicated across keywords and pages.

Job alerts (only new jobs)

  1. Set your search and turn on Job alerts mode: only new jobs.
  2. Give it an Alert name (one per saved search).
  3. Create a Schedule (e.g. every morning) and connect an integration (email, Slack, Google Sheets, Make, Zapier, webhook). Each run returns only jobs posted since the previous run. Runs with no new jobs cost almost nothing.

Sources and coverage

SourceCoverageData
JobStreetPhilippines, Malaysia, Singapore, Indonesiatitle, company, location, salary, work type, classification, teaser, bullet points
JobsDBHong Kong, Thailandsame fields

How to use it

  1. Click Try for free (or Start): the prefilled input runs a quick test.
  2. Fill in the input fields (see the examples below). Every field is optional.
  3. Click Start and wait a few seconds to minutes, depending on how many jobs you ask for.
  4. Open the Output tab and export as JSON, CSV, Excel, XML or HTML, or read the results via API.

Input examples

Software engineers in PH, MY, SG (default):

{"keywords": ["software engineer"], "countries": ["ph", "my", "sg"], "maxJobsPerSearch": 20}

All 6 countries, last 3 days:

{"keywords": ["accountant"], "countries": ["ph", "my", "sg", "id", "hk", "th"], "postedWithinDays": 3}

Manila full-time:

{"keywords": ["customer service"], "countries": ["ph"], "location": "Manila", "workType": "full-time"}

Daily alerts:

{"keywords": ["nurse"], "countries": ["sg"], "onlyNewJobs": true, "alertsKey": "sg-nurse"}

Input fields

FieldTypeDescription
keywordsarrayJob titles or skills, e.g. accountant, software engineer. One search per keyword and country.
countriesarrayCountry sites to search: ph, my, sg, id (JobStreet) and hk, th (JobsDB). Each keyword is searched in every selected country.
locationstringCity or area inside the selected country, e.g. "Makati", "Kuala Lumpur". Empty = whole country.
workTypestringOptional: only full-time, part-time, contract or casual jobs. Empty = all work types.
maxJobsPerSearchintegerCap per keyword (and per country). You only pay for jobs saved.
postedWithinDaysintegerOnly jobs posted in the last N days. 0 = any date.
onlyNewJobsbooleanRemember jobs from earlier runs and save only jobs you have not received before. Schedule the Actor daily to get a job alert feed. You pay only for new jobs.
alertsKeystringSeparate memory per alert (e.g. "sydney-nurses"). Use a different name for each saved search.

Output example

One row per item. Values below are example values from a real test run (long text shortened):

{
"source": "jobstreet",
"country": "MY",
"jobId": "95697419",
"title": "Internship (IR4.0. A.I, ioT)(Software, APP, UX/UI, Network, Cloud) (KL and JB)",
"company": "Hispeedcity Sdn Bhd",
"advertiserId": "60739675",
"location": "Bukit Jalil, Kuala Lumpur",
"locations": ["Bukit Jalil, Kuala Lumpur"],
"classification": "Information & Communication Technology",
"subClassification": "Developers/Programmers",
"workType": "Full time",
"workArrangement": "On-site",
"isRemote": false,
"salary": "RM 800 – RM 1,200 per month",
"salaryMin": 800.0,
"salaryMax": 1200.0,
"salaryCurrency": "MYR",
"salaryPeriod": "month"
"…": "more fields below"
}

Fields a source does not publish are null.

Output fields

FieldDescription
sourceSite the job came from
countryCountry code
jobIdJob ID on the source site
titleJob title
companyEmployer name
advertiserIdAdvertiser / employer ID on the source site
locationLocation as shown
locationsAll job locations (with details on)
classificationJob category on the board
subClassificationJob sub-category on the board
workTypeWork type (full-time, part-time, contract, casual)
workArrangementWork arrangement (on-site, hybrid, remote)
isRemoteTrue for remote jobs
salarySalary as shown
salaryMinMinimum salary (number)
salaryMaxMaximum salary (number)
salaryCurrencyISO currency code
salaryPeriodhour, day, week, month or year
salaryYearlyMinMinimum salary converted to a yearly amount
salaryYearlyMaxMaximum salary converted to a yearly amount
teaserShort teaser text shown in search results
bulletPointsHighlight bullet points from the listing
postedAtPosting date (ISO 8601 UTC)
postedTextPosting date text as shown on the site
isFeaturedTrue if the listing is a featured/premium ad
urlJob page URL
keywordSearch keyword that found the job
scrapedAtWhen the job was scraped (ISO 8601 UTC)
isNewTrue when job alerts mode is on (job not seen in earlier runs)

The Output tab has a Jobs view.

Pricing

Pay-per-event: you pay only for results delivered, no monthly fee.

  • Job (job): $1.00 per 1,000 ($0.001 each)
  • Actor start: $0.005 per run
RunJobsCost
Quick test20$0.025
Small run100$0.105
Regular run1,000$1.005
Large run10,000$10.005

Rows that are not delivered are never charged. Apify's free plan includes monthly credit, and you can set a maximum cost per run in the run options.

Integrations and API

  • Export results as JSON, CSV, Excel, XML or HTML from the Output tab.
  • Schedule runs (daily, hourly) and send results to Google Sheets, Slack, Zapier, Make, n8n, Airbyte or webhooks.
  • Call it from code with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/datadesk-io~jobstreet-jobsdb-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["software engineer"], "countries": ["ph", "my", "sg"], "maxJobsPerSearch": 20}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("datadesk-io/jobstreet-jobsdb-scraper").call(run_input={'keywords': ['software engineer'], 'countries': ['ph', 'my', 'sg'], 'maxJobsPerSearch': 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get('title'), item.get('company'), item.get('url'))

FAQ

Do I need an account or cookies? No. The Actor only reads public job listings.

Does it scrape personal data? No. It returns job ads and company names only, no candidate or recruiter profiles. Use the data in line with the site's terms and applicable laws (GDPR etc.).

Can I get full job descriptions? Rows include the summary/snippet the search shows. Open url for the full ad.

Something broke or you need a field? Open an issue on the Issues tab; we usually answer within a day.

How fresh is the data? Live: every run reads the source at that moment. Schedule it to keep a dataset up to date.

Why did I get fewer jobs than the maximum? The source had fewer matching jobs, or duplicates were removed. You only pay for jobs delivered.

Not affiliated with or endorsed by the job board. Trademarks belong to their owners.

Limitations

  • Salary appears only when the employer publishes it.
  • Full job description is not included (teaser + bullet points are).
  • Up to the max per keyword × country.

Support

Found a bug, or need a new field, source or filter? Open an issue in the Issues tab; we usually answer within 24 hours. Custom data work: datadesk.io@proton.me.