JobStreet Southeast Asia Job Search by Keyword & Country
Search JobStreet across Singapore, Malaysia, the Philippines, Indonesia and Thailand by keyword or country, with salary, job type and a direct apply link on every job.
Open in Apify Store$0.99 / 1K on Free
Short answer
JobStreet Southeast Asia Job Search by Keyword & Country is an Apify Store Actor for JobStreet data that returns 15 published output fields, including title, name, company, location. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 41 input settings; one is required (mode). It covers 5 of the 6 core JobStreet fields this site tracks. Last updated Oct 29, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
15 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
recordTypejobIdtitlenamecompanylocationcountrysalarysalaryMinsalaryMaxsalaryCurrencyworkArrangementapplicantCountlistedAtjobUrl
Not in the schema among the core JobStreet fields: description. The field matrix shows which other tools return them.
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | Yes | searchJobs | What to fetch from JobStreet / JobsDB. |
| keywords | string | No | – | One job title or keyword per line (mode=searchJobs). Each keyword is searched separately and results are deduplicated. |
| locations | string | No | – | Optional cities or regions, one per line; combined with each keyword (mode=searchJobs). |
| country | string | No | sg | Market to search. Covers JobStreet Malaysia, Singapore, Indonesia and the Philippines, plus JobsDB Thailand and Hong Kong. |
| classification | string | No | – | Optional job category filter (mode=searchJobs). |
| subClassification | string | No | – | Optional sub-category filter; can be combined with a classification (mode=searchJobs). |
| workType | string | No | – | Employment type filter (mode=searchJobs). |
| workArrangement | string | No | – | On-site, hybrid or remote (mode=searchJobs). |
| dateRange | string | No | – | Only jobs listed in the last N days (mode=searchJobs). |
| listedAfter | string | No | – | Drop jobs listed before this date (YYYY-MM-DD). |
Show the other 31 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| listedBefore | string | No | – | Drop jobs listed after this date (YYYY-MM-DD). |
| salaryMin | integer | No | – | Drop jobs whose advertised salary is entirely below this amount, in the unit chosen by Salary type. Jobs with no salary are dropped when this is set. |
| salaryMax | integer | No | – | Drop jobs whose advertised salary is entirely above this amount, in the unit chosen by Salary type. |
| salaryType | string | No | monthly | Unit for the salary minimum / maximum filters. |
| sortBy | string | No | relevance | Result order (mode=searchJobs). |
| startUrls | string | No | – | Job, search or company URLs, one per line (mode=byUrls). Each URL's own market is used; a search URL keeps its page number. |
| companies | string | No | – | Company URLs, profile or organisation ids, or names, one per line (mode=companyJobs / companyProfiles). Several companies are interleaved so maxItems covers each one. |
| includeDetails | boolean | No | true | Fetch the full description, salary, applicant demand and company snapshot for each job (job modes). |
| descriptionFormat | string | No | text | How job descriptions are returned. |
| includeApplicantInsights | boolean | No | true | Add applicant count, application volume and resume / cover-letter percentages when the source exposes them. |
| includeCompanyProfile | boolean | No | true | Add company rating, industry, size, website and description to each job when available. |
| includeReviews | boolean | No | false | Fetch employee reviews for each company (mode=companyProfiles, or company URLs in byUrls). |
| maxReviewsPerCompany | integer | No | 10 | Review cap per company. |
| includeCompanySalaries | boolean | No | false | Fetch salary ranges by role for each company. |
| includeOpenJobs | boolean | No | true | Attach the company's current open jobs (mode=companyProfiles). |
| maxOpenJobs | integer | No | 20 | Cap on attached open jobs per company. |
| roles | string | No | – | Role titles or queries to benchmark, one per line (mode=salaryBenchmarks). |
| includeRegionalSalaries | boolean | No | false | Add state / city salary breakdowns for each role. |
| includeRoleDetails | boolean | No | false | Add role summary, tasks, skills, growth, review statistics and similar roles. |
| includeKeywords | string | No | – | Keep only jobs whose title, company or description contains at least one term, one per line (case-insensitive). |
| excludeKeywords | string | No | – | Drop jobs whose title, company or description contains any term, one per line. |
| minApplicants | integer | No | – | Drop jobs with fewer applicants than this. Requires job details. |
| maxApplicants | integer | No | – | Drop jobs with more applicants than this. Requires job details. |
| language | string | No | en | Interface language. Only English is available in every market; other options are used where the market supports them. |
| compact | boolean | No | false | Keep only core job fields (identity, company, salary, dates, URL) for lightweight feeds. |
| maxItems | integer | No | 50 | Hard cap on records returned. Applies across all keywords, locations and pages. |
| maxPages | integer | No | 10 | Page cap for each keyword/location (100 jobs per page). |
| incrementalMode | boolean | No | false | Emit only new or changed jobs, using saved state between runs (job modes). |
| stateKey | string | No | – | Name for the saved incremental state. Use the same key on each scheduled run. |
| emitUnchanged | boolean | No | false | When incremental mode is on, also emit jobs whose content has not changed. |
| emitExpired | boolean | No | false | When incremental mode is on, emit jobs that were seen before but have disappeared. |
Example input
Built from the input form's published example values and defaults.
{
"mode": "searchJobs",
"country": "sg",
"salaryType": "monthly",
"sortBy": "relevance",
"includeDetails": true,
"descriptionFormat": "text",
"includeApplicantInsights": true,
"includeCompanyProfile": true,
"includeReviews": false,
"maxReviewsPerCompany": 10,
"includeCompanySalaries": false,
"includeOpenJobs": true,
"maxOpenJobs": 20,
"includeRegionalSalaries": false,
"includeRoleDetails": false,
"language": "en",
"compact": false,
"maxItems": 3,
"maxPages": 1,
"incrementalMode": false,
"emitUnchanged": false,
"emitExpired": false
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "searchJobs",
"country": "sg",
"salaryType": "monthly",
"sortBy": "relevance",
"includeDetails": True,
"descriptionFormat": "text",
"includeApplicantInsights": True,
"includeCompanyProfile": True,
"includeReviews": False,
"maxReviewsPerCompany": 10,
"includeCompanySalaries": False,
"includeOpenJobs": True,
"maxOpenJobs": 20,
"includeRegionalSalaries": False,
"includeRoleDetails": False,
"language": "en",
"compact": False,
"maxItems": 3,
"maxPages": 1,
"incrementalMode": False,
"emitUnchanged": False,
"emitExpired": False
}
run = client.actor("vexaloom-labs/jobstreet-southeast-asia-job-search-by-keyword").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "searchJobs",
"country": "sg",
"salaryType": "monthly",
"sortBy": "relevance",
"includeDetails": true,
"descriptionFormat": "text",
"includeApplicantInsights": true,
"includeCompanyProfile": true,
"includeReviews": false,
"maxReviewsPerCompany": 10,
"includeCompanySalaries": false,
"includeOpenJobs": true,
"maxOpenJobs": 20,
"includeRegionalSalaries": false,
"includeRoleDetails": false,
"language": "en",
"compact": false,
"maxItems": 3,
"maxPages": 1,
"incrementalMode": false,
"emitUnchanged": false,
"emitExpired": false
};
const run = await client.actor("vexaloom-labs/jobstreet-southeast-asia-job-search-by-keyword").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/vexaloom-labs~jobstreet-southeast-asia-job-search-by-keyword/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"searchJobs","country":"sg","salaryType":"monthly","sortBy":"relevance","includeDetails":true,"descriptionFormat":"text","includeApplicantInsights":true,"includeCompanyProfile":true,"includeReviews":false,"maxReviewsPerCompany":10,"includeCompanySalaries":false,"includeOpenJobs":true,"maxOpenJobs":20,"includeRegionalSalaries":false,"includeRoleDetails":false,"language":"en","compact":false,"maxItems":3,"maxPages":1,"incrementalMode":false,"emitUnchanged":false,"emitExpired":false}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=vexaloom-labs/jobstreet-southeast-asia-job-search-by-keyword",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
Where it fits among JobStreet routes
It ranks 1 of 1 catalogue Actors for JobStreet on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.
- 1 JobStreet Southeast Asia Job Search by Keyword & Country 15 output fields, pay per event 5 of 6 core fields
$0.99 / 1K - + 7 other Store tools, combined Reference only 6 of 6 core fields
from $0.20 / 1K - API SEEK / JobStreet partner APIs Limited access fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Official route: SEEK / JobStreet partner APIs
Limited access. JobStreet is part of SEEK. Data access is through partner arrangements rather than an open public API.
Partner terms.
Other Store tools for JobStreet
Reference only, from their public listings.
| Tool | Fields | Price / 1K |
|---|---|---|
| JobStreet Jobs Scraper | 43 | $0.20 |
| JobStreet Scraper | 12 | $0.99 |
| Jobstreet & JobsDB Jobs Scraper · SE-Asia Salary & Filters | 9 | $0.90 |
| JobStreet Scraper | 82 | $2.00 |
| JobStreet Scraper | 112 | $1.70 |
What people use it for
- Find job openings
- Research employers
- Analyze salary benchmarks
Similar Actors
Naukri.com Job Listings Extractor with Salary & Skills
Pull job listings from Naukri.com by search URL or by keyword, location, experience, salary, job age and work-mode filters, with company rating,…
Bayt.com MENA Job Listing & Salary Scraper
Search Bayt.com job listings across Middle East and North Africa countries by keyword, location, career level, and employment type. Get titles,…
Glassdoor Job Listings Salary & Rating Scraper
Pull Glassdoor job listings by keyword and location or from a single company's jobs page, with salary estimates, employer ratings, Easy Apply…
HelloWork France Job Listings & Salary Filter Scraper
Search HelloWork.com by keyword, region, city, sector or job function, and filter by contract type, remote-work frequency, experience level,…
Indeed Global Job Scraper with Company Salary Reports
Search Indeed jobs across 62 countries by keyword, location, or filters for job type, remote status, experience, education, and salary. Returns…
LinkedIn Jobs Scraper with Salary & Company Enrichment
Search public LinkedIn job listings by keyword, location, salary band, job type and more, with full descriptions, parsed salary ranges, inferred…
Questions people ask
How much does JobStreet Southeast Asia Job Search by Keyword & Country cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does JobStreet Southeast Asia Job Search by Keyword & Country return?
Its published output schema lists 15 fields: recordType, jobId, title, name, company, location, country, salary, salaryMin, salaryMax, salaryCurrency, workArrangement, and 3 more. A listed field is not guaranteed to be filled in every row.
What input does JobStreet Southeast Asia Job Search by Keyword & Country need?
Required: mode. Optional settings include keywords, locations, country, classification, subClassification, workType.
How do I run JobStreet Southeast Asia Job Search by Keyword & Country from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("vexaloom-labs/jobstreet-southeast-asia-job-search-by-keyword").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("vexaloom-labs/jobstreet-southeast-asia-job-search-by-keyword").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/vexaloom-labs~jobstreet-southeast-asia-job-search-by-keyword/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- JobStreet Southeast Asia Job Search by Keyword & Country on Apify Store
- Published build with input and output schema (JSON)
- SEEK / JobStreet partner APIs documentation
Cite this page
Scraper Finder. "JobStreet Southeast Asia Job Search by Keyword & Country." https://scraperfinder.com/catalogue/jobstreet-southeast-asia-job-search-by-keyword/ (data checked 2026-11-12).
Run JobStreet Southeast Asia Job Search by Keyword & Country
$0.99 per 1,000 results. Paste the example input above, set your JobStreet query, then export the dataset. Still choosing? Compare every JobStreet route.