POST /api/jobkorea/jobs/search
Price: 10 credits
Search JobKorea (jobkorea.co.kr) job postings by keyword, region, experience, education, employment type, company type, posting date, pay and headhunting: id, title, company, posting and deadline dates, experience, education, employment types, locations, job fields, benefits, pay range and view count
Leave keyword empty to browse by filters alone. Pass a returned id to jobkorea/jobs for the full posting, and company_id to jobkorea/companies. pay_min and pay_max, in the filters and in the results, are KRW per pay_type.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)keyword string nullable — Search keyword (examples: "python", "마케팅"; minLength: 1; maxLength: 30)count integer required — Max number of results (min: 1; max: 5000)sort string — Result ordering (default: "relevance"; one of: "relevance", "latest", "updated", "deadline", "views", "applicants")regions array nullable — Regions of the workplace (one of: "seoul", "gyeonggi", "incheon", "daejeon", "sejong", "south_chungcheong", "north_chungcheong", "south_jeolla_gwangju", "north_jeolla", "daegu", "north_gyeongsang", "busan", "ulsan", "south_gyeongsang", "gangwon", "jeju", "nationwide", "asia_middle_east", "china_hong_kong", "japan", "usa", "north_america", "south_america", "europe", "oceania", "africa")experience array nullable — Experience levels (one of: "newcomer", "experienced", "any")experience_min_years integer nullable — Minimum years of experience, for experienced postings (min: 1; max: 30)experience_max_years integer nullable — Maximum years of experience, for experienced postings (min: 1; max: 30)education array nullable — Education levels (one of: "any", "high_school", "college", "university", "masters", "doctorate")employment_types array nullable — Employment types (one of: "permanent", "contract", "intern", "dispatched", "subcontracted", "freelance", "part_time", "trainee", "military_alternative", "commissioned")company_types array nullable — Company types (one of: "large", "top30_group", "top1000_revenue", "midsize", "strong_small", "foreign", "small", "venture", "public", "nonprofit", "foreign_institution", "kospi", "kosdaq", "konex", "listed_abroad")exclude_keywords array nullable — Keywords a posting must not contain (examples: ["java"])posted_within string nullable — Registration date window (one of: "today", "three_days", "week", "month")pay_type string nullable — Pay period the pay bounds refer to (one of: "annual", "monthly", "weekly", "daily", "hourly", "per_task")pay_min integer nullable — Minimum pay in KRW per pay_type period (examples: 30000000; min: 1)pay_max integer nullable — Maximum pay in KRW per pay_type period (examples: 50000000; min: 1)headhunting_only boolean — Only headhunting postings (default: false)instant_apply_only boolean — Only postings that take an application on JobKorea (default: false)@type string (default: "JobkoreaJobSearchResult")id string requiredurl string requiredlegacy_id string nullablecompany_name string nullablecompany_id string nullablecompany_group string nullableis_headhunting boolean nullableposted_at integer nullableapplication_start_at integer nullableapplication_end_at integer nullableexperience string nullableexperience_min_years integer nullableeducation string nullableemployment_types array (default: [])locations array (default: [])job_fields array (default: [])benefits array (default: [])pay_type string nullablepay_min number nullablepay_max number nullableview_count integer nullablereward_amount number nullableis_newcomer_job boolean nullablebadges array (default: [])422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.