국민연금 가입 사업장 - 공공데이터 기업 위험 조회
1. 국민연금 가입 사업장 조회opendata. nps. workplace
MCP 도구 이름 opendata__
POSThttps:// api. xdata. kr/ v1/ jobsX-Env-Scope: real_test
현재 혜택은 요금제에서 확인해 주세요. 현재 데모 정책과 계정의 남은 양을 확인해 주세요.
사업자등록번호와 상호로 국민연금에 가입된 사업장(가입자 수, 당월 고지금액, 등록일, 업종)을 조회합니다.가입자 수 3인 이상 법인과 10인 이상 개인사업장이 개방 대상이며, 조회 전용이고 별도 연동 없이 사용할 수 있습니다.
Request
| 순번 | 변수명 | 필수 | 설명 |
|---|---|---|---|
| Authorization | Y | API 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다. | |
| X- | Y | 호출 환경입니다.
| |
| Idempotency- | Y | 재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다. | |
| Content- | Y | 요청 본문 형식입니다.
| |
| X- | N | 추적 아이디입니다. 지정하지 않으면 서버가 발급합니다. |
| 순번 | 변수명 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| provider | string | Y | 호출할 기관입니다.
| |
| action | string | Y | 호출할 작업입니다.
| |
| params | object | Y | 작업 파라미터입니다. 아래 params 파라미터 표의 필수 항목을 채워 보냅니다. | |
| encrypted_ | object | N | 민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다. |
| 순번 | 변수명 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| bizno | string | Y | 사업자등록번호 10자리(하이픈 허용). 앞 6자리로 후보를 찾습니다 | |
| wkplNm | string | N | 사업장 상호(선택). 비우면 법인 상호를 기업개요에서 찾아 씁니다. 사업자등록증의 상호를 그대로 주면 가장 정확합니다 | |
| pageNo | number | N | 후보 페이지 번호(선택, 기본 1) | |
| numOfRows | number | N | 후보 한 페이지 행 수(선택, 기본 100) | |
| output_ | array | N | 이 결과를 엑셀(xlsx) 파일로도 받으려면 적습니다. 예: ["xlsx"]. 파일은 result.artifacts 에 함께 오고, 빼면 데이터만 옵니다 |
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.nps.workplace",
"params": {
"bizno": "<필수>"
}
}'Response
- 아래 표의 칸은 작업이 SUCCEEDED 가 된 뒤 GET /v1/jobs/{job_id}/result 의 result.data 에 오고, 응답 예시는 작업을 제출했을 때(POST /v1/jobs)의 응답입니다.
- 이 API 가 돌려주는 데이터: 사업장명, 사업장 형태, 가입 상태, 가입자수, 당월고지금액, 사업장등록일, 사업장탈퇴일, 업종명, 자료생성년월, 도로명 주소
| 순번 | 변수명 | 타입 | 설명 |
|---|---|---|---|
| source_ | string | 이 작업의 원천 데이터셋 번호입니다. 이 작업에서는 항상 3046071 입니다(공공데이터포털 data.go.kr 의 번호). | |
| action | string | 호출한 작업 이름입니다. 이 작업에서는 항상 opendata.nps.workplace 입니다. | |
| job_ | string | 이 결과를 만든 작업의 ID 입니다. | |
| source | object | 원천의 출처 정보입니다. 결과를 사용자에게 보여 줄 때 출처 표시에 씁니다. | |
| source. | string | 원천 데이터셋 번호입니다. source_id 와 같은 값입니다. | |
| source. | string | 원천 데이터를 제공하는 기관 이름입니다. 이 작업에서는 항상 국민연금공단 입니다. | |
| source. | string | 원천 데이터의 이용 허락 범위 표기입니다. 값은 원천마다 다르고, 결과를 보여 줄 때 출처 표시와 함께 씁니다. | |
| license_ | array | 출처 표시 문구, 이용 허락 표기, 결과 해석 안내가 이 순서로 담긴 문장 목록입니다. 첫 줄은 「출처: 국민연금공단 국민연금 가입 사업장 내역 / data.go.kr 3046071」 입니다. | |
| upstream | object | 국민연금 가입 사업장 정보를 사업자등록번호 앞 6자리와 상호로 찾은 결과입니다. 아래 칸은 우리가 정해 담습니다. | |
| upstream. | array | 원천에서 부른 조회 이름 두 개입니다. 후보를 찾는 조회와 후보의 상세를 받는 조회가 이 순서로 항상 같은 값이 담깁니다. | |
| upstream. | object | 조회에 쓴 조건입니다. bznoPrefix(사업자등록번호 앞 6자리)와, 상호가 있었으면 wkplNm(조회에 쓴 상호)이 담깁니다. | |
| upstream. | string | 조회 방식입니다. exact_name 은 상호가 정확히 일치하는 후보를 찾았다는 뜻, no_exact_match 는 상호는 있었지만 일치하는 후보가 없다는 뜻, no_name 은 상호를 알 수 없어 후보만 돌려준다는 뜻입니다. | |
| upstream. | array | 사업자등록번호 앞 6자리(와 상호)로 찾은 후보 행의 목록입니다. 원천이 번호를 앞 6자리만 개방하므로 같은 앞자리의 다른 사업장이 섞일 수 있고, 같은 사업장이 자료생성년월마다 한 행씩 있을 수 있습니다. 후보 행에는 가입자 수와 고지금액 같은 상세 칸이 없어 null 입니다. | |
| upstream. | number | candidates 에 담긴 행의 수입니다. | |
| upstream. | array | 상호가 정확히 일치해 상세까지 받은 사업장 행의 목록입니다. 사업장마다 가장 최근 달의 행 하나이고 가입자 수, 당월 고지금액, 등록일, 탈퇴일, 업종이 함께 옵니다. 상세는 등록 중이고 자료가 최근인 사업장부터 상한까지만 받습니다. 안쪽 칸은 원천이 정하므로 이 문서가 칸 하나하나를 보장하지 않습니다. | |
| upstream. | number | 상호가 정확히 일치한 사업장의 수입니다. 같은 사업장의 월별 행은 하나로 셉니다. | |
| upstream. | number | 상호가 정확히 일치한 후보 행의 수입니다. 월별 행을 그대로 세므로 exact_count 이상입니다. | |
| upstream. | boolean | 상호가 일치한 사업장이 상세를 받는 상한보다 많아 일부만 matched 에 담았으면 true 입니다. 나머지는 candidates 에 상호, 사업장 형태, 가입 상태, 자료생성년월로만 있습니다. | |
| upstream. | object | null | matched 가운데 지금 기준으로 고른 행 하나입니다. 등록 상태인 행이 있으면 그중 자료생성년월이 가장 늦은 행이고, 없으면 matched 중 가장 늦은 행입니다. matched 가 비어 있으면 null 입니다. | |
| upstream. | number | null | 조건에 맞는 전체 행 수입니다. 원천이 알려 준 값이라 이번 쪽에 담긴 행 수보다 클 수 있고, 알려 주지 않으면 null 입니다. | |
| upstream. | object | 요청한 쪽 정보입니다. | |
| upstream. | number | 요청한 쪽 번호입니다. 요청한 pageNo 와 같습니다. | |
| upstream. | number | 한 쪽에 요청한 행 수입니다. 요청한 numOfRows 와 같습니다. | |
| upstream. | string | 이 조회의 범위와 한계를 알리는 안내문입니다. 번호를 앞 6자리만 쓰므로 후보가 섞일 수 있다는 점, 상호가 일치한 사업장만 가입자 수를 돌려준다는 점, 가입자 수 기준(법인 3인 이상, 개인 10인 이상)으로 개방되어 비어 있어도 가입하지 않았다는 확인이 아니라는 점을 적습니다. | |
| upstream. | string | 이번 조회의 매칭 결과를 알리는 안내문입니다. 상호가 없거나 일치하는 사업장이 없을 때 무엇을 다시 해야 하는지, 일부만 상세를 받았을 때 나머지가 어디 있는지를 적습니다. |
{
"job_id": "job_01JC8YH8R0E1ABCDEFGHJKMNPQ",
"status": "QUEUED",
"env_scope": "real_test",
"provider": "opendata",
"action": "opendata.nps.workplace",
"submitted_at": "2026-05-27T12:34:56+09:00"
}| 순번 | 오류 코드 | 발생 조건 |
|---|---|---|
| POLICY_ | 공공데이터 조회의 하루 한도를 모두 쓰면 작업이 이 오류로 끝납니다. error.message 는 「오늘 이 조직의 공공데이터 조회 한도를 모두 썼습니다. 한국시간 자정에 다시 열립니다. 한도 상향이 필요하면 서비스문의로 알려 주세요.」 꼴이고, 한도의 범위에 따라 「이 조직의」 대신 「무료 요금제 몫의」 나 「서비스 전체」 가 들어갑니다. 자정이 지난 뒤에 다시 요청합니다. | |
| PROVIDER_ | 공공데이터 제공처가 오류로 답하면 작업이 이 오류로 끝나고, error.message 는 응답 상태로 고릅니다. 429 이면 「요청이 잠시 제한되었습니다. 잠시 후 다시 시도해 주세요.」, 403 이면 「요청하신 자료를 조회할 권한이 없습니다. 연동한 계정에 그 권한이 있는지 확인해 주세요.」, 500번대이면 「일시적인 오류로 요청을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」, 그 밖의 400번대이면 「요청을 처리할 수 없습니다. 입력한 값을 다시 확인해 주세요.」 입니다. 응답은 받았는데 읽지 못했거나 상태를 알 수 없으면 「기관에서 받은 응답을 처리하지 못했습니다. 잠시 후 다시 시도해 주시고, 계속되면 서비스문의로 알려 주세요.」 가 오고, 상태가 400번대도 500번대도 아니면 「서버 내부 오류로 작업을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」 가 옵니다. | |
| VALIDATION_ | 요청 값이 맞지 않으면 작업이 이 오류로 끝나고, 요청을 고쳐 다시 보냅니다. 값이 빠지면 error.message 는 「요청에 필요한 값이 빠졌습니다. 빠진 값: 칸 이름. 그 값을 넣어 다시 요청해 주세요.」 꼴이고, 값의 형식이 틀리면 「요청 값이 올바르지 않습니다. 확인할 값: 칸 이름. 값을 고쳐 다시 요청해 주세요.」 꼴입니다(칸 이름이 다섯을 넘으면 앞 다섯과 「외 N개」 를 적습니다). 사업자등록번호 칸이면 「사업자등록번호는 숫자 열 자리로 보내 주세요.」 가 옵니다. 지원하지 않는 작업을 부르면 「지원하지 않는 작업입니다.」 입니다. | |
| INTERNAL_ | 우리 쪽 설정이나 처리 결함으로 끝나면 이 오류가 나가고 error.message 는 「서버 내부 오류로 작업을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」 입니다. 고객이 고칠 값이 없으므로 잠시 뒤 다시 요청하고, 계속되면 서비스문의로 알려 주세요. |