Jobstreet Jobs Search Scraper
Under maintenancePricing
from $2.99 / 1,000 jobstreet job records
Jobstreet Jobs Search Scraper
Under maintenanceScrape job listings from Jobstreet.com.my, Malaysia and Southeast Asia's leading job platform. Extract job titles, companies, locations, salaries, and job types for regional recruitment and market analysis.
Pricing
from $2.99 / 1,000 jobstreet job records
Rating
0.0
(0)
Developer
Jobs API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Share
What does JobStreet Public Jobs Scraper do?
This Apify Actor is designed to extract public JobStreet job postings across Asia-Pacific. It parses official search pages, verifies each posting on its official detail page, and writes only complete source-backed job records to the default dataset.
Current audit status: SKIPPED. On 2026-09-24, Chrome showed JobStreet's “Performing security verification” page at the configured public search URL. No Actor request or dataset run followed. Do not run this Actor against JobStreet while that access challenge is present.
The existing implementation uses bounded, sequential, ordinary direct HTTPS requests and Cheerio. It does not use proxy routing, custom request headers, retries, automatic redirects, alternate identities, or challenge bypass. HTTP 401/403/429/451 or a visible source-authored denial/challenge stops the run, discards buffered records, and is recorded as SKIPPED with diagnostics and request receipts.
Why use JobStreet Public Jobs Scraper?
- Collect complete detail-page descriptions instead of abbreviated search cards.
- Verify posting IDs, canonical URLs, titles, employers, and query relevance before output.
- Search the configured JobStreet country site with bounded pagination and sequential detail requests.
- Schedule runs, call the Actor through the Apify API, export datasets, and connect Apify integrations.
How to scrape JobStreet jobs
- Open the Actor input tab and choose a mode.
- Select the JobStreet country and enter a query and optional location.
- Keep
maxItemsandmaxPagessmall for the first run. - If the ordinary public page presents a denial, CAPTCHA, or security verification, stop; this Actor records
SKIPPEDand does not switch routes or identities. - When ordinary public access is available, inspect the dataset plus
RUN_SUMMARY,RUN_DIAGNOSTICS, andREQUEST_RECEIPTS. - Download the data or use the API and integrations for automation.
Modes
search— one query and up tomaxItemsverified postings.searchMultiple— up to five queries, with a bounded quota and stable deduplication per query.single— one official/job/<id>or/job-details/<id>URL.multiple— a bounded list of official detail URLs.startUrls— official search and/or detail URLs.
Generated searches use the selected country subdomain (au, hk, id, my, nz, ph, sg, or th). Pagination is limited to maxPages 1–3, maxItems to 10, and each request to 5–45 seconds. Requests are sequential.
Input
See .actor/input_schema.json for the complete definition. A normal local search is:
{"mode": "search","country": "my","query": "developer","location": "Kuala Lumpur","maxItems": 3,"maxPages": 2,"requestTimeoutSecs": 25}
URL-list modes use objects, for example:
{"mode": "multiple","urls": [{ "url": "https://my.jobstreet.com/job/93421879" },{ "url": "https://my.jobstreet.com/job/93421880" }],"maxItems": 2}
Only HTTPS URLs on the official JobStreet country hosts are accepted. Posting IDs, canonical URLs, titles, employers, and search-query matches are verified before output.
What data can JobStreet Public Jobs Scraper extract?
| Field | Type | Description |
|---|---|---|
jobId | string | Verified JobStreet posting identifier |
jobTitle | string | Public job title |
employer | string | Hiring organization |
location | string | Public advertised or structured location |
description | string | Complete normalized detail text |
employmentType | string | Published employment type |
salary | string | Published compensation text when available |
publicUrl | string | Canonical official posting URL |
applicationUrl | string | Explicit source application URL when published |
How much will it cost to scrape JobStreet?
This Actor uses lightweight HTTP requests, so compute usage is normally modest. Cost depends on your Apify plan, selected memory, run duration, result limits, and detail-page count. When JobStreet exposes a challenge or denial, the run stops promptly without retries or alternate routes.
Output and run state
The strict output definition is .actor/dataset_schema.json. A record can contain the title, employer, company URL/logo, canonical URL, advertised and structured location, remote flag, salary, employment type, category, skills, dates, teaser/highlights, JSON-LD/public-detail description, sectioned responsibilities/qualifications/benefits, source-backed application URL, and verification/source receipts. Rows are emitted only after detail and canonical identity checks and at least 21 distinct, populated, source-grounded facts; IDs, URL-only values, aliases, metadata, and duplicate fact values do not count.
Optional values are omitted rather than emitted as null, blank, placeholder, or empty values. An application URL is copied only when an explicit source link is published; the canonical detail URL is never mislabeled as an application URL.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. No live output example is included: this audit encountered a source-authored access challenge and emitted no records.
Run state is stored outside the job dataset:
RUN_SUMMARY— mode, counts, timing, request limits, and local-only provenance;RUN_DIAGNOSTICS— target, transport, redirect, or parsing errors;RUN_SKIPS— candidates rejected after verification;RUN_HEALTH— quality and access-mode receipts;REQUEST_RECEIPTS— one record per attempted request, including HTTP status or bounded visible challenge evidence.
RUN_SUMMARY.status is the platform outcome (SUCCEEDED or FAILED); resultStatus independently reports COMPLETE, LIMITED, SKIPPED, DEFERRED, NO_DATA, or FAILED. A handled source challenge is SUCCEEDED / SKIPPED and discards buffered jobs. Generic transport errors are DEFERRED, not access blocks. Verified rows already stored before a later non-block failure remain SUCCEEDED / LIMITED; a fatal zero-row failure writes its diagnostic to KVS and calls Actor.fail() as FAILED / FAILED.
Local development
The offline checks are npm test, node --check on the source files, and apify validate-schema. npm run lint is not currently configured for ESLint 9. A live Actor run is not qualified by this audit and must not be made while the source challenge remains. If ordinary access is independently available in a future audit, use a new actor-relative storage directory and --resurrect; never reuse a dataset directory or use --purge.
The validator accepts an isolated storage path, for example npm run validate -- storage-validation-jobstreet-<unique-suffix>. It checks output counts, official URL/ID consistency, duplicate IDs/URLs, recursive null/blank/placeholder/empty values, application provenance, KVS diagnostics, and request receipts.
FAQ, disclaimer, and support
Why is a run marked SKIPPED?
JobStreet returned a source-authored security-verification page on the public search URL during the 2026-09-24 Chrome check. Per the access policy, stop requests and do not retry, use a proxy, change identity or headers, switch routes, or solve the challenge. The current Actor audit is marked SKIPPED; there is no dataset or Actor request receipt from that Chrome-only observation.
Does this Actor collect applicant data?
No. It collects public job advertisements only and does not access candidate accounts or authenticated recruiting systems.
Our Actors are ethical and do not extract private user data. They only extract publicly available job information. Results can still contain personal data published in an advertisement. Personal data is protected by the GDPR in the European Union and by other regulations worldwide. Do not process personal data without a legitimate reason; consult your lawyers if you are unsure.
Use the Actor API tab for programmatic access and the Issues tab for support. Include a redacted input and run ID when reporting a reproducible problem.
Responsible use
Collect only public job information, respect JobStreet’s terms and robots directives, and use modest bounded limits. Do not use this Actor for authenticated pages, paywall or challenge bypassing, or collection of candidate or recruiter personal data. If the source presents an access barrier, stop and leave the Actor skipped.