{
  "openapi": "3.0.1",
  "info": {
    "title": "Saramin Jobs Scraper (Korea) - saramin.co.kr",
    "description": "Extract job postings from Saramin (사람인), Korea's largest job board. Search by keyword, region, job category, career level, education and employment type, and get title, company, location, salary, deadline, sectors and the full job description as clean JSON.",
    "version": "1.0",
    "x-build-id": "FhPegcUtY1Zr5GGdG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/asiajobs~saramin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-asiajobs-saramin-jobs-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/asiajobs~saramin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-asiajobs-saramin-jobs-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/asiajobs~saramin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-asiajobs-saramin-jobs-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",
        "properties": {
          "keyword": {
            "title": "Search keyword",
            "type": "string",
            "description": "Search jobs by keyword (Korean or English), e.g. 'python', '데이터 분석', '마케팅', a company name. Leave empty to list all jobs matching the filters."
          },
          "locationCodes": {
            "title": "Regions (loc_mcd)",
            "type": "array",
            "description": "Saramin region codes: 101000 서울, 102000 경기, 108000 인천, 106000 부산, 104000 대구, 105000 대전, 112000 광주·전남, 107000 울산, 118000 세종, 109000 강원, 114000 충북, 115000 충남, 113000 전북, 111000 경북, 110000 경남, 116000 제주, 117000 전국. Leave empty for all of Korea.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobCategoryCodes": {
            "title": "Job categories (cat_mcls)",
            "type": "array",
            "description": "Saramin job category codes, e.g. 2 IT개발·데이터, 16 기획·전략, 14 마케팅·홍보·조사, 3 회계·세무·재무, 5 인사·노무·HRD, 4 총무·법무·사무, 15 디자인, 8 영업·판매·무역, 21 고객상담·TM, 18 구매·자재·물류, 12 상품기획·MD, 7 운전·운송·배송, 10 서비스, 11 생산, 22 건설·건축, 6 의료, 9 연구·R&D, 19 교육, 13 미디어·문화·스포츠, 17 금융·보험, 20 공공·복지.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobKeywordCodes": {
            "title": "Detailed job keywords (cat_kewd)",
            "type": "array",
            "description": "Optional detailed job keyword codes (the number in a saramin.co.kr '...job-category?cat_kewd=<ID>' link), e.g. 87 웹개발, 84 백엔드/서버개발.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "career": {
            "title": "Career level",
            "enum": [
              "",
              "1",
              "2",
              "99"
            ],
            "type": "string",
            "description": "Filter by required career level.",
            "default": ""
          },
          "education": {
            "title": "Minimum education",
            "enum": [
              "",
              "6",
              "7",
              "8",
              "9",
              "5"
            ],
            "type": "string",
            "description": "Jobs that accept at least this education level.",
            "default": ""
          },
          "employmentTypes": {
            "title": "Employment types (job_type)",
            "type": "array",
            "description": "Codes: 1 정규직 (permanent), 2 계약직 (contract), 4 인턴직 (intern), 5 아르바이트 (part-time), 6 파견직, 9 프리랜서 (freelance), 3 병역특례, 8 위촉직, 14 파트, 12 교육생, 7 해외취업.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relation",
              "reg_dt",
              "edit_dt",
              "apply_dt",
              "apply_cnt"
            ],
            "type": "string",
            "description": "Sort order of the search results.",
            "default": "relation"
          },
          "pageSize": {
            "title": "Results per page",
            "minimum": 40,
            "maximum": 100,
            "type": "integer",
            "description": "How many jobs Saramin returns per search page (recruitPageCount): 40, 60, 80 or 100. Higher = fewer requests.",
            "default": 100
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "type": "integer",
            "description": "Search result page to start from.",
            "default": 1
          },
          "includeDetails": {
            "title": "Include full job details",
            "type": "boolean",
            "description": "Open each job to get the full description (상세요강), exact application period, salary, work address, tags and company info. Turn off for a faster, lighter list.",
            "default": true
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of jobs to return.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy settings. Saramin works best WITHOUT a proxy (the default); only change this if you know you need one (e.g. a Korean residential proxy if you get blocked).",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}