JobStreet Jobs Scraper — MY, SG, ID, PH (SEEK API) avatar

JobStreet Jobs Scraper — MY, SG, ID, PH (SEEK API)

Pricing

Pay per event

Go to Apify Store
JobStreet Jobs Scraper — MY, SG, ID, PH (SEEK API)

JobStreet Jobs Scraper — MY, SG, ID, PH (SEEK API)

From $0.20 per 1,000 jobs — 10x cheaper than typical JobStreet scrapers. Search JobStreet MY, SG, ID, PH + JobsDB HK, TH: title, company, parsed salary min/max, location, remote flag, dates, full description. Keyword/location/date filters + saved-search monitor with alerts. No login or API key.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Scrapers Delight

Scrapers Delight

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

💼 JobStreet Jobs Scraper — Malaysia, Singapore, Indonesia, Philippines (+ JobsDB HK & TH)

Scrape job listings from JobStreet — title, company, parsed salary min/max, location, job category, work type, remote/hybrid flag, posting date, and the full job description — across 6 Southeast-Asian country sites, for $0.20 per 1,000 jobs. Then run it on a schedule as a saved-search monitor that pings Slack, email, or a webhook the moment a fresh job drops.

Why this scraper?

This actorThe other JobStreet scraper
Price per 1,000 jobs$0.20~$2.01 ($0.002/result + $0.01 per run start)
Per-run start feenone$0.01
Sites covered6 — JobStreet MY, SG, ID, PH + JobsDB HK, TH4 — JobStreet MY, SG, ID, PH
Salary parsed to min/max/currency/period
Full job description (HTML + plain text)✅ optional✅ optional
Keyword / location / posted-date filters (server-side)
Monitor mode (only NEW jobs) + Slack/email/webhook alerts✅ (via integrations)
Raw API object kept on every record
Failure handlingevery request retried up to 4× with a fresh proxy session; a failed detail fetch never drops the job or crashes the run

Incumbent prices/features as shown on their public store listing, June 2026. Same data, ~10× less per job — because this actor reads the official SEEK search API directly (one HTTP request per 100 jobs) instead of rendering pages.


What does JobStreet Jobs Scraper do?

It extracts job listings from JobStreet — Southeast Asia's biggest job board, part of the SEEK group — and its sister site JobsDB, returning clean structured rows you can export to JSON, CSV, Excel, or pull via API:

  • 🌏 6 country sites, one actor — JobStreet Malaysia, Singapore, Indonesia, Philippines + JobsDB Hong Kong & Thailand (same SEEK platform, same fields).
  • 🔎 Search like the site — keywords, free-text location ("Penang", "Jakarta", "Cebu"), posted-within-N-days, relevance or newest-first. All server-side, so you only pull what you asked for.
  • 💰 Salary intelligence — the advertised salary label plus parsed salary_min, salary_max, salary_currency (MYR/SGD/IDR/PHP/HKD/THB), and salary_period (month/year/hour/day).
  • 🏠 Remote/Hybrid flags — the site's own work-arrangement tags plus boolean is_remote / is_hybrid.
  • 🗂️ Category data — classification + subclassification (with ids), work types, featured flag.
  • 🏢 Company data — company name, advertiser id/name, company profile URL, logo.
  • 📝 Full description (optional) — full HTML + clean plain-text description, expiry date, verified-employer flag, share link — one extra request per job via the same public API.
  • 🔔 Saved-search monitor — schedule it and get Slack / email / webhook alerts for newly posted jobs only.
  • 📦 Everything the API returns — each record keeps the source's complete raw object under raw, so no field is ever lost.
  • Fast & robust — 100 jobs per request, no pagination cap (verified to 12,000+ jobs per query), automatic retries with fresh proxy sessions.

No login, no API key, no browser automation — the actor reads the site's own public search API.


Who is it for?

  • 📊 Recruiters & talent teams tracking openings, salaries, and hiring companies across SEA markets.
  • 📈 Labor-market & salary researchers building structured datasets (parsed salary ranges, categories, locations).
  • 🎯 B2B / GTM teams using job postings as buying signals — who's hiring for what, where, right now.
  • 🤖 Job-board & aggregator builders syndicating fresh listings.
  • 👩‍💻 Job seekers monitoring a saved search and getting pinged the minute a matching job is posted.

Two ways to use it

  1. Bulk scrape — pull every job for a keyword/location/country into one clean dataset (set maxItems: 0 for the full result set).
  2. Saved-search monitor (the recurring play) — set monitorMode: true, attach an Apify Schedule (e.g. hourly), and the actor outputs/alerts only jobs new since the last run for that exact search scope.

How to use it (step by step)

  1. Click Try for free.
  2. Pick a Country (Malaysia, Singapore, Indonesia, Philippines, Hong Kong, Thailand).
  3. Enter Keywords (e.g. engineer) — or leave empty to sweep the whole site.
  4. (Optional) add a Location, a Posted within (days) window, and set Sort by.
  5. (Optional) turn on Fetch full job description.
  6. Click Start, then open the Dataset tab to view/export.
  7. (Optional) set monitorMode + a Schedule + an alert channel to get pinged on new jobs.

Quick start

{ "country": "my", "keywords": "engineer", "maxItems": 50 }

Saved-search monitor example

{
"country": "sg",
"keywords": "data engineer",
"location": "Singapore",
"sortBy": "date",
"monitorMode": true,
"alertOnNewJob": true,
"slackWebhookUrl": "https://hooks.slack.com/services/…"
}

Full-description bulk pull

{
"country": "ph",
"keywords": "customer service",
"postedWithinDays": 7,
"fetchFullDescription": true,
"maxItems": 500
}

Input

FieldWhat it does
countrymy · sg · id · ph · hk · th (JobStreet / JobsDB country site)
keywordssearch keywords (empty = all jobs on the site)
locationfree-text location, server-side (city/state/region)
postedWithinDaysonly jobs listed in the last N days (server-side; 0 = any time)
sortByrelevance (site default) or date (newest first — best for monitors)
maxItemshard cap per run (default 50; 0 = unlimited full sweep)
fetchFullDescriptionadd full HTML + text description, expiry, verified flag (1 extra request/job)
monitorMode, alertOnNewJobrecurring watcher: output + alert only NEW jobs
webhookUrl, slackWebhookUrl, emailRecipientsalert channels
proxyConfiguration, requestConcurrencyproxy + parallelism (datacenter is enough)

Output

One dataset record per job. Flattened fields plus the complete source object under raw:

  • 🆔 id, 🔗 url, 🏷️ title, 🏢 company_name
  • ✂️ teaser, bullet_points[], abstract, 📝 description_html, description_text*
  • 💵 salary_label, salary_min, salary_max, salary_currency, salary_period
  • 📍 location, location_country, locations[], country, country_code, site, source_brand
  • 🗂️ classification, classification_id, subclassification, subclassification_id
  • 👔 work_types[], work_arrangements[], is_remote, is_hybrid
  • 🪪 advertiser_id, advertiser_name, company_profile_url, logo_url
  • 📅 listing_date, listing_date_display, expires_at, is_expired, is_verified*, is_featured
  • 🔗 share_link*, ✨ is_new (monitor mode), 📦 raw, 🕒 scraped_at

* = filled by the optional fetchFullDescription enrichment.

Example record (truncated):

{
"id": "92618062",
"url": "https://my.jobstreet.com/job/92618062",
"title": "Operations Engineer",
"company_name": "WCM Group",
"salary_label": "RM 5,000 – RM 6,000 per month",
"salary_min": 5000,
"salary_max": 6000,
"salary_currency": "MYR",
"salary_period": "month",
"location": "Kota Damansara, Selangor",
"country": "Malaysia",
"classification": "Mining, Resources & Energy",
"subclassification": "Power Generation & Distribution",
"work_types": ["Full time"],
"work_arrangements": ["On-site"],
"is_remote": false,
"listing_date": "2026-06-10T00:24:10Z",
"advertiser_name": "WCM Machinery Sdn Bhd",
"bullet_points": ["Performance bonus and annual salary review", "…"]
}

How much does it cost?

Pay-per-event — you pay for what you pull. No subscription, no per-run start fee.

EventWhat it coversPrice
lot-scrapedeach job returned$0.0002 / job
lot-detail-enrichedeach full-description fetch$0.0002 / job
monitor-run-completedeach scheduled watch run$0.02 / run
new-lot-detectedeach newly posted job found by the monitor$0.001 / job
alert-deliveredeach Slack/email/webhook push$0.002 / alert

1,000 jobs = $0.20 (or $0.40 with full descriptions). An hourly saved-search monitor costs about $0.50/day plus a fraction of a cent per new job it actually finds. The leading alternative charges ~$2.01 for the same 1,000 jobs.


Job listings are public data that employers pay to broadcast as widely as possible. This actor reads the same public search API the site itself uses, collects no candidate/personal data (only job ads and the hiring company's public details), and respects sane request rates. Scraping publicly available data is generally legal, but automated access may sit in a gray zone under the site's Terms of Service — review JobStreet's/SEEK's current ToS before commercial use or redistribution of the data. You are responsible for your use of the output.


FAQ

Which countries does it cover? JobStreet Malaysia, Singapore, Indonesia, and the Philippines — plus JobsDB Hong Kong and Thailand, which run on the same SEEK platform with identical data. One country input switches site.

Do I need an account, login, or API key? No. The actor reads the site's public search API directly — no account, cookies, or API key required.

How is this 10× cheaper than other JobStreet scrapers? It pulls 100 jobs per single API request instead of rendering pages, so the compute cost is tiny — and the per-event price passes that on: $0.0002/job, no run-start fee.

Does it parse salaries? Yes — alongside the raw advertised label you get salary_min, salary_max, salary_currency (MYR, SGD, IDR, PHP, HKD, THB), and salary_period (month/year/hour/day). Jobs that don't advertise a salary have these as null.

Can it tell me if a job is remote? Yes — work_arrangements carries the site's own On-site/Hybrid/Remote tags, plus convenience booleans is_remote and is_hybrid.

How do I get the full job description? Turn on fetchFullDescription — each job gets description_html and a clean description_text, plus expiry date, verified-employer flag, and share link.

Can I monitor a saved search and get alerts? Yes. Turn on monitorMode, attach an Apify Schedule, and add a Slack/webhook/email channel. Each run outputs and alerts only jobs new since the last run for that exact country+keywords+location scope.

Can I scrape ALL jobs in a country? Yes — leave keywords empty and set maxItems: 0. The API has no pagination depth cap; full sweeps of 50,000–100,000+ jobs are possible (mind the runtime).

How fresh is the data? Live — every run hits the live search API. Use postedWithinDays: 1 + a schedule for a rolling feed of brand-new postings.

How do I filter by date posted? postedWithinDays (1–31) applies the site's own server-side date filter, so you never pay for stale listings.

What's in the raw field? The complete, unmodified job object from the source API — every field the platform returns, including ones not flattened (employer ids, branding, SEO hierarchy, tags). Your pipeline never loses data to our schema choices.

How fast is it? About 100 jobs/second for listing data. 1,000 jobs with full descriptions typically take 2–4 minutes at the default concurrency.

How do I export the data? JSON, CSV, Excel, HTML, or RSS from the Dataset tab, or via the Apify API.

Can I integrate with Make, Zapier, n8n, or my backend? Yes — use the webhook/Slack channels for alerts, or the Apify API to pipe the dataset anywhere.


You might also like

  • 💼 SEEK Jobs Scraper (Australia & New Zealand — same platform family)
  • 📡 Job-posting intent monitors (hiring signals for GTM teams)
  • 🌏 Other Southeast-Asia job & lead-gen scrapers

Feedback

Found a missing field or want a new filter (classification, salary band, work type)? Open an issue on the actor — fast fixes and feature requests welcome.