Singapore Jobs Scraper for MyCareersFuture - Salaries & Leads avatar

Singapore Jobs Scraper for MyCareersFuture - Salaries & Leads

Pricing

$4.00 / 1,000 jobs

Go to Apify Store
Singapore Jobs Scraper for MyCareersFuture - Salaries & Leads

Singapore Jobs Scraper for MyCareersFuture - Salaries & Leads

Scrape Singapore jobs from MyCareersFuture by keyword, filter or link: SGD salary ranges, skills, seniority, employer UEN and full descriptions, plus hiring-company leads. Monitor mode returns only new or changed jobs. No login or API key. Independent tool, not affiliated with any government agency.

Pricing

$4.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

99

Total users

33

Monthly active users

5 hours ago

Last modified

Share

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Workforce Singapore (WSG) or any government body. All trademarks mentioned are the property of their respective owners. "MyCareersFuture" is referenced only to describe the public data source this Actor collects from.

Extract complete job data from MyCareersFuture.gov.sg - Singapore's government-run job portal - including legally-mandated SGD salary ranges, the full job description, required skills, number of vacancies, SSOC occupation codes, education level and field of study, the district and region, and the hiring company (UEN, industry, logo, MyCareersFuture company page, plus website and headcount where the employer published them). Optionally turn every employer into a ready-to-contact B2B lead with aggregated hiring signals.

No login, no cookies, no browser - fast, dependable JSON extraction straight from the portal's own API.

Why this MyCareersFuture scraper?

Employers are legally required to advertise on MyCareersFuture (under the Fair Consideration Framework) and to disclose salary. This actor ships a complete dataset of those postings:

DataThis actor
Real SGD salary min/max + type✅ on every posting
Full job description (clean text)✅ with job details on
Required skills (tagged)✅
Number of vacancies, min. years experience, SSOC occupation code✅ with job details on
Education level + field of study (labelled)✅ with job details on
Employment type, seniority, work arrangements, government schemes✅
District + region on every posting; street address + lat/lng for fixed worksites✅
Hiring company UEN (links to ACRA) + industry (SSIC 2020)✅
Company website, employee count, description, logo✅ when the employer published them
Posting date, expiry date, view & application counts✅
Filters: keyword, category, district, employment type, seniority, salary, work arrangement, posted by, scheme, responsive employer✅
Whole-of-Singapore pulls past the site's 10,000-jobs-per-search limit✅
Deduplicated hiring-company B2B leads✅ opt-in
Monitor mode - only new & changed jobs✅

Use cases

  • Recruitment & sourcing - pull every live role in a sector with real salary bands, skills, and seniority; benchmark compensation and find candidates' target employers.
  • B2B lead generation - companies that are hiring are companies that are spending. Export hiring employers with UEN, industry, registered address and hiring signals (type: "company") and feed your CRM. Perfect for recruiters, staffing agencies, HR-tech/SaaS, payroll, training, corporate services and commercial real estate.
  • Salary & labour-market intelligence - track SGD salary ranges, in-demand skills, education requirements and hiring volume by category, seniority, district and region across Singapore.
  • Hiring-intent monitoring - schedule recurring runs to watch a sector, role, district or employer and capture only new and changed postings (e.g. salary updates, re-opens).
  • Market research & data enrichment - enrich a UEN list, map demand by SSOC occupation, or power dashboards, newsletters and job-aggregator apps.

How to use

  1. Sign up for Apify - the free plan is enough to try this actor.
  2. Open the Singapore Jobs Scraper for MyCareersFuture, enter search keywords and/or filters (category, district, employment type, seniority, minimum salary), or paste MyCareersFuture URLs, and click Start.
  3. Watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or RSS - or pull results programmatically via the Apify API.

Input

{
"searchKeywords": ["software engineer", "data analyst"],
"categories": ["Information Technology"],
"districts": ["D01", "D22"],
"employmentTypes": ["Permanent", "Full Time"],
"positionLevels": ["Manager", "Senior Executive"],
"salaryMin": 5000,
"sortBy": "new_posting_date",
"maxItems": 200,
"scrapeJobDetails": true,
"includeCompanyLeads": true,
"monitorMode": false
}
  • searchKeywords - keywords; each runs its own search, combined with the filters below, and the keywords share Max jobs equally. MyCareersFuture's search also matches employer names, so a company name (e.g. SMRT) finds that employer's jobs. Leave blank to scrape every job that matches the filters, or the newest jobs across Singapore.
  • startUrls - paste MyCareersFuture job pages (scrape only those jobs) or a search link with your filters applied on the site. A search link keeps every filter it carries (category, district, employment type, seniority, salary, work arrangement, posted by, sort).
  • categories / districts / employmentTypes / positionLevels - restrict results (e.g. Information Technology, D01, Permanent, Manager). Islandwide = jobs with no fixed worksite, Overseas = jobs outside Singapore.
  • flexibleWorkArrangements / postedBy / responsiveEmployersOnly / governmentSchemes - only jobs with a given work arrangement (e.g. Telecommuting), only direct employers or only recruitment agencies, only responsive employers, or only jobs under a Workforce Singapore scheme (e.g. the Career Conversion Programme).
  • salaryMin - only jobs whose own minimum monthly salary (SGD) is at least this amount. MyCareersFuture's own salary filter keeps jobs whose range reaches the amount, so the actor also checks each job's minimum: every row starts at this amount or more.
  • sortBy - new_posting_date (newest, default), min_monthly_salary (highest salary first, by the range's minimum), or relevance.
  • postedWithinDays - only jobs posted or re-posted within N days (0 = no limit). The search keeps paging until it has your Max jobs of fresh postings.
  • maxItems (100 when left empty) - cap across all keywords and URLs; company leads are extra rows. 0 = no limit: every match, read in slices past MyCareersFuture's 10,000-jobs-per-search limit (about 70,000 jobs across Singapore). A run with nothing set at all returns a quick 25-job sample of the newest jobs.
  • scrapeJobDetails (default true) - enrich each job with the full description, vacancies, experience, SSOC code, education level and field of study, screening questions, expiry date, view count, and the employer's website/industry/description.
  • includeCompanyLeads (default false) - also output one deduplicated lead record per hiring company with aggregated hiring signals.
  • monitorMode (default false) - only output new & changed jobs since the previous run for the same input. The first run delivers up to Max jobs and records its starting point; later runs read newest first down to the last run's date (state persists across runs - pairs perfectly with Schedules).
  • proxyConfiguration - proxy settings (Apify Proxy by default; the API is public and not geo-locked, so this is plenty).

Importing a list of URLs from a file

Got the URLs already? You do not have to add them one at a time. Import URLs from a file takes one URL per line, two ways:

  1. Paste the list - open your .txt, select all, paste it into the box.
  2. Link the file - put a single link there instead and it is downloaded for you: a public .txt/.csv, a Google Sheets or Drive share link (shared as "Anyone with the link"; converted to CSV export automatically), or an Apify key-value-store record.
{ "urlsFromFile": "https://example.com/my-urls.txt" }

Imported URLs are added to startUrls. Blank lines, Windows line endings, a UTF-8 BOM, # comments, surrounding quotes and extra CSV columns are all tolerated, search links keep their filters whole (including positionLevel[0]=... style arrays), and duplicates are only scraped once. A PDF, an Excel file or an image is refused with a note on the run card (save it as .csv or .txt first), and a file that cannot be read says so on the run card instead of quietly returning nothing. No job is billed for links that cannot be used.

Output

One record per job (type: "job"), plus optional hiring-company lead records (type: "company"):

{
"type": "job",
"jobId": "MCF-2026-1000311",
"uuid": "14d02f410bf9ae035b62dfb9f3ef44dd",
"url": "https://www.mycareersfuture.gov.sg/job/engineering/software-engineer-...-14d02f410bf9ae035b62dfb9f3ef44dd",
"title": "Software Engineer / Senior Software Engineer (Automation & SCADA)",
"description": "Job Responsibilities:\n• Responsible for software prototyping, design, development...",
"companyName": "EA RECRUITMENT PTE. LTD.",
"companyUen": "202102411G",
"companyWebsite": "https://example.com.sg",
"companyIndustry": "78104",
"companyIndustryCode2020": "78104",
"companyIndustryName": "EMPLOYMENT AGENCIES (EXCLUDING MAID AGENCIES)",
"companyEmployeeCount": "50",
"companyLogoUrl": "https://static.mycareersfuture.gov.sg/images/company/logos/.../logo.jpg",
"companyProfileUrl": "https://www.mycareersfuture.gov.sg/companies/ea-recruitment-202102411G",
"isResponsiveEmployer": true,
"salaryMin": 4000,
"salaryMax": 6000,
"salaryType": "Monthly",
"employmentTypes": ["Permanent", "Full Time"],
"positionLevels": ["Executive"],
"categories": ["Engineering"],
"skills": ["C++", "Python", "SCADA", "REST", "SDLC"],
"numberOfVacancies": 2,
"minimumYearsExperience": 2,
"ssocCode": "25121",
"ssocVersion": "2020v3",
"educationLevelCode": "70",
"educationLevel": "Bachelor's Degree or equivalent",
"fieldOfStudyCode": "0911",
"fieldOfStudy": "Computer Science",
"district": "D22 Jurong, Jurong Island, Tuas",
"region": "West",
"latitude": 1.3294,
"longitude": 103.7021,
"postedDate": "2026-06-12",
"expiryDate": "2026-07-12",
"numberOfApplications": 0,
"status": "Open",
"applicationUrl": "https://www.mycareersfuture.gov.sg/job/engineering/...",
"postingSource": "Employer Portal",
"createdAt": "2026-06-12T07:13:50.000Z",
"searchTotalResults": 1842,
"scrapedAt": "2026-06-12T08:11:10.000Z"
}

Every job also carries one-line text versions of its lists for spreadsheets and table views (employmentTypesText, positionLevelsText, categoriesText, skillsText, keySkillsText, flexibleWorkArrangementsText), readable government scheme names (schemeNames), editCount, deletedAt (when the posting was last taken down; a re-opened posting, status Re-open, keeps it), and the employer's privacy choices isEmployerNameHidden, isHiringEmployerNameHidden and isCompanyAddressHidden, so a blank name or address is never a mystery.

A hiring-company lead (type: "company") carries companyName, companyUen, companyWebsite, companyDescription, companyIndustry (SSIC) and companyIndustryName, companyEmployeeCount, companyLogoUrl, the registered companyAddress and companyPostalCode, companyProfileUrl, isResponsiveEmployer and responsiveEmployerSince, plus signals across the run's matched jobs: liveJobCount (jobs in this run), totalVacancies, salaryMinAcrossJobs/salaryMaxAcrossJobs, categoriesHiring, positionLevelsHiring, employmentTypesHiring and regions.

The Jobs and Companies views each show one record type's rows (jobEmployer / jobIndustry on job rows and employerName, employerUen, employerIndustry, employerProfileUrl on lead rows repeat the company columns under keys only that record type carries, so each view lists its own rows only). Company leads come after the job rows, so on a run with more than 50 jobs the Companies view starts on a later page (the run card names it); the API read ?view=companies&clean=true returns only the leads.

What to expect (field coverage)

MyCareersFuture is employer-entered data, so a few fields are populated only when the employer fills them in:

Field groupWhen it is filled
title, salary min/max, employment type, seniority, category, skills, company name + UEN, district, region, posting date, status, industry (SSIC 2020)on every posting
full description, vacancies, min. experience, SSOC code, education level, expiry date, view count, posting source (with scrapeJobDetails)on every posting
field of studymost postings (when the employer names one)
street address + lat/lngevery posting with a fixed worksite, about 2 in 3 (blank for "Islandwide" jobs, which have none)
company description, logoabout 4 in 5 and 2 in 3 employers
company websiteabout 2 in 5 employers; employee count about 1 in 7 (only when the employer published them)
key skills, screening questions, badges, flexible work arrangements, government schemeswhen the employer added them
working hours, shift pattern, other requirementsMyCareersFuture currently leaves these empty on every posting

A blank field means the employer didn't publish it - not that scraping failed. Nothing is dropped, so you always get the richest dataset available.

How much does it cost to scrape MyCareersFuture?

This Actor uses Apify's pay-per-event pricing: you pay for the results it delivers. Each job row, and each hiring-company lead row when you turn leads on, is one result. The current price per result is shown on the Pricing tab of this page. From 13 November 2026, each run also pays a small start fee when it starts: one fee for a run of up to 1 GB of memory (the default is 512 MB), plus one per extra GB; the Pricing tab shows the amount. Set a maximum total charge on the run if you want a hard cap on spend (the start fee counts toward it), and use Max jobs to control how much the Actor fetches. Links that cannot be used, jobs outside your filters and unchanged jobs in monitor mode are never billed as jobs.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API - start runs, fetch datasets, and manage schedules over REST.
  • apify-client for JavaScript and apify-client for Python - official SDKs.
  • Schedules - run it daily/weekly with Monitor mode to capture only new & changed jobs; perfect for hiring-intent feeds and lead pipelines.
  • Webhooks - trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/mycareersfuture-scraper').call({
searchKeywords: ['data analyst'],
categories: ['Information Technology'],
salaryMin: 5000,
maxItems: 200,
includeCompanyLeads: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} jobs & hiring-company leads`);

Integrate with any app

Connect the dataset to 5,000+ apps - no code required:

  • Make - multi-step automation scenarios.
  • Zapier - push new hiring-company leads straight into your CRM.
  • Slack - get notified when a monitored sector or employer posts new jobs.
  • Google Drive / Sheets - auto-export every run to a spreadsheet.
  • Airbyte - pipe results into your data warehouse.
  • GitHub - trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server - ask your assistant to "find Singapore IT jobs paying over $8k and list the hiring companies with their websites" and let it run this scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready: AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server, with no account and no API key.
  • Skyfire: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete Singapore hiring & lead-gen stack:

Tips

  • Hiring-company leads: turn on includeCompanyLeads to get one deduplicated record per employer with industry, registered address and aggregated hiring signals - ideal for B2B outreach.
  • Whole-of-Singapore pulls: set maxItems: 0 and leave keywords blank to capture every live posting (about 70,000), read in slices past the site's 10,000-per-search limit. With scrapeJobDetails off this takes a few minutes; with details on, budget about 4 minutes per 1,000 jobs and raise the run timeout (or narrow by categories, districts or salaryMin).
  • Recurring monitoring: combine Schedules with Monitor mode to track only newly posted or changed jobs - perfect for daily hiring-intent feeds.
  • Cost control: turn off scrapeJobDetails for a fast run when you only need salary, company, skills and location from the search results.

FAQ

Does it need the MyCareersFuture / WSG API key or a login? No. This actor reads the same public data the website shows - no key, login or cookies needed.

Is the salary data reliable? Yes. Employers on MyCareersFuture must disclose salary under the Fair Consideration Framework, so the salary range is filled on practically every posting.

Can I get the hiring company's contact details? You get the company name, UEN, industry (SSIC), registered address, logo and MyCareersFuture company page, plus the website where the employer published one. The UEN lets you cross-reference ACRA and enrich further. MyCareersFuture itself doesn't publish employer emails/phones.

Can I track one employer? Yes. Put the company name in searchKeywords (MyCareersFuture's search matches employer names) and turn on Monitor mode.

Can I export to Google Sheets, CSV, or Excel? Yes - one click in the dataset view, or automatically on every run via the Google Drive integration.

How do I monitor new jobs automatically? Create a Schedule (e.g. daily) with Monitor mode on, and optionally add a webhook or Zapier zap to push new postings/leads into your CRM as they appear.

Does Monitor mode conflict with Apify Schedules? No - they're complementary. The Schedule decides when a run starts; Monitor mode decides which jobs are new or changed within that run (state persists in a named key-value store), so scheduled runs only emit fresh data.

A field is blank - why? Some employers don't publish a website, employee count, or a fixed address (e.g. "Islandwide" roles). Fields are blank only when the employer didn't provide that data - never because the scraper skipped it.

Is scraping MyCareersFuture legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (e.g. PDPA/GDPR for personal data) and the site's terms.

Data & lawful use

This Actor reads public job postings and the employer details shown with them. Some postings name individuals (recruitment-agency staff named in agency ads, with their registration numbers), so the output may contain personal data even though it is public. If you are in the EU, the UK or Singapore you are responsible for what you do with it: have a lawful basis, honour access and deletion requests, and do not use the output for spam or unsolicited messaging.

Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Workforce Singapore (WSG) or any government body. All trademarks mentioned are the property of their respective owners.

"MyCareersFuture" is referenced only in a descriptive, nominative sense - to identify the public data source this Actor collects from. This Actor is not an official product or service of Workforce Singapore (WSG) and is not authorised or certified by it. It collects only publicly available records; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the source's own terms of use or reuse conditions.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome - this actor is actively maintained.