{
  "openapi": "3.0.1",
  "info": {
    "title": "MyCareersFuture Scraper: Singapore Jobs, Salaries, UEN",
    "description": "Pull Singapore job listings from MyCareersFuture with salary, skills, company and UEN. Search, scrape URLs, or watch for new posts.",
    "version": "0.2",
    "x-build-id": "5A05cJRW9MiW8Gqgh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sol-arkis~mycareersfuture-jobs-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sol-arkis-mycareersfuture-jobs-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/sol-arkis~mycareersfuture-jobs-monitor/runs": {
      "post": {
        "operationId": "runs-sync-sol-arkis-mycareersfuture-jobs-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/sol-arkis~mycareersfuture-jobs-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-sol-arkis-mycareersfuture-jobs-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "urls",
              "monitor"
            ],
            "type": "string",
            "description": "search: scrape jobs matching the filters (or all newest jobs when no filters). urls: fetch specific job pages. monitor: output only jobs not seen in previous runs of the same query.",
            "default": "search"
          },
          "search": {
            "title": "Search keywords",
            "type": "string",
            "description": "Free-text search, e.g. job title or skill. Leave empty to browse all jobs (newest first)."
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Exact MyCareersFuture category names, e.g. \"Information Technology\", \"Engineering\", \"Accounting / Auditing / Taxation\", \"Logistics / Supply Chain\".",
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "e.g. \"Permanent\", \"Full Time\", \"Part Time\", \"Contract\", \"Temporary\", \"Freelance\", \"Internship/Attachment\".",
            "items": {
              "type": "string"
            }
          },
          "positionLevels": {
            "title": "Position levels",
            "type": "array",
            "description": "e.g. \"Senior Management\", \"Middle Management\", \"Manager\", \"Professional\", \"Senior Executive\", \"Executive\", \"Junior Executive\", \"Non-executive\", \"Fresh/entry level\".",
            "items": {
              "type": "string"
            }
          },
          "minSalary": {
            "title": "Minimum monthly salary (SGD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs whose salary range reaches at least this amount."
          },
          "maxSalary": {
            "title": "Maximum monthly salary (SGD)",
            "minimum": 0,
            "type": "integer",
            "description": "Filtered client-side: drops jobs whose minimum salary is above this amount."
          },
          "postedCompanyUen": {
            "title": "Employer UEN",
            "type": "string",
            "description": "Only jobs posted by this company (Singapore UEN, e.g. 200310022N)."
          },
          "startUrls": {
            "title": "Job URLs (mode = urls)",
            "type": "array",
            "description": "MyCareersFuture job page URLs. The 32-character job id at the end of the URL is used.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of items to output to the default dataset. With emitJobChanges on, this covers new jobs and job-change items combined. Company profiles are not counted.",
            "default": 500
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "ISO date (e.g. 2026-11-01). Only output jobs posted on/after this date. Most useful with monitor mode."
          },
          "includeDescription": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Every job already gets a detail fetch, so results always include descriptionText, closingDate, SSIC code and description, vacancies, years of experience, education level, region, coordinates and more. This toggle ONLY adds the raw descriptionHtml field.",
            "default": false
          },
          "emitJobChanges": {
            "title": "Emit job changes (monitor, paid add-on)",
            "type": "boolean",
            "description": "Optional paid add-on, OFF by default. Only works with mode \"monitor\". Re-checks previously seen jobs (the most recent min(1000, maxItems)) and outputs an extra item with itemType \"job-change\" when salary, status, closing date, applications, reposts, vacancies, edit count or title changed since the last run. Charged $0.002 per changed job (event \"job-change\"). New jobs are still charged as \"job\". The first run with this on only records snapshots, so it has no change charges.",
            "default": false
          },
          "enrichCompanyProfiles": {
            "title": "Enrich company profiles (paid add-on)",
            "type": "boolean",
            "description": "Optional paid add-on, OFF by default. Works in any mode. For each unique employer UEN among the jobs output this run, fetches the MyCareersFuture company profile (description, website, headcount, SSIC industry, logo, registered address) into a separate dataset named \"companies\". Charged $0.002 per unique UEN enriched per run (event \"company-profile\"). No contact or personal data.",
            "default": false
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The API usually works without a proxy."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}