JobStreet Jobs Scraper — APAC Hiring Data
Pricing
from $5.00 / 1,000 jobstreet job record scrapeds
JobStreet Jobs Scraper — APAC Hiring Data
Search public JobStreet listings in Malaysia, Singapore, Indonesia, and the Philippines. Returns structured jobs, companies, salary, location, work type, dates, and apply URLs for recruiters and hiring research.
Pricing
from $5.00 / 1,000 jobstreet job record scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Search public JobStreet job listings in Malaysia, Singapore, Indonesia, and the Philippines. This actor is for recruiters, job-market researchers, talent-intelligence teams, and AI agents that need clean vacancy data rather than manual search results.
It uses a residential, session-consistent Playwright browser because JobStreet protects normal HTTP clients with Cloudflare. Each persisted record is validated before it is written and billed, so the dataset remains stable for CSV exports, APIs, and downstream AI workflows.
What it extracts
Every dataset item represents one public JobStreet vacancy. Fields are intentionally flat and consistent for spreadsheet, database, and agent use.
| Field | Description |
|---|---|
jobId, title, jobUrl | Stable public vacancy identity and direct URL. |
companyName, companyUrl | Employer information where JobStreet exposes it. |
location, country | Public location and selected JobStreet market. |
salaryText, salaryCurrency, salaryMin, salaryMax, salaryPeriod | Displayed salary plus normalized values when available. |
workType, workArrangement | Employment type and on-site, hybrid, or remote signal. |
classification, subClassification | JobStreet occupation taxonomy. |
description, postedAt, postedText | Public teaser/detail text and exposed posting date. |
sourceUrl, scrapedAt | Search provenance and collection timestamp. |
Salary, company profile, work arrangement, and posting date are public-site dependent. The actor returns null when JobStreet does not expose a value rather than inferring or fabricating it.
When to use it
Use this actor for:
- Building an APAC recruitment or employer-hiring dataset.
- Comparing salary ranges and job classifications in a specific market.
- Finding recent technical, sales, finance, healthcare, or operations roles.
- Feeding structured JobStreet listings into a CRM, ATS, spreadsheet, or AI agent.
- Monitoring public vacancy demand by keyword and location.
Do not use it to apply for jobs, access JobStreet accounts, retrieve applicant data, or scrape platforms other than JobStreet. For broad multi-board search, use a general jobs aggregator instead.
Input
The only required field is keywords; it defaults to software engineer so the Apify input prefill is immediately runnable.
{"keywords": "data engineer","country": "MY","location": "Kuala Lumpur","postedWithinDays": "7","sortBy": "date","maxResults": 50,"includeJobDetails": true}
country accepts MY, SG, ID, and PH. Use location for a city or region, such as Singapore or Jakarta; leave it empty to search the entire selected country. maxResults is a hard cap from 1 to 500 and also caps the per-job event charge. includeJobDetails visits each selected public vacancy page to collect a fuller description when one is exposed; turn it off for a lighter search-result-only pull.
The postedWithinDays filter retains records whose exposed ISO posting timestamp is within the period. Listings that only expose human-readable age text remain in the output because their exact date cannot be verified. sortBy expresses the public search preference; JobStreet ultimately controls the ordering its public site returns.
Output example
{"jobId": "92506170","title": "Senior Software Engineer","companyName": "Example Sdn Bhd","companyUrl": "https://my.jobstreet.com/companies/example-123","location": "Kuala Lumpur","country": "MY","salaryText": "RM 5,000 – RM 7,000 per month","salaryCurrency": "MYR","salaryMin": 5000,"salaryMax": 7000,"salaryPeriod": "month","workType": "Full time","workArrangement": "Hybrid","classification": "Information & Communication Technology","subClassification": "Developers/Programmers","description": "Build and maintain modern cloud applications.","jobUrl": "https://my.jobstreet.com/job/92506170","postedAt": "2026-07-14T00:00:00.000Z","postedText": "1d ago","sourceUrl": "https://my.jobstreet.com/software-engineer-jobs/in-kuala-lumpur","scrapedAt": "2026-07-15T10:30:00.000Z"}
The actor writes an OUTPUT record and a detailed RUN_SUMMARY record to the default key-value store for every terminal path. The outcome is one of COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED, or CONFIG_ERROR. A valid search with no matches succeeds as VALID_EMPTY; a fully blocked valid search fails honestly as UPSTREAM_FAILED. Useful records are retained as PARTIAL if some pages or detail pages fail.
Pricing
This actor uses Pay per event + usage:
| Event | Price | When it is charged |
|---|---|---|
| Actor start | $0.00005 | Per GB of actor memory when the Actor starts (two events at the default 2048 MB). |
| JobStreet job record scraped | $0.005 | Only after a validated job record is persisted. |
Platform compute and residential proxy usage are charged separately by Apify under Pay per event + usage. Before extraction, the actor displays the maximum potential job-event cost based on maxResults. At the default 2048 MB, a run capped at 20 results has a maximum job-event charge of $0.10 plus $0.00010 for the memory-scaled start event and platform usage. Invalid input and records that fail validation are not billed as job results.
API and AI-agent use
Use this when you need public JobStreet vacancy data for APAC recruitment, salary benchmarking, or hiring research. Do not use it for applicant data or non-JobStreet job boards. It returns one record per job with title, company, location, salary, work arrangement, posting date, and apply URL. It is charged at $0.005 per persisted job plus a $0.00005-per-GB run start and platform usage.
JavaScript example:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/jobstreet-jobs-scraper').call({keywords: 'product manager', country: 'SG', location: 'Singapore', maxResults: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Reliability, limits, and responsible use
JobStreet may change its public markup, result order, data availability, or anti-bot controls. The actor uses residential proxies, a consistent browser session, retries, and Cloudflare block detection. If all required public routes are blocked, it fails with a visible diagnostic instead of returning a silent empty success. A smaller result cap is the best first run while validating a new keyword or location.
Use the public data in accordance with JobStreet’s terms, applicable privacy law, employment law, and your organization’s data-governance policies. Do not use the actor to collect private applicant information, bypass authentication, or make employment decisions without appropriate human review.