{
  "openapi": "3.0.1",
  "info": {
    "title": "Saramin Jobs Scraper",
    "description": "Scrape job listings from Saramin (saramin.co.kr), South Korea's largest job board. Search by keyword, browse by region or job category, filter by experience level, employment type and education level, and sort results, with full Korean-Hangul support.",
    "version": "1.0",
    "x-build-id": "G4y8hL07j6aqPui4E"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~saramin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-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/crawlerbros~saramin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-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/crawlerbros~saramin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "byRegion",
              "byCategory"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text keyword to search job titles/descriptions (mode=search). Korean or English, e.g. `python`, `개발자`, `마케팅`.",
            "default": "python"
          },
          "region": {
            "title": "Region (mode=byRegion)",
            "enum": [
              "101000",
              "102000",
              "104000",
              "105000",
              "106000",
              "107000",
              "108000",
              "109000",
              "110000",
              "111000",
              "112000",
              "113000",
              "114000",
              "115000",
              "116000",
              "118000"
            ],
            "type": "string",
            "description": "Top-level South Korean region/province to browse job listings from.",
            "default": "101000"
          },
          "jobCategory": {
            "title": "Job category/industry (mode=byCategory)",
            "enum": [
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10",
              "11",
              "12",
              "13",
              "14",
              "15",
              "16",
              "17",
              "18",
              "19",
              "20",
              "21",
              "22"
            ],
            "type": "string",
            "description": "Top-level Saramin job-category/industry to browse.",
            "default": "2"
          },
          "experienceLevel": {
            "title": "Experience level filter",
            "enum": [
              "any",
              "entryLevel",
              "experienced",
              "noExperienceRequired"
            ],
            "type": "string",
            "description": "Filter results by career/experience requirement. Applies to all modes.",
            "default": "any"
          },
          "employmentType": {
            "title": "Employment type filter",
            "enum": [
              "any",
              "정규직",
              "계약직",
              "인턴직",
              "아르바이트",
              "파견직",
              "프리랜서",
              "파트",
              "위촉직",
              "전임",
              "병역특례",
              "교육생",
              "해외취업",
              "기간제",
              "전문연구요원"
            ],
            "type": "string",
            "description": "Filter results by employment type. Applies to all modes.",
            "default": "any"
          },
          "educationLevel": {
            "title": "Education level filter",
            "enum": [
              "any",
              "noRequirement",
              "highSchool",
              "associate",
              "bachelor",
              "master",
              "doctorate"
            ],
            "type": "string",
            "description": "Filter results by minimum education requirement. Applies to all modes.",
            "default": "any"
          },
          "excludeKeyword": {
            "title": "Exclude keyword",
            "type": "string",
            "description": "Optional keyword to exclude from results (Saramin's own `exc_keyword` filter). Applies to all modes, e.g. exclude `영업` (sales) from a broad region/category browse.",
            "default": ""
          },
          "careerYearsMin": {
            "title": "Minimum career years (experienced only)",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10",
              "11",
              "12",
              "13",
              "14",
              "15",
              "16",
              "17",
              "18",
              "19",
              "20"
            ],
            "type": "string",
            "description": "Restrict results to `경력` (experienced) postings requiring at least this many years (Saramin's own `exp_cd=2`+`exp_min` filter). Setting this automatically restricts to experienced postings server-side, same as `experienceLevel=experienced`. Applies to all modes.",
            "default": ""
          },
          "careerYearsMax": {
            "title": "Maximum career years (experienced only)",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10",
              "11",
              "12",
              "13",
              "14",
              "15",
              "16",
              "17",
              "18",
              "19",
              "20"
            ],
            "type": "string",
            "description": "Restrict results to `경력` (experienced) postings requiring at most this many years (Saramin's own `exp_cd=2`+`exp_max` filter). Setting this automatically restricts to experienced postings server-side, same as `experienceLevel=experienced`. Applies to all modes.",
            "default": ""
          },
          "companyType": {
            "title": "Company type/scale filter",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict results to one or more company types/scales (Saramin's own `company_type[]` filter). Applies to all modes. Empty = no filter.",
            "items": {
              "type": "string",
              "enum": [
                "scale001",
                "scale002",
                "scale003",
                "scale004",
                "scale005",
                "scale006",
                "foreign",
                "public",
                "laboratory",
                "school",
                "social-welfare",
                "banking-organ",
                "nonprofit",
                "medical-institution",
                "kosdaq",
                "kospi",
                "konex",
                "stock",
                "incorporated",
                "cooperative",
                "corporate-juridical-person",
                "foundation",
                "ex_audit",
                "military",
                "ex_import"
              ],
              "enumTitles": [
                "Large corporation (대기업)",
                "Top-1000-revenue corporation (매출1000대기업)",
                "Mid-sized corporation (중견기업)",
                "Small/medium business (중소기업)",
                "Startup (스타트업)",
                "Individual business (개인사업자)",
                "Foreign-invested company (외국계(법인/투자))",
                "Public corporation/agency (공사·공기업)",
                "Research institute (연구소)",
                "School/educational institution (학교·교육기관)",
                "Social welfare organization (사회복지기관)",
                "Financial institution (금융기관)",
                "Nonprofit/association (비영리단체,협회)",
                "Hospital/medical institution (병원,의료기관)",
                "KOSDAQ-listed (코스닥)",
                "KOSPI-listed (코스피)",
                "KONEX-listed (코넥스)",
                "Stock corporation (주식회사)",
                "Limited company (유한회사)",
                "Cooperative (협동조합)",
                "Incorporated association (사단법인)",
                "Foundation (재단법인)",
                "Externally audited corporation (외부감사법인)",
                "Military-service-exemption certified (병역특례 인증 업체)",
                "Import/export company (수출입기업)"
              ]
            },
            "default": []
          },
          "minAnnualSalary": {
            "title": "Minimum annual salary filter",
            "enum": [
              "",
              "8",
              "9",
              "10",
              "11",
              "12",
              "13",
              "14",
              "15",
              "16",
              "17",
              "18",
              "19",
              "20",
              "21",
              "22"
            ],
            "type": "string",
            "description": "Restrict results to postings advertising at least this annual salary (Saramin's own `sal_min` filter). Applies to all modes. Only postings with a published salary are affected by this filter server-side.",
            "default": ""
          },
          "remoteOnly": {
            "title": "Remote-work-only filter",
            "type": "boolean",
            "description": "Only show postings that allow remote work (Saramin's own `work_type=1` filter, 재택근무 가능). Applies to all modes.",
            "default": false
          },
          "workDays": {
            "title": "Work-days-per-week pattern filter",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict results to one or more weekly work-day patterns (Saramin's own `workday[]` filter). Applies to all modes. Empty = no filter.",
            "items": {
              "type": "string",
              "enum": [
                "wsh010",
                "wsh030",
                "wsh040",
                "wsh100",
                "wsh110",
                "wsh050",
                "wsh090"
              ],
              "enumTitles": [
                "5-day week, Mon-Fri (주 5일(월~금))",
                "6-day week, Mon-Sat (주 6일(월~토))",
                "3-day / alternating (주 3일(격일제))",
                "4.5-day week (주 4.5일)",
                "4.9-day week (주 4.9일)",
                "Flexible schedule (유연근무제)",
                "Decided after interview (면접 후 결정)"
              ]
            },
            "default": []
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "relation",
              "accuracy",
              "reg_dt",
              "edit_dt",
              "closing_dt",
              "apply_cnt",
              "employ_cnt"
            ],
            "type": "string",
            "description": "How Saramin orders the listing page. Applies to all modes.",
            "default": "relation"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on emitted records. The actor paginates Saramin's listing pages (up to 100 per page) to fill this cap; results may be fewer if filters are restrictive or the query's total match count is smaller.",
            "default": 40
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}