{
  "openapi": "3.0.1",
  "info": {
    "title": "MyCareersFuture Scraper + Hiring Company Leads (Singapore)",
    "description": "Search MyCareersFuture, Singapore's government job portal. One row per job with salary, plus one row per hiring company with UEN, industry, address, website, emails and phones.",
    "version": "1.0",
    "x-build-id": "ncmd6DldidZ30dvNM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/snappytools~mycareersfuture-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-snappytools-mycareersfuture-scraper",
        "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/snappytools~mycareersfuture-scraper/runs": {
      "post": {
        "operationId": "runs-sync-snappytools-mycareersfuture-scraper",
        "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/snappytools~mycareersfuture-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-snappytools-mycareersfuture-scraper",
        "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",
        "required": [
          "searches"
        ],
        "properties": {
          "searches": {
            "title": "Searches",
            "type": "array",
            "description": "One search per line, using the same keywords you would type on mycareersfuture.gov.sg, for example \"accountant\", \"software engineer\" or \"nurse\". Add a | and a region to search one part of Singapore: \"accountant | Central\". Use \"*\" for every job on the site. You can also paste the address of a MyCareersFuture search results page; its keywords and filters are kept.",
            "default": [
              "accountant"
            ],
            "items": {
              "type": "string"
            }
          },
          "output": {
            "title": "What to return",
            "enum": [
              "jobs",
              "jobsAndCompanies",
              "companies"
            ],
            "type": "string",
            "description": "Jobs only, jobs plus one row per hiring company, or just the hiring companies (for lead lists).",
            "default": "jobs"
          },
          "findCompanyContacts": {
            "title": "Find company emails and phone numbers",
            "type": "boolean",
            "description": "For each hiring company, take its website (from MyCareersFuture, its job ads, or its name) and check the homepage and contact page for emails, phone numbers (including WhatsApp links) and social links. Needs \"Jobs and hiring companies\" or \"Hiring companies only\". Slower: allow about 1 to 3 seconds per company.",
            "default": false
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "The most jobs to collect for each search line.",
            "default": 100
          },
          "postedWithinDays": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only jobs posted (or reposted) in this many days.",
            "default": "any"
          },
          "categories": {
            "title": "Category",
            "type": "array",
            "description": "Only jobs in these MyCareersFuture categories. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Accounting / Auditing / Taxation",
                "Admin / Secretarial",
                "Advertising / Media",
                "Architecture / Interior Design",
                "Banking and Finance",
                "Building and Construction",
                "Consulting",
                "Customer Service",
                "Design",
                "Education and Training",
                "Engineering",
                "Entertainment",
                "Environment / Health",
                "Events / Promotions",
                "F&B",
                "General Management",
                "General Work",
                "Healthcare / Pharmaceutical",
                "Hospitality",
                "Human Resources",
                "Information Technology",
                "Insurance",
                "Legal",
                "Logistics / Supply Chain",
                "Manufacturing",
                "Marketing / Public Relations",
                "Medical / Therapy Services",
                "Others",
                "Personal Care / Beauty",
                "Precision Engineering",
                "Professional Services",
                "Public / Civil Service",
                "Purchasing / Merchandising",
                "Real Estate / Property Management",
                "Repair and Maintenance",
                "Risk Management",
                "Sales / Retail",
                "Sciences / Laboratory / R&D",
                "Security and Investigation",
                "Social Services",
                "Telecommunications",
                "Travel / Tourism",
                "Wholesale Trade"
              ]
            },
            "default": []
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Permanent",
                "Full Time",
                "Part Time",
                "Contract",
                "Temporary",
                "Freelance",
                "Flexi-work",
                "Internship/Attachment"
              ]
            },
            "default": []
          },
          "positionLevels": {
            "title": "Position level",
            "type": "array",
            "description": "Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Senior Management",
                "Middle Management",
                "Manager",
                "Professional",
                "Senior Executive",
                "Executive",
                "Junior Executive",
                "Non-executive",
                "Fresh/entry level"
              ]
            },
            "default": []
          },
          "salaryMin": {
            "title": "Minimum monthly salary (S$)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only jobs whose advertised range reaches at least this much a month, the same way the site's salary filter works. Leave at 0 for no minimum.",
            "default": 0
          },
          "regions": {
            "title": "Region",
            "type": "array",
            "description": "Only jobs in these parts of Singapore. \"Islandwide\" is what employers pick when there's no fixed worksite. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Central",
                "East",
                "North",
                "North-East",
                "West",
                "Islandwide"
              ]
            },
            "default": []
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "relevance",
              "salary"
            ],
            "type": "string",
            "description": "Newest first is best for schedules.",
            "default": "newest"
          },
          "skipRecruiters": {
            "title": "Leave out recruitment agencies",
            "type": "boolean",
            "description": "Leave out companies registered under SSIC code 78 (employment and recruitment agencies, temp staffing, HR provision), using the official industry code on MyCareersFuture. When an agency posts a job and names its client, the job is kept with the client as the company.",
            "default": false
          },
          "maxApplications": {
            "title": "Only jobs with at most this many applications",
            "minimum": 0,
            "type": "integer",
            "description": "MyCareersFuture shows how many people have applied. A job with few applicants is one the employer may need help filling. Leave empty for no limit."
          },
          "newCompaniesOnly": {
            "title": "Only companies I haven't had before",
            "type": "boolean",
            "description": "Skip hiring companies that an earlier run already delivered (with the same searches, or the same watch name). Stops you paying twice for the same lead.",
            "default": false
          },
          "includeDescriptions": {
            "title": "Include full job descriptions",
            "type": "boolean",
            "description": "Adds the full job description as plain text, plus any emails, phone numbers and websites written in it. Costs a little extra per job.",
            "default": false
          },
          "onlyNewSinceLastRun": {
            "title": "Only new jobs since my last run",
            "type": "boolean",
            "description": "For schedules. Remembers the jobs each search has already returned and skips them next time. The first run returns everything, as usual.",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. Runs with the same searches share their memory automatically. Give a name to keep two schedules separate, or to share one company memory across different searches."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}