JobStreet SEA Scraper [~$1.3/1K💰] | Salaries | Hiring Data
Pricing
from $0.77 / 1,000 results
JobStreet SEA Scraper [~$1.3/1K💰] | Salaries | Hiring Data
Scrape JobStreet job listings from Malaysia, Singapore, Philippines & Indonesia via the SEEK internal JSON and GraphQL API - titles, companies, salaries, locations, work arrangements and full descriptions. Build job databases, salary benchmarks and hiring intelligence across Southeast Asia.
Pricing
from $0.77 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
JobStreet SEA Jobs Scraper — MY, SG, PH, ID — Salaries, Hiring Data & Salary Benchmarks
Extract job listings from JobStreet Southeast Asia — Malaysia (my.jobstreet.com), Singapore (sg.jobstreet.com), Philippines (ph.jobstreet.com) and Indonesia (id.jobstreet.com) — via the same internal SEEK JSON + GraphQL API the JobStreet site itself uses. Get job title, company, salary, location, classification, work type/arrangement, posted date and the full job description for every listing across all four SEA markets in a single run. No browser, no login, no API key.
Main Use Cases
- Salary benchmarking — aggregate advertised salary ranges across roles, markets and locations for your Salary Guide or compensation review (JobStreet is the primary salary data source cited in SEEK's own SEA salary reports)
- Recruiters & sourcers — build candidate-outreach lists by keyword, location and posting date for MY, SG, PH and ID
- Labor-market researchers — track job-post volumes, classifications and work-arrangement trends (remote/hybrid/on-site) over time
- Job aggregators & job boards — feed a normalized job feed for Southeast Asia from one actor
- Hiring-intelligence dashboards — monitor new job postings daily with
sortMode: ListedDateandpostedWithinDays
Build Job Databases & Salary Benchmarks Without the Official JobStreet API
JobStreet is Southeast Asia's largest job board (part of the SEEK group). It publishes no public bulk-export API for job listings. This actor queries the SEEK internal search API (/api/jobsearch/v5/search) to enumerate job listings and the SEEK GraphQL API (/graphql) to pull each job's full description and metadata — the exact endpoints the JobStreet website itself calls. It returns clean, structured JSON rows ready for export to JSON, CSV or Excel.
How It Works
- Search —
GET https://{country}.jobstreet.com/api/jobsearch/v5/search?siteKey={MY|SG|PH|ID}-Main&sourcesystem=houston&page=N&pageSize=100&keywords=...&where=...&daterange=...&sortMode=...&locale=...Returns up to 100 jobs per request with title, company, salary label, location, work type, work arrangement, classification, listing date and teaser. Paginated withpageuntilmaxResultsis reached. - Detail (optional) —
POST https://{country}.jobstreet.com/graphqlwith thejobDetails(id:)query returns the full description HTML, salary, work types, classifications, advertiser info, status, expiry and recruiter phone.
Why this strategy? JobStreet's HTML pages are served behind a Cloudflare challenge (cf-mitigated: challenge), but the JSON search API and GraphQL endpoint are not Cloudflare-walled — they return clean JSON with just a browser User-Agent. This keeps the actor ~10x cheaper and far more stable than a Playwright scraper, and it never touches the walled HTML.
Input Parameters
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
countries | array | No | ["MY","SG","PH","ID"] | JobStreet country sites to search: MY, SG, PH, ID |
keywords | string | Yes | software engineer | Search query — e.g. software engineer, accountant, data analyst |
location | string | No | "" | Free-text location filter, e.g. Kuala Lumpur, Singapore, Jakarta, Metro Manila. Empty = all locations |
maxResults | integer | No | 100 | Max listings to scrape (max 10,000) |
includeDetails | boolean | No | true | Fetch full description + metadata per job via GraphQL (one extra request per job) |
postedWithinDays | integer | No | 0 | Only jobs posted in the last N days (0 = any time) |
sortMode | string | No | KeywordRelevance | KeywordRelevance or ListedDate |
proxyConfiguration | object | No | { "useApifyProxy": false } | Standard Apify proxy editor. No proxy by default. Only enable a residential group if your IP gets blocked with HTTP 403 |
Output Fields
Each dataset item is one job listing:
| Field | Description |
|---|---|
jobId | SEEK job ID |
title | Job title |
company | Company / advertiser name |
advertiserId | SEEK advertiser ID |
url | Canonical JobStreet job URL |
country | MY, SG, PH or ID |
location | Location label (city, state) |
locationCountryCode | ISO country code of the location |
salary | Advertised salary label (e.g. RM 4,500 – RM 6,500 per month) |
workType | Full time / Part time / Contract etc. |
workArrangement | On-site / Hybrid / Remote |
classifications | Classification + sub-classification |
postedDate | ISO listing date |
postedDateDisplay | Human-readable date (4d ago) |
teaser | Short listing teaser |
advertiserVerified | Verified-employer flag |
status / isExpired / expiresAt | Listing lifecycle |
description | Full description (HTML) |
descriptionText | Full description (plain text) |
Example Input
{"countries": ["MY", "SG", "PH", "ID"],"keywords": "software engineer","location": "Kuala Lumpur","maxResults": 1000,"includeDetails": true,"postedWithinDays": 30,"sortMode": "ListedDate"}
Example Output
{"jobId": "94498339","title": "Software Engineer","company": "SILVERSTREAM TECHNOLOGY SDN. BHD.","advertiserId": "60627682","url": "https://my.jobstreet.com/job/94498339","country": "MY","location": "Puchong, Selangor","locationCountryCode": "MY","salary": "RM 4,500 – RM 6,500 per month","workType": "Full time","workArrangement": "Hybrid","classifications": [{ "classification": "Information & Communication Technology", "subClassification": "Engineering - Software" }],"postedDate": "2026-09-08T05:10:53Z","postedDateDisplay": "4d ago","teaser": "Design cutting-edge software solutions...","advertiserVerified": true,"status": "Active","isExpired": false,"expiresAt": "2026-10-08T12:59:59.999Z","description": "<p><strong>About the role</strong>...","descriptionText": "About the role\n\nICAS Technology..."}
Integrations & Automation
- API — run this actor programmatically from the Apify API, JavaScript/Python SDK, or any REST client; pull results from the dataset endpoint
- Webhooks / Make / Zapier — trigger runs and push new listings to Slack, Sheets or your ATS
- Scheduling — for daily new-jobs monitoring, schedule a run with
postedWithinDays: 1andsortMode: ListedDate. This recurring usage also improves the actor's relevance ranking in Apify Store search.
Related Actors
- JobStreet Job Scraper 🌏 — 8 Asia-Pacific countries
- Jobstreet & JobsDB Jobs Scraper · SE-Asia Salary & Filters
- Seek, JobStreet & JobsDB Scraper — 8 Countries, $2.50/1K
- JobStreet Jobs Scraper — MY, SG, ID, PH (SEEK API), from $0.20/1K
- JobStreet Jobs Scraper - Jobs, Salaries & Employers
FAQ
Why use this actor instead of the official JobStreet / SEEK API?
JobStreet/SEEK do not offer a public, self-serve job-search API for third parties. The only practical API route is paid aggregator partnerships or the SEEK Affiliate program with approval requirements. This actor reads the same internal JSON + GraphQL endpoints the JobStreet website itself calls, so you get the job listing search and full descriptions programmatically without an API key or partnership.
What are alternatives to a JobStreet scraper / to this data source?
- easyapi/jobstreet-job-scraper — 8 APAC countries, higher per-result price ($0.00299)
- memo23/jobstreet-scraper — adds JobsDB markets (VN, TH, HK) and incremental mode
- santamaria-automations/seek-scraper — also covers Australia/NZ Seek and JobsDB HK/TH at $2.50/1K
- Official channels — SEEK Employer reports and JobStreet's own published Salary Guides (salary data beyond job ads requires their commercial reports)
How can I scrape JobStreet job listings without a browser?
This actor is HTTP-only against the site's own JSON API — no Playwright/Puppeteer. It bypasses the Cloudflare wall on the HTML pages because the underlying JSON endpoints answer from a plain datacenter IP with a browser User-Agent. That makes it roughly 10x cheaper than a browser-based scraper and far more stable.
How do I benchmark salaries in Malaysia, Singapore, Philippines and Indonesia?
Run this actor with a job-title keyword per market (e.g. software engineer), leave location empty, set maxResults to a broad sample (e.g. 5,000 per run) and aggregate the salary field into your own pipeline. Advertised salary ranges are exactly the data SEEK uses to compile its own SEA salary reports, so the same source produces comparable benchmarks. Note: many employers don't publish a figure, so salary is empty on some ads.
What is the cost to scrape 1,000 JobStreet jobs?
Roughly ~1,010 requests (10 search requests + 1,000 detail requests) for a 1,000-job run with full details. Free Apify accounts get a capped preview (10 listings); paid accounts can scrape up to 10,000 listings per run. No residential proxy needed for typical volumes.
Does the scraper need a login or proxy?
No login, no API key. The default AUTO proxy group works because the SEEK JSON endpoints respond from datacenter IPs. Only enable a residential proxy group if your IP gets rate-limited with HTTP 403.
SEO Keywords
jobstreet scraper, jobstreet api, jobstreet data extraction, jobstreet malaysia, jobstreet singapore, jobstreet indonesia, jobstreet philippines, my.jobstreet.com scraper, sg.jobstreet.com scraper, id.jobstreet.com scraper, ph.jobstreet.com scraper, malaysia job listings data, singapore jobs dataset, jakarta jobs data, manila job listings, job board scraper, seek api alternative, salary benchmarking southeast asia, hiring data, recruitment data, job market research, remote work trends asia, job aggregator feed
For AI Agents & LLM Apps
Purpose: Returns structured job listings from JobStreet SEA (MY/SG/PH/ID) — title, company, salary label, location, work type/arrangement, dates and full description — as one dataset item per job.
Minimal input:
{ "keywords": "software engineer", "countries": ["SG"], "includeDetails": true }
Variants:
- Daily-new-jobs monitor:
{ "keywords": "data analyst", "countries": ["MY"], "postedWithinDays": 1, "sortMode": "ListedDate", "maxResults": 200 } - Broad market sample for salary aggregation:
{ "keywords": "", "countries": ["MY","SG","PH","ID"], "maxResults": 5000, "includeDetails": false }
Output fields: jobId, title, company, advertiserId, url, country, location, locationCountryCode, salary, workType, workArrangement, classifications, postedDate, postedDateDisplay, teaser, advertiserVerified, status, isExpired, expiresAt, description, descriptionText.
Behaviors an agent should know:
keywordsis the only required input field.includeDetails(defaulttrue) adds one GraphQL request per job and populatesdescription/descriptionText; setfalseto halve request count when descriptions aren't needed.maxResultscaps total listings; free-tier runs are limited to ~10 items.countriesis an array — pass["MY"],["SG"],["PH"],["ID"], or any combination.locationis free-text (e.g.Kuala Lumpur) and combined with the site's ownwherefilter.- Billing is per result ($0.0008) plus per detail ($0.0005) when
includeDetailsis on — a 1,000-job run with details ≈ $1.30.
Legal & Compliance Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by JobStreet, SEEK Limited, or any of their subsidiaries. It accesses only publicly available job listing pages and the same public API endpoints the JobStreet website itself calls — no login bypass, no CAPTCHA solving, no access to non-public data. Users are responsible for compliance with JobStreet's Terms of Service and all applicable laws in the countries where they use the data. Advertised salary and job data should not be relied on as the sole source for HR decisions; verify against official reports where required.