개발자 문서
API 레퍼런스

통신판매 사업자 - 공공데이터 기업 위험 조회

1. 통신판매 사업자 조회opendata.ftc.mail_order

MCP 도구 이름 opendata__ftc__mail_order

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.ftc.mail_order이 API 고정값 (기본값)

예시 : opendata.ftc.mail_order

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

[참고] 암호화

순번변수명타입필수설명
bzmnNmstringN상호(사업자명). bzmnNm 과 brno 가운데 하나 이상. 상호로 검색하면 사업자등록번호를 함께 돌려줍니다
brnostringN사업자등록번호 10자리(하이픈 허용). bzmnNm 과 brno 가운데 하나 이상
pageNonumberN페이지 번호(선택, 기본 1)
numOfRowsnumberN한 페이지 결과 수(선택, 기본 100)
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-mail_order-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "opendata",
  "action": "opendata.ftc.mail_order",
  "params": {}
}'

Response

  • 아래 표의 칸은 작업이 SUCCEEDED 가 된 뒤 GET /v1/jobs/{job_id}/result 의 result.data 에 오고, 응답 예시는 작업을 제출했을 때(POST /v1/jobs)의 응답입니다.
  • 이 API 가 돌려주는 데이터: 상호, 사업자등록번호, 법인등록번호, 운영 상태, 신고일자, 신고 기관, 시도, 소재지 주소, 도로명 주소, 담당 부서 전화번호
순번변수명타입설명
source_idstring이 작업의 원천 데이터셋 번호입니다. 이 작업에서는 항상 15126311 입니다(공공데이터포털 data.go.kr 의 번호).
actionstring호출한 작업 이름입니다. 이 작업에서는 항상 opendata.ftc.mail_order 입니다.
job_idstring이 결과를 만든 작업의 ID 입니다.
sourceobject원천의 출처 정보입니다. 결과를 사용자에게 보여 줄 때 출처 표시에 씁니다.
source.idstring원천 데이터셋 번호입니다. source_id 와 같은 값입니다.
source.orgstring원천 데이터를 제공하는 기관 이름입니다. 이 작업에서는 항상 공정거래위원회 입니다.
source.licensestring원천 데이터의 이용 허락 범위 표기입니다. 값은 원천마다 다르고, 결과를 보여 줄 때 출처 표시와 함께 씁니다.
license_notesarray출처 표시 문구, 이용 허락 표기, 결과 해석 안내가 이 순서로 담긴 문장 목록입니다. 첫 줄은 「출처: 공정거래위원회 통신판매사업자 등록현황 / data.go.kr 15126311」 입니다.
upstreamobject통신판매 신고 사업자 등록현황을 조회한 결과입니다. 아래 칸은 우리가 정해 담습니다.
upstream.source_opstring원천에서 부른 조회 이름입니다. 이 작업에서는 항상 getMllBsInfo_2 입니다.
upstream.queryobject조회에 쓴 조건입니다. bzmnNm(상호)과 brno(사업자등록번호 10자리) 가운데 조회에 쓴 칸만 담깁니다.
upstream.matchesarray조건에 맞는 통신판매 신고 사업자의 목록입니다. 상호, 사업자등록번호, 법인등록번호, 운영상태, 주소, 신고일자 같은 공개 칸만 담기고 대표자 성명과 전자우편은 담기지 않습니다. 비어 있으면 이 자료에서 그 조건의 사업자를 찾지 못했다는 뜻이며 사업자가 없다는 뜻은 아닙니다.
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.ftc.mail_order",
    "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 는 「서버 내부 오류로 작업을 마치지 못했습니다. 잠시 후 다시 시도해 주세요.」 입니다. 고객이 고칠 값이 없으므로 잠시 뒤 다시 요청하고, 계속되면 서비스문의로 알려 주세요.