# JobStreet Singapore Jobs Scraper — Fast API (`hipersoft/jobstreet-scraper`) Actor

Scrape JobStreet Singapore jobs: title, company, salary label, classification, work type & arrangement, location, posting date and apply link. Filter by keyword/classification. Fast public API, no browser.

- **URL**: https://apify.com/hipersoft/jobstreet-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Jobs
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0015 / job scraped

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## JobStreet Scraper — Jobs, Salaries, Companies & Locations

Scrape **JobStreet Singapore** job listings into clean JSON, CSV, Excel or XML. The **JobStreet scraper** extracts **job title, company, salary label, job classification and sub-classification, work type, work arrangement, location, posting date, teaser, bullet points and the apply link**. Filter by keyword, classification or work type and bulk-export thousands of jobs. Fast and reliable.

![JobStreet Scraper input — keywords, classification and max jobs in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/jobstreet-scraper-input.png?v=5)

### What does JobStreet Scraper do?

The JobStreet scraper crawls JobStreet Singapore search results and exports every job posting as a structured row. Search by keyword, narrow by classification or work type, set a limit, and get a clean dataset of titles, companies, salaries, locations and posting dates — ready to analyze or export to JSON, CSV, Excel or XML.

### What data can you scrape from JobStreet?

| Data point | Description |
|------------|-------------|
| 💼 Job basics | Job ID, title, teaser and bullet points |
| 🏢 Company | Hiring company name |
| 💲 Salary | Salary label shown on the posting |
| 🗂️ Classification | Category and sub-category taxonomy |
| 🕒 Work details | Work type (full/part-time) and arrangement (remote/hybrid/on-site) |
| 📍 Location | One or more job locations |
| 📅 Freshness | Posting date and display date |
| 🔗 Links | Direct apply/job URL |

### What you get

![JobStreet Scraper output example — job title, company, salary, classification and location as structured JSON](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/jobstreet-scraper-output.png?v=5)

Each job is returned as a structured record like this:

```json
{
  "id": "80012345",
  "title": "M&E Engineer",
  "company": "Unipac Consulting Engineers LLP",
  "salaryLabel": "S$4,000 – S$6,000 per month",
  "classification": "Engineering",
  "subClassification": "Building Services Engineering",
  "workTypes": ["Full time"],
  "workArrangements": ["On-site"],
  "locations": ["Central Region"],
  "listingDate": "2026-07-30T09:59:55Z",
  "listingDateDisplay": "2d ago",
  "teaser": "Design sustainable building systems…",
  "bulletPoints": ["M&E design", "Sustainable buildings"],
  "isFeatured": false,
  "url": "https://sg.jobstreet.com/job/80012345",
  "sourceUrl": "https://sg.jobstreet.com/software-engineer-jobs",
  "collectedAt": "2026-07-30T10:15:00.000Z"
}
```

#### Output schema

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique JobStreet job identifier |
| `title` | string | Job title |
| `company` | string | Hiring company name |
| `salaryLabel` | string | Salary as shown on the posting (may be empty) |
| `classification` | string | Top-level job category |
| `subClassification` | string | Job sub-category |
| `workTypes` | array | Work types (e.g. Full time, Part time, Contract) |
| `workArrangements` | array | Work arrangements (e.g. On-site, Hybrid, Remote) |
| `locations` | array | Job location(s) |
| `listingDate` | string (ISO date) | Date the job was posted |
| `listingDateDisplay` | string | Human-readable posting date (e.g. "2d ago") |
| `teaser` | string | Short job description snippet |
| `bulletPoints` | array | Key highlights from the listing |
| `isFeatured` | boolean | Whether the listing is promoted/featured |
| `url` | string (URL) | Direct link to the job |
| `sourceUrl` | string (URL) | Search URL the job was found on |
| `collectedAt` | string (ISO date) | Timestamp when the record was collected |

### Use cases

- **Job boards & aggregators** — feed fresh Singapore job listings into your own board.
- **Recruitment intelligence** — track who is hiring, for which roles, and where.
- **Salary benchmarking** — collect salary labels by classification and title.
- **Hiring-market analysis** — measure demand by category, work type and location.
- **Lead generation** — build lists of companies actively hiring.
- **Talent research** — monitor postings for specific skills or job families.

### How to scrape JobStreet data

1. Add the **JobStreet Scraper** to your Apify account.
2. Enter **keywords** (job title or skill), or leave empty to collect all jobs.
3. Optionally set a **classification** or **work type** to narrow results.
4. Set **Max jobs** to control how much data you collect.
5. Click **Run**, then export the results as JSON, CSV, Excel or XML — or pull them via the Apify API.

### Input

```json
{
  "keywords": "software engineer",
  "maxItems": 500
}
```

| Field | Type | Description |
|-------|------|-------------|
| `keywords` | string | Job title / keyword / skill. Empty = all jobs. |
| `classification` | string | Optional classification id to filter by category. |
| `workType` | string | Optional work-type filter (full-time, part-time, contract, casual). |
| `maxItems` | integer | Maximum number of jobs to collect. |

### Need more jobs data?

- [MyCareersFuture Jobs Scraper](https://apify.com/hipersoft/mycareersfuture-scraper)
- [Indeed Scraper](https://apify.com/hipersoft/indeed-scraper)
- [Greenhouse Job Board Scraper](https://apify.com/hipersoft/greenhouse-scraper)
- [Reed Jobs Scraper](https://apify.com/hipersoft/reed-scraper)
- [Naukri Jobs Scraper](https://apify.com/hipersoft/naukri-scraper)

### FAQ

**How many jobs can I scrape?**
As many as you like — set **Max jobs**, or leave keywords empty to collect the full listing set.

**Do I need any setup or a login?**
No setup and no login. Just add the actor, enter keywords or filters, and run.

**Which export formats are supported?**
JSON, CSV, Excel and XML, plus the Apify API and dataset views.

**How fresh is the data?**
Every run collects live listings, each stamped with its `listingDate` and a `collectedAt` timestamp.

**Can I filter by category or work type?**
Yes — set a classification and/or work type to narrow the results before running.

**How does billing work?**
You pay per job you collect — no subscriptions and no minimums.

**Can I connect it to other tools?**
The JobStreet Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal?**
The scraper collects only publicly available job listing data. You are responsible for how you use the data and for complying with JobStreet's terms.

### Related Actors

- [Bayt Jobs Scraper](https://apify.com/hipersoft/bayt-scraper)
- [RemoteOK Jobs Scraper](https://apify.com/hipersoft/remoteok-scraper)
- [We Work Remotely Scraper](https://apify.com/hipersoft/weworkremotely-scraper)

### Notes

Original clean-room implementation. Returns only public data; you are responsible for compliance with JobStreet's terms. Not affiliated with or endorsed by JobStreet or SEEK. </content>

# Actor input Schema

## `keywords` (type: `string`):

Job title / keyword / skill. Empty = all jobs.

## `classification` (type: `string`):

Optional Seek classification id to filter by category. Empty = all.

## `workType` (type: `string`):

Optional work-type filter (full-time, part-time, contract, casual). Empty = all.

## `maxItems` (type: `integer`):

Maximum jobs to scrape.

## Actor input object example

```json
{
  "keywords": "",
  "classification": "",
  "workType": "",
  "maxItems": 200
}
```

# Actor output Schema

## `results` (type: `string`):

The scraped results as dataset items.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/jobstreet-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/jobstreet-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call hipersoft/jobstreet-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/jobstreet-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8Kre7HqtOb4KR9sPa/builds/EMcAM1GZ0VzHukIqe/openapi.json
