JobStreet Jobs Scraper (MY, SG, PH, ID) avatar

JobStreet Jobs Scraper (MY, SG, PH, ID)

Pricing

from $1.50 / 1,000 job listings

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

JobStreet Jobs Scraper (MY, SG, PH, ID)

Scrape JobStreet job listings from Malaysia, Singapore, the Philippines and Indonesia with full descriptions, parsed salaries and company profiles. Export to CSV, Excel, JSON or XML.

Pricing

from $1.50 / 1,000 job listings

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

ParseForge Banner

๐Ÿ’ผ JobStreet Jobs Scraper

๐Ÿš€ Export JobStreet job listings from Malaysia, Singapore, the Philippines and Indonesia in seconds. 48 fields per job, full descriptions, salaries parsed into numbers, exact ISO listing and expiry dates, and the employer's profile (industry, size, rating, website) on every row.

This Actor collects job listings from the four JobStreet country sites (my.jobstreet.com, sg.jobstreet.com, ph.jobstreet.com and id.jobstreet.com). It reads the same JSON endpoints the JobStreet website itself uses, so every field you see on a listing page is in your dataset, plus the fields the page hides: the exact listing timestamp, the expiry date, the application screening questions and the employer's company profile.

Coverage at the time of writing: 15,571 live "engineer" jobs in Malaysia, 22,472 in Singapore, 14,505 in the Philippines and 9,016 in Indonesia, all reachable to the last page. Search by keyword, location, classification (29 industries, 336 sub-classifications), work type, work arrangement, listing date and salary band, or paste JobStreet search and job URLs directly.

๐ŸŽฏ Target Audience๐Ÿ’ก Primary Use Cases
Recruiters and staffing agencies in Southeast AsiaBuild daily feeds of new openings per role, city or industry
HR analysts and compensation teamsBenchmark salary bands with numeric min/max/currency/period
Job boards and aggregatorsSyndicate listings with full descriptions and employer logos
Sales and lead generation teamsSpot companies that are hiring, with size, industry and website
Researchers and journalistsTrack hiring demand across MY, SG, PH and ID over time

๐Ÿ“‹ What the JobStreet Jobs Scraper does

  • Searches any of the four JobStreet country sites by keyword and location, with every filter the site offers.
  • Pages through the full result set at 100 listings per call, deduplicated by job ID.
  • Optionally opens each job to add the full description (text and HTML), expiry date, status, application questions, cover image and video.
  • Attaches the employer's company profile: industry, size, website, star rating, review count and about text.
  • Parses the salary label into salaryMin, salaryMax, salaryCurrency and salaryPeriod, handling RM, S$, PHP and Indonesian Rp formats.
  • Accepts JobStreet search URLs and single job URLs as input, honouring the filters in the URL.

๐Ÿ’ก Why it matters: JobStreet shows "2d ago" and "RM 3,100 โ€“ RM 3,500 per month" as text. This Actor gives you the exact ISO timestamp, the expiry date and the salary as numbers, so you can sort, filter and chart hiring data instead of cleaning it by hand.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

๐Ÿ“Š Output

FieldDescription
๐Ÿ–ผ imageUrlEmployer logo
๐Ÿ“Œ titleJob title
๐Ÿ”— urlCanonical job URL on the country site
๐Ÿ†” idJobStreet job ID
๐Ÿข companyEmployer name as shown on the listing
๐ŸŒ companyUrlEmployer profile URL on JobStreet
๐Ÿท companyIdJobStreet company profile ID
๐Ÿ“‡ advertiserIdAdvertiser account ID
โœ… advertiserVerifiedWhether JobStreet has verified the advertiser (Yes/No)
๐Ÿ“ locationLocation label (suburb, city, region)
๐ŸŒ country / ๐Ÿณ countryCodeCountry name and ISO code
โฑ workTypeFull time, Part time, Contract/Temp, Casual/Vacation
๐Ÿ  workArrangementOn-site, Hybrid, Remote
๐Ÿ—‚ classification / ๐Ÿ“‚ subClassificationIndustry classification and sub-classification, with their IDs
๐ŸŽฏ normalizedRoleJobStreet's normalized role slug (e.g. data-analyst)
๐Ÿ’ฐ salarySalary label as published
๐Ÿ’ต salaryMin / ๐Ÿ’ธ salaryMaxParsed numeric bounds
๐Ÿ’ฑ salaryCurrency / ๐Ÿ“† salaryPeriodISO currency and pay period (month, year, hour, day)
๐Ÿ“… listedAt / ๐Ÿ—“ listedAtDisplayExact ISO listing timestamp and the "2d ago" label
โŒ› expiresAtListing expiry timestamp
๐Ÿšฆ status / ๐Ÿ”š isExpired / โญ isFeatured / ๐Ÿ“ข adTypeListing state flags
๐Ÿ“ teaser / ๐Ÿ”ธ bulletPointsShort summary and the employer's highlight bullets
๐Ÿ“„ descriptionText / ๐Ÿงฌ descriptionHtml / ๐Ÿ“ descriptionLengthFull job description as plain text and HTML
โ” applicationQuestionsScreening questions asked at apply time
๐Ÿ–ผ coverImageUrl / ๐ŸŽฅ videoUrlEmployer branding media
๐Ÿญ companyIndustry / ๐Ÿ‘ฅ companySize / ๐Ÿ”— companyWebsiteEmployer profile facts
โญ companyRating / ๐Ÿ—ฃ companyReviewCount / ๐Ÿข companyDescription / ๐Ÿ”— companyJobsUrlEmployer reviews and about text
๐Ÿ•’ scrapedAtWhen the row was collected
โŒ errorAlways null on data rows; error rows carry only this field and are never charged

Values the employer withholds are returned as Not Disclosed; structurally inapplicable values are N/A. No field is ever null except error.

Sample records

{
"imageUrl": "https://image-service-cdn.seek.com.au/7871b3842076b35de89d3ee9ccda08d1d10140db/ee4dce1061f3f616224767ad58cb2fc751b8d2dc",
"title": "Operations Engineer",
"url": "https://ph.jobstreet.com/job/94391238",
"id": "94391238",
"company": "Manila Water Company, Inc.",
"companyUrl": "https://ph.jobstreet.com/companies/manila-water-company-inc-168557661846653",
"companyId": "168557661846653",
"advertiserId": "60244064",
"advertiserVerified": "Yes",
"location": "Metro Manila",
"country": "Philippines",
"countryCode": "PH",
"workType": "Full time",
"workArrangement": "Not Disclosed",
"classification": "Engineering",
"subClassification": "Other",
"classificationId": "N/A",
"subClassificationId": "N/A",
"normalizedRole": "N/A",
"salary": "Not Disclosed",
"salaryMin": "Not Disclosed",
"salaryMax": "Not Disclosed",
"salaryCurrency": "Not Disclosed",
"salaryPeriod": "Not Disclosed",
"listedAt": "2026-09-03T06:25:28.045Z",
"listedAtDisplay": "14h ago",
"expiresAt": "2026-10-03T13:59:59.999Z",
"status": "Active",
"isExpired": "No",
"isFeatured": "No",
"adType": "N/A",
"teaser": "Conduct hands-on operation of the wastewater plant for implementation of operational philosophies, programs, and plans.",
"bulletPoints": [],
"descriptionText": "QUALIFICATIONS:\nโ€ข Candidate must possess at least a Bachelor's/College Degree in Engineering (Mechanical, Electrical, Chemical, or Sanitary).\n\nโ€ข Fresh grad or a...",
"descriptionHtml": "<p><strong>QUALIFICATIONS:</strong></p><ul><li><p>Candidate must possess at leas...",
"descriptionLength": 1661,
"applicationQuestions": [
"How many years' experience do you have as an Operations Engineer?",
"Which of the following types of qualifications do you have?",
"What's your expected monthly basic salary?",
"Do you have a valid Philippine driver's licence?",
"Are you willing to relocate for this role?"
],
"coverImageUrl": "Not Disclosed",
"videoUrl": "Not Disclosed",
"companyIndustry": "Electricity, Gas & Water Services",
"companySize": "1,001-5,000 employees",
"companyWebsite": "http://www.manilawater.com",
"companyRating": 4.4,
"companyReviewCount": 67,
"companyDescription": "At Manila Water, we take pride in our way of working, serving, and caring that defines who we are...",
"companyJobsUrl": "https://ph.jobstreet.com/Manila-Water-Company,-Inc.-jobs/at-this-company",
"scrapedAt": "2026-09-03T21:03:50.959Z",
"error": null
}
{
"imageUrl": "https://bx-branding-gateway.cloud.seek.com.au/bd3c8728-5406-4c44-962c-023d472a6e0e.1/jdpLogo",
"title": "Business Analyst - Data Analytics (Chief Data Office)",
"url": "https://sg.jobstreet.com/job/94400061",
"id": "94400061",
"company": "Synapxe",
"companyUrl": "https://sg.jobstreet.com/companies/synapxe-175608056282578",
"companyId": "175608056282578",
"advertiserId": "60286019",
"advertiserVerified": "Yes",
"location": "One North, Central Region",
"country": "Singapore",
"countryCode": "SG",
"workType": "Full time",
"workArrangement": "On-site",
"classification": "Information & Communication Technology",
"subClassification": "Business/Systems Analysts",
"classificationId": "6281",
"subClassificationId": "6283",
"normalizedRole": "Data-Business-Analyst",
"salary": "Not Disclosed",
"salaryMin": "Not Disclosed",
"salaryMax": "Not Disclosed",
"salaryCurrency": "Not Disclosed",
"salaryPeriod": "Not Disclosed",
"listedAt": "2026-09-03T10:05:17Z",
"listedAtDisplay": "10h ago",
"expiresAt": "2026-10-03T09:56:03.000Z",
"status": "Active",
"isExpired": "No",
"isFeatured": "No",
"adType": "ORGANIC",
"teaser": "Business Intelligence, Business Analyst",
"bulletPoints": [
"Pioneer innovative HealthTech solutions",
"Grow your professional knowledge via Synapxe academy",
"Enjoy vibrant work environment with competitive perks!"
],
"descriptionText": "Company description:\n\nSynapxe is the national HealthTech agency inspiring tomorrow's health...",
"descriptionHtml": "Company description:<br><br><p>Synapxe is the national HealthTech agency inspiri...",
"descriptionLength": 2561,
"applicationQuestions": [],
"coverImageUrl": "https://image-service-cdn.seek.com.au/d0b46c3f084dac71482e8029dad811e79976fdbf/a868bcb8fbb284f4e8301904535744d488ea93c1",
"videoUrl": "Not Disclosed",
"companyIndustry": "Computer Software & Networking",
"companySize": "1,001-5,000 employees",
"companyWebsite": "https://www.synapxe.sg/",
"companyRating": "Not Disclosed",
"companyReviewCount": "Not Disclosed",
"companyDescription": "Synapxe is the national HealthTech agency inspiring tomorrow's health. The nexus of HealthTech, we connect people and sy...",
"companyJobsUrl": "https://sg.jobstreet.com/Synapxe-jobs/at-this-company",
"scrapedAt": "2026-09-03T21:03:53.370Z",
"error": null
}
{
"imageUrl": "https://bx-branding-gateway.cloud.seek.com.au/458bfe2b-6e68-499f-908a-dc049293e6c4.1/jdpLogo",
"title": "FIELD ENGINEER",
"url": "https://my.jobstreet.com/job/94354951",
"id": "94354951",
"company": "GroWTh Avenue",
"companyUrl": "https://my.jobstreet.com/companies/growth-avenue-168555825327536",
"companyId": "168555825327536",
"advertiserId": "60179686",
"advertiserVerified": "Yes",
"location": "Shah Alam/Subang",
"country": "Malaysia",
"countryCode": "MY",
"workType": "Full time",
"workArrangement": "On-site",
"classification": "Engineering",
"subClassification": "Field Engineering",
"classificationId": "1209",
"subClassificationId": "6030",
"normalizedRole": "field-engineer",
"salary": "RM 3,500 โ€“ RM 4,500 per month",
"salaryMin": 3500,
"salaryMax": 4500,
"salaryCurrency": "MYR",
"salaryPeriod": "month",
"listedAt": "2026-09-02T02:42:35Z",
"listedAtDisplay": "1d ago",
"expiresAt": "2026-10-02T13:59:59.999Z",
"status": "Active",
"isExpired": "No",
"isFeatured": "No",
"adType": "ORGANIC",
"teaser": "Degree in any relevant engineering field (Mechanical/Civil/Instrumentation/Electornics etc.) The ability to build and maintain strong working...",
"bulletPoints": [
"Attractive salary package",
"Career growth opportunity",
"Good working culture"
],
"descriptionText": "โ€ข Degree in any relevant engineering field (Mechanical/Civil/Instrumentation/Electornics etc.)\n\nโ€ข The ability to build and maintain strong working relationships...",
"descriptionHtml": "<ul><li><p>Degree in any relevant engineering field...",
"descriptionLength": 1434,
"applicationQuestions": [
"Which of the following statements best describes your right to work in Malaysia?",
"What's your expected monthly basic salary?",
"Which of the following types of qualifications do you have?",
"How many years' experience do you have as a field engineer?"
],
"coverImageUrl": "https://image-service-cdn.seek.com.au/39d355047bc6079f7dcd785974fe013ba9edc463/a868bcb8fbb284f4e8301904535744d488ea93c1",
"videoUrl": "Not Disclosed",
"companyIndustry": "Professional Services",
"companySize": "11-50 employees",
"companyWebsite": "http://www.growthavenue.com.my/",
"companyRating": "Not Disclosed",
"companyReviewCount": "Not Disclosed",
"companyDescription": "Growth Avenue Sdn Bhd (GASB) is a wholly own Bumiputra company. We are specialising in the field of...",
"companyJobsUrl": "https://my.jobstreet.com/GroWTh-Avenue-jobs/at-this-company",
"scrapedAt": "2026-09-03T21:02:25.540Z",
"error": null
}

โœจ Why choose this Actor

  • Four countries, one input. Pick Malaysia, Singapore, the Philippines or Indonesia, or paste URLs from any of the four sites in one run.
  • Numbers, not labels. Salary bounds, currency and period are parsed on every listing that publishes a salary; listing and expiry dates are exact ISO timestamps.
  • The employer comes with the job. Industry, company size, website, star rating, review count and about text are attached without a second Actor.
  • Every JobStreet filter, verified. All 29 classifications and 336 sub-classifications were enumerated against the live API, so the dropdowns only contain values that return results.
  • Application questions. The screening questions candidates must answer are exposed per job, a field most alternatives skip.
  • Honest sentinels. Not Disclosed means the employer withheld it; N/A means it does not apply. You never get a silent null.

๐Ÿ“ˆ How it compares to alternatives

This ActorTypical JobStreet scrapers
CountriesMY, SG, PH, IDOften one or two
Fields per job4815 to 25
SalaryLabel plus parsed min/max/currency/periodLabel only
DatesExact ISO listing and expiry timestamps"2d ago" strings
Employer profileIndustry, size, website, rating, reviews, aboutCompany name only
Application questionsYesNo
FiltersClassification (29) and sub-classification (336) dropdowns, work type, arrangement, date, salary band, sortKeyword and location
InputKeywords or JobStreet search/job URLsKeywords only
DepthFull result set, 100 listings per callSometimes capped at a few pages

Per-call detail fetching means a job costs one extra API request when "Fetch full job details" is on. Turn it off for a listing-only run that is several times faster.

๐Ÿš€ How to use

  1. Create a free Apify account and get $5 of free monthly usage credit.
  2. Open the JobStreet Jobs Scraper page and click Try for free.
  3. Type your keywords (e.g. data analyst), pick a country and optionally a location, then set any filters.
  4. Set Max Items and click Start.
  5. Download the dataset as CSV, Excel, JSON or XML, or pull it through the API.

Example input for the freshest hybrid ICT jobs in Singapore:

{
"keywords": "software engineer",
"country": "SG",
"classification": "6281",
"workArrangement": "Hybrid",
"dateRange": "7",
"sortMode": "ListedDate",
"maxItems": 200
}

๐Ÿ’ผ Business use cases

Recruitment and staffing

Run the Actor every morning with dateRange: "1" and sortMode: "ListedDate" to get every job posted in the last 24 hours for the roles you place, complete with the hiring company's size and website for outreach.

Compensation benchmarking

Filter by classification and location, then group salaryMin and salaryMax by subClassification to build pay bands per city. The salaryPeriod and salaryCurrency fields keep monthly RM and annual S$ figures from being mixed.

Lead generation

Employers posting many jobs are growing. Count rows per companyId, join companyIndustry, companySize and companyWebsite, and hand the list to sales.

Job aggregation

Syndicate listings with descriptionHtml, imageUrl and expiresAt, and drop rows automatically once isExpired flips to Yes on a re-run.

๐Ÿ”Œ Automating JobStreet Jobs Scraper

  • Make / Zapier: trigger the Actor on a schedule and push new rows into Google Sheets, HubSpot or Airtable.
  • Slack: post a daily digest of new jobs matching your filters.
  • Airbyte: load the dataset into your warehouse for trend analysis.
  • GitHub Actions: call the Apify API from a workflow to refresh a public jobs page.
  • Google Drive: export the dataset as Excel after every run.

๐ŸŒŸ Beyond business use cases

  • Research: measure hiring demand by industry and city across Southeast Asia over time.
  • Personal: watch a handful of employers and get notified when they post a role that matches you.
  • Non-profit: track public-sector and healthcare openings for community job boards.
  • Experimentation: feed descriptionText into an LLM to extract skills, seniority and visa requirements.

๐Ÿค– Ask an AI assistant about this scraper

I want to collect job postings from JobStreet. Look at https://apify.com/parseforge/jobstreet-scraper and tell me how to configure a run that pulls every Engineering job posted in the last 7 days in Penang, Malaysia, and how to turn the salaryMin and salaryMax fields into a pay-band report.

โ“ Frequently Asked Questions

๐ŸŒ Which JobStreet sites are supported?

Malaysia (my.jobstreet.com), Singapore (sg.jobstreet.com), the Philippines (ph.jobstreet.com) and Indonesia (id.jobstreet.com). Pick one in the Country field or paste URLs from any of them.

๐Ÿ”‘ Do I need a JobStreet account or cookies?

No. Everything comes from the public endpoints the JobStreet website itself uses.

๐Ÿ’ฐ Why is the salary "Not Disclosed" on many rows?

Because the employer did not publish one. JobStreet does not force employers to show a salary, and the Actor never invents a number. When a salary is published, it is returned both as the original label and as parsed numbers.

๐Ÿ“… What is the difference between listedAt and listedAtDisplay?

listedAt is the exact ISO timestamp from JobStreet's data; listedAtDisplay is the "2d ago" text shown on the page.

๐Ÿ—‚ How do I filter by industry?

Use the Classification dropdown (29 industries) and optionally Sub-classification (336 role families). Both lists were verified against the live site, and the IDs are the same across all four countries.

๐Ÿ”— Can I paste a JobStreet URL?

Yes. Search URLs such as https://my.jobstreet.com/engineer-jobs/in-Kuala-Lumpur?daterange=7 are parsed, including the filters in the query string, and job URLs such as https://sg.jobstreet.com/job/94383160 return that single job.

โšก How fast is it?

Listing-only runs fetch 100 jobs per request. With "Fetch full job details" on, each job costs one extra request; a 1,000-job run typically finishes in a few minutes.

๐Ÿ›ก Do I need a proxy?

Not at moderate volume. The proxy option is off by default. Turn on Apify Proxy (datacenter is enough) for very large runs, or if you see rate-limit retries in the log.

๐Ÿ“‰ Is there a ceiling on results?

The Actor pages to the end of JobStreet's result set for the query, so the ceiling is the number of jobs matching your filters. Narrow queries with classification or location to keep runs focused.

๐Ÿงพ What happens on an error?

Errors are written as rows containing only the error field so you can see what failed. Error rows are never charged.

๐Ÿ” Can I re-run to detect expired jobs?

Yes. Paste the job URLs (or re-run the search) and check isExpired and status on each row.

๐Ÿ’ณ How am I charged?

Per result row delivered. Error rows are free.

๐Ÿ”Œ Integrate with any app

The dataset is available through the Apify API and every Apify integration: Google Sheets, Make, Zapier, Airbyte, Slack, webhooks, and the Apify SDKs for JavaScript and Python.

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection.

๐Ÿ†˜ Need Help? Open our contact form

โš ๏ธ Disclaimer: this is an independent tool and is not affiliated with, endorsed by, or connected to JobStreet, SEEK or any employer whose listings you scrape. It collects only publicly available data.