JobStreet Jobs Scraper — APAC Hiring Data avatar

JobStreet Jobs Scraper — APAC Hiring Data

Pricing

from $5.00 / 1,000 jobstreet job record scrapeds

Go to Apify Store
JobStreet Jobs Scraper — APAC Hiring Data

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

Khadin Akbar

Maintained by Community

Actor 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.

FieldDescription
jobId, title, jobUrlStable public vacancy identity and direct URL.
companyName, companyUrlEmployer information where JobStreet exposes it.
location, countryPublic location and selected JobStreet market.
salaryText, salaryCurrency, salaryMin, salaryMax, salaryPeriodDisplayed salary plus normalized values when available.
workType, workArrangementEmployment type and on-site, hybrid, or remote signal.
classification, subClassificationJobStreet occupation taxonomy.
description, postedAt, postedTextPublic teaser/detail text and exposed posting date.
sourceUrl, scrapedAtSearch 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:

EventPriceWhen it is charged
Actor start$0.00005Per GB of actor memory when the Actor starts (two events at the default 2048 MB).
JobStreet job record scraped$0.005Only 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.