개발자 문서
API 레퍼런스

고용보험 및 산재보험 가입 사업장 - 공공데이터 기업 위험 조회

MCP 도구 이름 opendata__comwel__name_search

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: real_test

현재 혜택은 요금제에서 확인해 주세요. 현재 데모 정책과 계정의 남은 양을 확인해 주세요.

상호로 사업자를 찾아 사업자등록번호, 사업장명, 주소, 성립일을 돌려줍니다.

Request

순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • real_test데모 — 현재 데모 한도 확인 필요
  • production정식 — 현재 공개 요금제 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입필수설명
providerstringY호출할 기관입니다.
  • opendata이 API 고정값 (기본값)

예시 : opendata

actionstringY호출할 작업입니다.
  • opendata.comwel.name_search이 API 고정값 (기본값)

예시 : opendata.comwel.name_search

paramsobjectY작업 파라미터입니다. 아래 params 파라미터 표의 필수 항목을 채워 보냅니다.
encrypted_fieldsobjectN민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

순번변수명타입필수설명
businessNamestringY찾을 상호(사업장명). 「주식회사」나 「(주)」 같은 법인 형태 표기와 띄어쓰기는 무시합니다
limitnumberN돌려받을 최대 행 수(선택, 기본 20)
bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: real_test' \
  --header 'Idempotency-Key: demo-name_search-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "opendata",
  "action": "opendata.comwel.name_search",
  "params": {
    "businessName": "<필수>"
  }
}'

Response

  • 아래 표의 칸은 작업이 SUCCEEDED 가 된 뒤 GET /v1/jobs/{job_id}/result 의 result.data 에 오고, 응답 예시는 작업을 제출했을 때(POST /v1/jobs)의 응답입니다.
  • 이 API 가 돌려주는 데이터: 사업자등록번호, 사업장명, 주소, 성립일, 자료를 받아 둔 시각
순번변수명타입설명
source_idstring이 작업의 원천 데이터셋 번호입니다. 이 작업에서는 항상 15059256 입니다(공공데이터포털 data.go.kr 의 번호).
actionstring호출한 작업 이름입니다. 이 작업에서는 항상 opendata.comwel.name_search 입니다.
job_idstring이 결과를 만든 작업의 ID 입니다.
sourceobject원천의 출처 정보입니다. 결과를 사용자에게 보여 줄 때 출처 표시에 씁니다.
source.idstring원천 데이터셋 번호입니다. source_id 와 같은 값입니다.
source.orgstring원천 데이터를 제공하는 기관 이름입니다. 이 작업에서는 항상 근로복지공단 입니다.
source.licensestring원천 데이터의 이용 허락 범위 표기입니다. 값은 원천마다 다르고, 결과를 보여 줄 때 출처 표시와 함께 씁니다.
license_notesarray출처 표시 문구, 이용 허락 표기, 결과 해석 안내가 이 순서로 담긴 문장 목록입니다. 첫 줄은 「출처: 근로복지공단 고용/산재보험 현황정보(가입 사업장 상세) / data.go.kr 15059256」 입니다.
upstreamobject상호로 사업자를 찾은 결과입니다. 아래 칸은 우리가 정해 담습니다.
upstream.source_opstring원천에서 부른 조회 이름입니다. 이 작업에서는 항상 business_name_index 입니다.
upstream.queryobject조회에 쓴 조건입니다. businessName(찾은 상호)이 담깁니다.
upstream.query.businessNamestring찾은 상호입니다. 띄어쓰기를 한 칸으로 정리한 값이 담깁니다.
upstream.matchesarray상호가 맞은 사업장의 목록입니다. 한 행에 bizno(사업자등록번호 10자리), business_name(사업장명), address(주소), established_on(성립일, YYYY-MM-DD, 없으면 null)이 담깁니다. 상호가 그것으로 시작하는 사업장이 먼저 오고 그다음 상호 안에 그 말이 든 사업장이 옵니다. 비어 있으면 이 색인에서 그 상호를 찾지 못했다는 뜻이며 그 상호의 사업자가 없다는 뜻은 아닙니다.
upstream.truncatedboolean요청한 limit 보다 많은 사업장이 맞았으면 true 입니다. true 이면 matches 는 앞쪽 limit 건만 담았으니 상호를 더 길게 적어 다시 찾습니다.
upstream.index_refreshed_atstring | null찾아본 색인을 마지막으로 새로 받은 시각입니다(ISO 8601).
upstream.coverage_notestring이 조회의 범위와 한계를 알리는 안내문입니다. 고용보험과 산재보험에 가입한 사업장만 올라 있다는 점, 비어 있는 결과가 사업자가 없다는 증명이 아니라는 점을 적습니다.
json
{
    "job_id": "job_01JC8YH8R0E1ABCDEFGHJKMNPQ",
    "status": "QUEUED",
    "env_scope": "real_test",
    "provider": "opendata",
    "action": "opendata.comwel.name_search",
    "submitted_at": "2026-05-27T12:34:56+09:00"
}
순번오류 코드발생 조건
POLICY_QUOTA_EXCEEDED공공데이터 조회의 하루 한도를 모두 쓰면 작업이 이 오류로 끝납니다. error.message 는 「오늘 이 조직의 공공데이터 조회 한도를 모두 썼습니다. 한국시간 자정에 다시 열립니다. 한도 상향이 필요하면 서비스문의로 알려 주세요.」 꼴이고, 한도의 범위에 따라 「이 조직의」 대신 「무료 요금제 몫의」 나 「서비스 전체」 가 들어갑니다. 자정이 지난 뒤에 다시 요청합니다.
PROVIDER_UPSTREAM_ERROR공공데이터 제공처가 오류로 답하면 작업이 이 오류로 끝나고, error.message 는 응답 상태로 고릅니다. 429 이면 「요청이 잠시 제한되었습니다. 잠시 후 다시 시도해 주세요.」, 403 이면 「요청하신 자료를 조회할 권한이 없습니다. 연동한 계정에 그 권한이 있는지 확인해 주세요.」, 500번대이면 「일시적인 오류로 요청을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」, 그 밖의 400번대이면 「요청을 처리할 수 없습니다. 입력한 값을 다시 확인해 주세요.」 입니다. 응답은 받았는데 읽지 못했거나 상태를 알 수 없으면 「기관에서 받은 응답을 처리하지 못했습니다. 잠시 후 다시 시도해 주시고, 계속되면 서비스문의로 알려 주세요.」 가 오고, 상태가 400번대도 500번대도 아니면 「서버 내부 오류로 작업을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」 가 옵니다.
VALIDATION_INVALID_FIELD요청 값이 맞지 않으면 작업이 이 오류로 끝나고, 요청을 고쳐 다시 보냅니다. 값이 빠지면 error.message 는 「요청에 필요한 값이 빠졌습니다. 빠진 값: 칸 이름. 그 값을 넣어 다시 요청해 주세요.」 꼴이고, 값의 형식이 틀리면 「요청 값이 올바르지 않습니다. 확인할 값: 칸 이름. 값을 고쳐 다시 요청해 주세요.」 꼴입니다(칸 이름이 다섯을 넘으면 앞 다섯과 「외 N개」 를 적습니다). 사업자등록번호 칸이면 「사업자등록번호는 숫자 열 자리로 보내 주세요.」 가 옵니다. 지원하지 않는 작업을 부르면 「지원하지 않는 작업입니다.」 입니다.
INTERNAL_ERROR우리 쪽 설정이나 처리 결함으로 끝나면 이 오류가 나가고 error.message 는 「서버 내부 오류로 작업을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」 입니다. 고객이 고칠 값이 없으므로 잠시 뒤 다시 요청하고, 계속되면 서비스문의로 알려 주세요.

2. 고용보험 및 산재보험 가입 사업장 조회opendata.comwel.workplace

MCP 도구 이름 opendata__comwel__workplace

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: real_test

현재 혜택은 요금제에서 확인해 주세요. 현재 데모 정책과 계정의 남은 양을 확인해 주세요.

사업자등록번호로 고용보험과 산재보험에 가입된 사업장(성립일, 상시인원, 업종, 소재지)을 조회합니다.

Request

순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • real_test데모 — 현재 데모 한도 확인 필요
  • production정식 — 현재 공개 요금제 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입필수설명
providerstringY호출할 기관입니다.
  • opendata이 API 고정값 (기본값)

예시 : opendata

actionstringY호출할 작업입니다.
  • opendata.comwel.workplace이 API 고정값 (기본값)

예시 : opendata.comwel.workplace

paramsobjectY작업 파라미터입니다. 아래 params 파라미터 표의 필수 항목을 채워 보냅니다.
encrypted_fieldsobjectN민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

순번변수명타입필수설명
biznostringY사업자등록번호 10자리(하이픈 허용)
insurancestringN보험 구분(선택, 기본 all). industrial 은 산재보험, employment 는 고용보험 행만 돌려줍니다
pageNonumberN페이지 번호(선택, 기본 1)
numOfRowsnumberN한 페이지 행 수(선택, 기본 100)
output_formatsarrayN이 결과를 엑셀(xlsx) 파일로도 받으려면 적습니다. 예: ["xlsx"]. 파일은 result.artifacts 에 함께 오고, 빼면 데이터만 옵니다
bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: real_test' \
  --header 'Idempotency-Key: demo-workplace-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "opendata",
  "action": "opendata.comwel.workplace",
  "params": {
    "bizno": "<필수>"
  }
}'

Response

  • 아래 표의 칸은 작업이 SUCCEEDED 가 된 뒤 GET /v1/jobs/{job_id}/result 의 result.data 에 오고, 응답 예시는 작업을 제출했을 때(POST /v1/jobs)의 응답입니다.
  • 이 API 가 돌려주는 데이터: 사업장명, 보험 구분, 보험가입구분, 성립일자, 상시인원, 산재업종명, 고용업종명, 주소, 보험별 가입 사업장 수와 상시인원 합계
순번변수명타입설명
source_idstring이 작업의 원천 데이터셋 번호입니다. 이 작업에서는 항상 15059256 입니다(공공데이터포털 data.go.kr 의 번호).
actionstring호출한 작업 이름입니다. 이 작업에서는 항상 opendata.comwel.workplace 입니다.
job_idstring이 결과를 만든 작업의 ID 입니다.
sourceobject원천의 출처 정보입니다. 결과를 사용자에게 보여 줄 때 출처 표시에 씁니다.
source.idstring원천 데이터셋 번호입니다. source_id 와 같은 값입니다.
source.orgstring원천 데이터를 제공하는 기관 이름입니다. 이 작업에서는 항상 근로복지공단 입니다.
source.licensestring원천 데이터의 이용 허락 범위 표기입니다. 값은 원천마다 다르고, 결과를 보여 줄 때 출처 표시와 함께 씁니다.
license_notesarray출처 표시 문구, 이용 허락 표기, 결과 해석 안내가 이 순서로 담긴 문장 목록입니다. 첫 줄은 「출처: 근로복지공단 고용/산재보험 현황정보(가입 사업장 상세) / data.go.kr 15059256」 입니다.
upstreamobject고용보험과 산재보험 가입 사업장 정보를 사업자등록번호로 조회한 결과입니다. 아래 칸은 우리가 정해 담습니다.
upstream.source_opstring원천에서 부른 조회 이름입니다. 이 작업에서는 항상 getGySjBoheomBsshItem 입니다.
upstream.queryobject조회에 쓴 조건입니다.
upstream.query.bznostring조회에 쓴 사업자등록번호(10자리)입니다.
upstream.query.insurancestring요청한 보험 구분입니다. all(둘 다), industrial(산재보험), employment(고용보험) 중 하나입니다.
upstream.workplacesarray가입 사업장 행의 목록입니다. 산재보험 행과 고용보험 행이 따로 오고, 한 사업자등록번호에 보험 적용 단위(사업장)가 여럿이면 행이 여러 개입니다. 모든 행이 같은 칸을 갖고 해당하지 않는 칸은 null 입니다. 안쪽 칸은 원천이 정하므로 이 문서가 칸 하나하나를 보장하지 않습니다. 비어 있으면 조회 시점에 가입 사업장을 찾지 못했다는 뜻이며 가입하지 않았다는 확인서는 아닙니다.
upstream.summaryobject보험별 요약입니다. industrial(산재보험)과 employment(고용보험) 각각에 name(보험 이름), workplaces(사업장 수), enrolled(가입 사업장이 하나라도 있으면 true), headcount_total(상시인원 합계, 값이 있는 행이 없으면 null)이 담깁니다. 이번 쪽에 받은 행만 센 값입니다.
upstream.total_countnumber | null조건에 맞는 전체 행 수입니다. 원천이 알려 준 값이라 이번 쪽에 담긴 행 수보다 클 수 있고, 알려 주지 않으면 null 입니다.
upstream.pageobject요청한 쪽 정보입니다.
upstream.page.pageNonumber요청한 쪽 번호입니다. 요청한 pageNo 와 같습니다.
upstream.page.numOfRowsnumber한 쪽에 요청한 행 수입니다. 요청한 numOfRows 와 같습니다.
upstream.coverage_notestring이 조회의 범위와 한계를 알리는 안내문입니다. 행이 사업장(보험 적용 단위) 단위이고, 비어 있는 결과가 가입하지 않았다는 확인서가 아니라는 점을 적습니다.
json
{
    "job_id": "job_01JC8YH8R0E1ABCDEFGHJKMNPQ",
    "status": "QUEUED",
    "env_scope": "real_test",
    "provider": "opendata",
    "action": "opendata.comwel.workplace",
    "submitted_at": "2026-05-27T12:34:56+09:00"
}
순번오류 코드발생 조건
POLICY_QUOTA_EXCEEDED공공데이터 조회의 하루 한도를 모두 쓰면 작업이 이 오류로 끝납니다. error.message 는 「오늘 이 조직의 공공데이터 조회 한도를 모두 썼습니다. 한국시간 자정에 다시 열립니다. 한도 상향이 필요하면 서비스문의로 알려 주세요.」 꼴이고, 한도의 범위에 따라 「이 조직의」 대신 「무료 요금제 몫의」 나 「서비스 전체」 가 들어갑니다. 자정이 지난 뒤에 다시 요청합니다.
PROVIDER_UPSTREAM_ERROR공공데이터 제공처가 오류로 답하면 작업이 이 오류로 끝나고, error.message 는 응답 상태로 고릅니다. 429 이면 「요청이 잠시 제한되었습니다. 잠시 후 다시 시도해 주세요.」, 403 이면 「요청하신 자료를 조회할 권한이 없습니다. 연동한 계정에 그 권한이 있는지 확인해 주세요.」, 500번대이면 「일시적인 오류로 요청을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」, 그 밖의 400번대이면 「요청을 처리할 수 없습니다. 입력한 값을 다시 확인해 주세요.」 입니다. 응답은 받았는데 읽지 못했거나 상태를 알 수 없으면 「기관에서 받은 응답을 처리하지 못했습니다. 잠시 후 다시 시도해 주시고, 계속되면 서비스문의로 알려 주세요.」 가 오고, 상태가 400번대도 500번대도 아니면 「서버 내부 오류로 작업을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」 가 옵니다.
VALIDATION_INVALID_FIELD요청 값이 맞지 않으면 작업이 이 오류로 끝나고, 요청을 고쳐 다시 보냅니다. 값이 빠지면 error.message 는 「요청에 필요한 값이 빠졌습니다. 빠진 값: 칸 이름. 그 값을 넣어 다시 요청해 주세요.」 꼴이고, 값의 형식이 틀리면 「요청 값이 올바르지 않습니다. 확인할 값: 칸 이름. 값을 고쳐 다시 요청해 주세요.」 꼴입니다(칸 이름이 다섯을 넘으면 앞 다섯과 「외 N개」 를 적습니다). 사업자등록번호 칸이면 「사업자등록번호는 숫자 열 자리로 보내 주세요.」 가 옵니다. 지원하지 않는 작업을 부르면 「지원하지 않는 작업입니다.」 입니다.
INTERNAL_ERROR우리 쪽 설정이나 처리 결함으로 끝나면 이 오류가 나가고 error.message 는 「서버 내부 오류로 작업을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」 입니다. 고객이 고칠 값이 없으므로 잠시 뒤 다시 요청하고, 계속되면 서비스문의로 알려 주세요.