JobStreet.com Scraper avatar

JobStreet.com Scraper

Pricing

from $0.79 / 1,000 results

Go to Apify Store
JobStreet.com Scraper

JobStreet.com Scraper

Extract job listings from JobStreet across Singapore, Malaysia, Philippines and Indonesia. Keyword search, work type filter, structured salary fields, company logo, and full descriptions (with details enabled). Incremental mode for scheduled monitoring. No API key required.

Pricing

from $0.79 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

15

Total users

3

Monthly active users

2 days ago

Last modified

Share

JobStreet Scraper

JobStreet Scraper

Extract job listings from JobStreet across Singapore, Malaysia, the Philippines and Indonesia. Full descriptions, structured salary, company names, precise location and change tracking. No API key required.


Why this scraper?

🎯 Built for Southeast Asia

Four JobStreet markets in one actor: Singapore, Malaysia, the Philippines and Indonesia. Salary parsing and currency handling are tuned per market (SGD, MYR, PHP, IDR).

📄 Complete job data

Job title, full description in HTML, plain text and Markdown, apply URL, publish date and work arrangement. Turn on full details for the complete description and company data.

💶 Structured salary

Minimum, maximum, pay period and currency, parsed from each listing. Fields are always present and returned as null when the employer doesn't publish a figure.

🔁 Incremental monitoring

Run on a schedule and receive only what changed. Every result carries a change status of new, updated or reappeared. Unchanged reposts are skipped and never charged.

🔎 Multi-query batches

Search several keywords in a single run. Results are merged and de-duplicated, so one scheduled run can cover an entire hiring watchlist.

🤖 Agent-ready output

A compact output mode returns a reduced set of core fields for AI agents, MCP clients and automated pipelines.


Input parameters

ParameterTypeDefaultDescription
countrystring"SG"Target market: SG, MY, PH or ID.
searchQuerystring"developer"Job title, skill or keyword. Leave empty to fetch all recent listings.
searchQueriesarray(empty)Run several keyword searches in one run. Overrides searchQuery when set.
locationstring(empty)City or region, e.g. Singapore, Kuala Lumpur, Manila. Empty means all locations.
workTypestring(empty)Filter by Full time, Part time, Contract/Temp or Casual/Vacation.
classificationIdinteger(empty)Optional category ID to filter by job category.
salaryMininteger(empty)Only return listings paying at or above this amount (server-side). Units set by salaryType.
salaryMaxinteger(empty)Only return listings paying at or below this amount (server-side). Units set by salaryType.
salaryTypestringmonthlyPeriod for the salary filter: monthly, annual or hourly.
daysOldinteger(empty)Only return listings posted within this many days.
includeKeywordsarray(empty)Keep only listings whose title, company or description contains one of these words.
excludeKeywordsarray(empty)Drop listings whose title, company or description contains one of these words.
maxAgeMinutesinteger(empty)Drop listings older than this many minutes. For near-real-time monitoring.
fetchDetailsbooleanfalseFetch the full description and company data. Off returns basic listing info only.
incrementalModebooleanfalseReturn only new or changed listings since the previous run.
skipRepostsbooleanfalseSkip listings already seen in previous runs. Superseded by incremental mode.
compactOutputbooleanfalseReturn a reduced set of core fields for agents and pipelines.
startUrlsarray(empty)Fetch specific JobStreet job page URLs directly instead of searching.
maxItemsinteger100Maximum listings to return across all queries. Set to 0 for unlimited.

Output schema

Every field below is present on every record. Fields the source does not publish for a given job are returned as null rather than omitted. Description fields are populated when fetchDetails is on.

FieldTypeDescription
idstringJobStreet job ID.
urlstringCanonical job page URL.
titlestringJob title.
companystring|nullEmployer name, cleaned of stray formatting.
companyUrlstring|nullEmployer profile URL where published.
companyLogostring|nullEmployer logo URL where published.
locationstring|nullLeaf location, e.g. city or district.
locationSuburbstring|nullDistrict or suburb, when the source splits it out.
locationStatestring|nullRegion or state, when the source splits it out.
countrystringMarket code: SG, MY, PH or ID.
workTypesarrayEmployment types, e.g. ["Full time"].
workArrangementstring|nullOn-site, hybrid or remote, when published.
roleIdstring|nullNormalised role slug, e.g. full-stack-developer.
salaryLabelstring|nullRaw salary text as shown on the listing.
salaryMinnumber|nullMinimum salary (null if not published).
salaryMaxnumber|nullMaximum salary (null if not published).
salaryCurrencystring|nullCurrency code for the market.
salaryPeriodstring|nullHOUR, MONTH or YEAR.
classificationsarrayCategory and subcategory, e.g. ["Hospitality & Tourism › Waiting Staff"].
bulletPointsarrayListing highlight bullets where published (empty array when none).
teaserstring|nullShort listing teaser.
isFeaturedbooleanWhether the listing is a featured placement.
isExpiredbooleanWhether the listing is expired.
publishDateISOstring|nullPublish date in ISO 8601.
descriptionHtmlstring|nullFull description as HTML (with fetchDetails).
descriptionTextstring|nullFull description as plain text (with fetchDetails).
descriptionMarkdownstring|nullFull description as Markdown (with fetchDetails).
sourcestringSource host, e.g. sg.jobstreet.com.
scrapedAtstringTimestamp the record was scraped, ISO 8601.
contentHashstringFingerprint of the tracked content, used for change detection.
changeStatusstringNEW, UPDATED, UNCHANGED or REAPPEARED.
isRepostbooleanWhether this listing was seen in a previous run.
originalPublishDatestring|nullPublish date first seen for a repost.
originalUrlstring|nullURL first seen for a repost.

Example record

{
"id": "93154010",
"url": "https://sg.jobstreet.com/job/93154010",
"title": "F&B Service Crew",
"company": "Song Gye Ok",
"companyUrl": null,
"location": "Orchard",
"locationSuburb": "Orchard",
"locationState": "Central Region",
"country": "SG",
"workTypes": ["Part time"],
"workArrangement": "On-site",
"salaryLabel": "$13 – $15 per hour",
"salaryMin": 13,
"salaryMax": 15,
"salaryCurrency": "SGD",
"salaryPeriod": "HOUR",
"classifications": ["Hospitality & Tourism › Waiting Staff"],
"teaser": "If you're excited about our company's vision for this role, we'd like to hear from you.",
"isFeatured": false,
"isExpired": false,
"publishDateISO": "2026-07-06T15:50:25Z",
"descriptionHtml": "<div><p>Job Title: Front of House Staff (Part-time)...</p></div>",
"descriptionText": "Job Title: Front of House Staff (Part-time). Department: F&B Operations...",
"descriptionMarkdown": "**Job Title: Front of House Staff (Part-time)**...",
"source": "sg.jobstreet.com",
"scrapedAt": "2026-07-06T17:14:59Z",
"contentHash": "6576fdbc4d9ee925",
"changeStatus": "NEW",
"isRepost": false,
"originalPublishDate": null,
"originalUrl": null
}

Examples

Search for developer roles in Singapore:

{
"country": "SG",
"searchQuery": "developer",
"location": "Singapore",
"maxItems": 100
}

Full-time nursing roles in Malaysia, full details:

{
"country": "MY",
"searchQuery": "nurse",
"workType": "Full time",
"fetchDetails": true,
"maxItems": 200
}

Batch several searches in one run, excluding senior roles:

{
"country": "PH",
"searchQueries": ["accountant", "auditor", "bookkeeper"],
"excludeKeywords": ["senior", "manager"],
"maxItems": 300
}

Daily monitoring feed — only what changed:

{
"country": "SG",
"searchQuery": "data analyst",
"daysOld": 1,
"incrementalMode": true,
"maxItems": 200
}

💰 Pricing

$0.89 per 1,000 results — you only pay for successfully retrieved listings. Failed retries and unchanged reposts are never charged.

ResultsCost
100~$0.10
1,000~$0.89
10,000~$8.90
100,000~$89.00

Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, down to $0.59 per 1,000 at the highest tier. In incremental mode you pay only for new and changed listings, which cuts the cost of recurring monitoring sharply. Use the Max results cap to control your spend exactly.


Performance

Run sizeTypical time
100 resultsunder 1 minute
1,000 results2–4 minutes
10,000 results20–35 minutes

Known limitations

  • Salary is often absent. Many employers don't publish a figure, so salary fields are frequently null.
  • Region and suburb are split from the location label only when the source provides them; some listings carry a single location token.
  • Full descriptions require fetchDetails. With it off, description fields are null and the run is faster and cheaper.
  • Coverage is limited to the four JobStreet markets: Singapore, Malaysia, the Philippines and Indonesia.

Technical details

  • Source: JobStreet — Singapore, Malaysia, the Philippines and Indonesia
  • Coverage: nationwide per market, filterable by location, category and work type
  • Retry: automatic retry on network errors with exponential backoff

Need a custom scraper?

Unfenced Group builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

Get in touch: www.unfencedgroup.nl