Partner Integration Guide


가맹점 검색 API 정의서

BC카드 AI 사업팀
문서 버전 v1 · 2026. 08.
대상 제휴 검토 파트너사
제공 방식
REST APIJSON 응답
이용 비용
무료제휴 조건 협의
조회 규모
최대 100건매출 랭킹 상위 순
예상 연동 기간
1주기관코드 발급 · IP 등록~테스트

Base URL

개발 (테스트)
https://dev-api.paybooc.ai/api/mer
운영
https://api.paybooc.ai/api/mer

호출 IP는 사전 등록이 필요합니다. 협의 단계에서 호출 서버의 고정 IP 목록을 전달해 주시기 바랍니다.

공통 응답 형식

모든 응답은 아래 구조를 공통으로 가집니다. 조회 결과는 data 배열에 담겨 옵니다.

{
  "rspCode": "00000",
  "rspMessage": "Success",
  "data": [ ... ]
}
필드타입설명
rspCodestring "00000" = 성공
rspMessagestring 결과 메시지. 성공 시 "Success"
dataarray 결과 배열. 매출 랭킹 상위 순 정렬, 최대 100건
1

가맹점 검색

가맹점명 · 지역 · 업종 조건으로 검색합니다

Request POST /v1/search

merNm · location · merTpbuzNm 중 하나 이상 필요하며, 두 개 이상을 조합해 검색할 수 있습니다.
필드타입필수설명
trnsTrceNostring Y 거래추적번호. 형식 {instNm}{YYYYMMDD}{10자리 seq}
instNmstring Y 기관명. 제휴 계약 시 발급. ex) "bccard"
merNmstring N 가맹점명. 부분 일치 검색으로 유사도 높은 순으로 응답
locationstring N 검색 지역. 주소 부분 일치 검색으로, 입력한 검색어가 주소에 포함된 매장을 모두 조회. ex) "서울 종로구"
merTpbuzNmstring N 업종명. 대분류 또는 소분류. 사용 가능한 값은 부록 참조

Request 예시 — 가맹점명 검색

{
  "trnsTrceNo": "bccard202608070000000001",
  "instNm": "bccard",
  "merNm": "카페시나브로"
}

Request 예시 — 지역 + 업종 검색

{
  "trnsTrceNo": "bccard202608070000000002",
  "instNm": "bccard",
  "location": "서울 종로구",
  "merTpbuzNm": "일반한식"
}

Response — data[] 항목

필드타입설명
merNmstring 가맹점명
merAddrstring 가맹점 주소
merTpnostring 전화번호. 가맹점 등록 정보 기준으로, 유효하지 않은 값이 포함될 수 있음
merTpbuzNmstring AI 업종명 (소분류). ex) "카페", "고기구이" / 값이 없는 매장도 있음
allSaleRnknumber 전국 동일 업종 내 매출 랭킹 백분위. 단위 %, 낮을수록 상위
ccgSaleRnknumber 시·군·구 동일 업종 내 매출 랭킹 백분위. 단위 %, 낮을수록 상위
loclPrsnPpltYnboolean 동네 맛집 여부. 동네 고객 비율이 시·군·구 평균보다 높은 매장
merUrlstring 상세 페이지 URL. 응답값을 그대로 사용 (경로 직접 조합 불가)
srtTimestring 영업 시작 시간 (HHMM). 최근 1개월 내 최초 결제 승인 시각
endTimestring 영업 종료 시간 (HHMM). 최근 1개월 내 최종 결제 승인 시각
frnrVsitYnboolean 외국인 방문 여부. 외국인 결제 이력이 있는 매장
empyVsitYnboolean 회식 적합 여부. 저녁 시간대 단체 결제 이력이 있는 매장
hldyDwkstring[] 휴무 요일. ex) ["일"], [] = 연중무휴
congestionDwkstring 가장 붐비는 요일. ex) "월", "일"
congestionTiznstring 가장 붐비는 시간대. ex) "오전", "저녁"
vistCstmrRnkListobject 주요 방문 고객층 Top 3
rk01string 1위 고객층. ex) "30대여성"
rk02string 2위 고객층
rk03string 3위 고객층
xaxsValstring TM128 X 좌표 (지도 핀 표시용)
yaxsValstring TM128 Y 좌표 (지도 핀 표시용)

참고 사항

매출 랭킹 표기단위는 %이며 값이 낮을수록 상위입니다. 1% 미만 구간은 소수점을 살려 표기하시길 권장합니다(상위 0.04%). 소수점 첫째 자리로 반올림하면 상위 0.0%가 되어 오류로 읽힐 수 있습니다.
붐비는 시간대 구간새벽 00~06 · 오전 06~11 · 점심 11~14 · 오후 14~17 · 저녁 17~21 · 심야 21~24
실시간 영업 여부 확인결제 발생 기준의 실시간 영업 현황은 merUrl 상세 페이지에서 확인할 수 있습니다.

Response 예시 — 가맹점명 검색

{
  "rspCode": "00000",
  "rspMessage": "Success",
  "data": [
    {
      "merNm": "카페시나브로(을지트윈타워점)",
      "merAddr": "서울 중구 을지로30길 20 지하1층 B112호",
      "merTpno": "02-0000-0000",
      "merTpbuzNm": "카페",
      "allSaleRnk": 0.04,
      "ccgSaleRnk": 0.23,
      "loclPrsnPpltYn": true,
      "merUrl": "https://web.paybooc.ai/mer/web/profile/bQSyX0QU5duyTaDXVqWW5A",
      "srtTime": "0646",
      "endTime": "1929",
      "frnrVsitYn": false,
      "empyVsitYn": false,
      "hldyDwk": ["일"],
      "congestionDwk": "월",
      "congestionTizn": "오전",
      "vistCstmrRnkList": {
        "rk01": "30대여성",
        "rk02": "30대남성",
        "rk03": "40대남성"
      },
      "xaxsVal": "311826",
      "yaxsVal": "551982"
    }
  ]
}

Response 예시 — 지역 + 업종 검색

{
  "rspCode": "00000",
  "rspMessage": "Success",
  "data": [
    {
      "merNm": "부촌",
      "merAddr": "서울 종로구 종로 200-12 ,1층 (종로4가)",
      "merTpno": "02-2267-1831",
      "merTpbuzNm": "고기구이",
      "allSaleRnk": 0.54,
      "ccgSaleRnk": 0.25,
      "loclPrsnPpltYn": false,
      "merUrl": "https://web.paybooc.ai/mer/web/profile/3x5ATwfSkOmIcXDE2Q2MDg",
      "srtTime": "1004",
      "endTime": "2130",
      "frnrVsitYn": true,
      "empyVsitYn": false,
      "hldyDwk": [],
      "congestionDwk": "일",
      "congestionTizn": "저녁",
      "vistCstmrRnkList": {
        "rk01": "60대이상남성",
        "rk02": "60대이상여성",
        "rk03": "50대남성"
      },
      "xaxsVal": "311851",
      "yaxsVal": "552483"
    }
  ]
}
2

키워드 검색

추천 키워드 기반 검색

Request GET /v1/search

GET /v1/search?keyword={keyword}&location={location}
파라미터타입필수설명
keywordstring Y 검색 키워드
locationstring N 지역 필터

현재 앱 내부용으로 운영 중이며, 파트너사 연동 시 개방 가능합니다.

제공 키워드

아래 8종을 keyword 값으로 사용합니다.

메뉴별매출랭킹1위가족외식동네24시간운영심야퇴근후한잔회식외국인관광

Response

POST /v1/search와 동일한 data[] 구조입니다.

3

연동 전 확인해 주실 사항

호출 IP 등록
보안 정책상 사전에 등록된 IP에서만 호출이 허용됩니다. 협의 단계에서 호출 서버의 고정 IP 목록을 전달해 주시기 바랍니다.
집계 기준
모든 지표는 최근 1개월 결제 데이터 기준 집계값입니다.
영업 여부 표기 차이
API로 알 수 있는 영업 여부는 분석 기반이고, merUrl 상세 페이지는 실시간 결제 발생 여부를 함께 반영합니다. 두 화면의 표기가 일시적으로 다를 수 있는 점을 감안해 주시기 바랍니다.
반환 건수
매출 랭킹 상위 순으로 정렬되어 최대 100건이 반환되며 페이징은 제공하지 않습니다. 100건을 넘는 지역·업종 조합은 검색 조건을 좁혀 호출해 주시기 바랍니다.
전화번호
merTpno는 유효하지 않은 값을 가질 수 있습니다. "02-0000-0000" 역시 가맹점 정보에 그대로 등록되어 있는 값입니다.
좌표계 변환
좌표는 TM128로 제공됩니다. WGS84 기준 지도 SDK를 쓰신다면 변환 로직이 필요합니다.
검색 방식
가맹점명 · 지역 · 업종 텍스트 조건 기반입니다.
표기 가이드
결제 데이터 기반 정보임을 나타내는 ‘eat.pl 잇플 · BC카드 결제 데이터 기반’ 출처 표기를 함께 노출해 주시기를 요청드립니다.
개인정보
제공 데이터는 가맹점 단위로 익명화·집계된 정보이며, 개별 고객 식별 정보는 일절 포함되지 않습니다.
4

연동 진행 절차

  1. 실무 협의제공 범위·노출 화면 협의 및 제휴 조건 확정
  2. 기관코드 발급 · IP 등록고유 기관명 발급, 호출 IP 등록, 개발 서버 접근 정보 전달
  3. 연동 테스트개발 서버 호출 테스트 및 화면 적용 검수
  4. 정식 오픈운영 서버 전환, 일부 화면 시범 노출 후 확대

부록 — 업종 분류표

merTpbuzNm

업종은 서로 독립된 두 체계로 관리됩니다. 대분류와 소분류는 포함 관계가 아니며, 한 가맹점은 두 체계에서 각각 하나의 값을 가집니다. merTpbuzNm에 어느 체계의 값을 넣어도 검색되며, 응답의 merTpbuzNm에는 소분류(AI 업종명)가 반환되며, AI 업종명이 없는 매장은 대분류 값이 반환됩니다.

대분류 — 표준 가맹점 업종코드9종

가맹점 등록 시 부여되는 국내 표준 업종 값입니다.

일반한식서양음식스넥중국음식일식회집주점칵테일바갈비전문점한정식
소분류 — AI 업종 분류34종

eat.pl 잇플이 결제 데이터와 매장 정보를 학습해 자체 분류한 체계입니다. 분류 신뢰도가 낮은 매장은 기타로 묶입니다.

카페고기구이찜/탕/찌개치킨국수/면/만두해산물구이/찜김밥전문점분식기타외국식곱창전골/구이피자족발/보쌈버거스시/초밥브런치카페/샐러드떡볶이전문점빵/도넛도시락/죽일식돈가스뷔페마라탕이탈리아음식샌드위치/토스트양꼬치아시안아이스크림/요거트/빙수전/부침개기타베이커리일식라멘멕시칸떡/한과프랑스음식비건/채식/사찰기타