호출 IP는 사전 등록이 필요합니다. 협의 단계에서 호출 서버의 고정 IP 목록을 전달해 주시기 바랍니다.
모든 응답은 아래 구조를 공통으로 가집니다. 조회 결과는 data 배열에 담겨 옵니다.
{
"rspCode": "00000",
"rspMessage": "Success",
"data": [ ... ]
}
| 필드 | 타입 | 설명 |
|---|---|---|
| rspCode | string | "00000" = 성공 |
| rspMessage | string | 결과 메시지. 성공 시 "Success" |
| data | array | 결과 배열. 매출 랭킹 상위 순 정렬, 최대 100건 |
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
| trnsTrceNo | string | Y | 거래추적번호. 형식 {instNm}{YYYYMMDD}{10자리 seq} |
| instNm | string | Y | 기관명. 제휴 계약 시 발급. ex) "bccard" |
| merNm | string | N | 가맹점명. 부분 일치 검색으로 유사도 높은 순으로 응답 |
| location | string | N | 검색 지역. 주소 부분 일치 검색으로, 입력한 검색어가 주소에 포함된 매장을 모두 조회. ex) "서울 종로구" |
| merTpbuzNm | string | N | 업종명. 대분류 또는 소분류. 사용 가능한 값은 부록 참조 |
{
"trnsTrceNo": "bccard202608070000000001",
"instNm": "bccard",
"merNm": "카페시나브로"
}
{
"trnsTrceNo": "bccard202608070000000002",
"instNm": "bccard",
"location": "서울 종로구",
"merTpbuzNm": "일반한식"
}
data[] 항목| 필드 | 타입 | 설명 |
|---|---|---|
| merNm | string | 가맹점명 |
| merAddr | string | 가맹점 주소 |
| merTpno | string | 전화번호. 가맹점 등록 정보 기준으로, 유효하지 않은 값이 포함될 수 있음 |
| merTpbuzNm | string | AI 업종명 (소분류). ex) "카페", "고기구이" / 값이 없는 매장도 있음 |
| allSaleRnk | number | 전국 동일 업종 내 매출 랭킹 백분위. 단위 %, 낮을수록 상위 |
| ccgSaleRnk | number | 시·군·구 동일 업종 내 매출 랭킹 백분위. 단위 %, 낮을수록 상위 |
| loclPrsnPpltYn | boolean | 동네 맛집 여부. 동네 고객 비율이 시·군·구 평균보다 높은 매장 |
| merUrl | string | 상세 페이지 URL. 응답값을 그대로 사용 (경로 직접 조합 불가) |
| srtTime | string | 영업 시작 시간 (HHMM). 최근 1개월 내 최초 결제 승인 시각 |
| endTime | string | 영업 종료 시간 (HHMM). 최근 1개월 내 최종 결제 승인 시각 |
| frnrVsitYn | boolean | 외국인 방문 여부. 외국인 결제 이력이 있는 매장 |
| empyVsitYn | boolean | 회식 적합 여부. 저녁 시간대 단체 결제 이력이 있는 매장 |
| hldyDwk | string[] | 휴무 요일. ex) ["일"], [] = 연중무휴 |
| congestionDwk | string | 가장 붐비는 요일. ex) "월", "일" |
| congestionTizn | string | 가장 붐비는 시간대. ex) "오전", "저녁" |
| vistCstmrRnkList | object | 주요 방문 고객층 Top 3 |
| rk01 | string | 1위 고객층. ex) "30대여성" |
| rk02 | string | 2위 고객층 |
| rk03 | string | 3위 고객층 |
| xaxsVal | string | TM128 X 좌표 (지도 핀 표시용) |
| yaxsVal | string | TM128 Y 좌표 (지도 핀 표시용) |
상위 0.04%). 소수점 첫째 자리로 반올림하면 상위 0.0%가 되어 오류로 읽힐 수 있습니다.새벽 00~06 · 오전 06~11 · 점심 11~14 · 오후 14~17 · 저녁 17~21 · 심야 21~24merUrl 상세 페이지에서 확인할 수 있습니다.{
"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"
}
]
}
{
"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"
}
]
}
GET /v1/search?keyword={keyword}&location={location}
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| keyword | string | Y | 검색 키워드 |
| location | string | N | 지역 필터 |
현재 앱 내부용으로 운영 중이며, 파트너사 연동 시 개방 가능합니다.
아래 8종을 keyword 값으로 사용합니다.
POST /v1/search와 동일한 data[] 구조입니다.
merUrl 상세 페이지는 실시간 결제 발생 여부를 함께 반영합니다. 두 화면의 표기가 일시적으로 다를 수 있는 점을 감안해 주시기 바랍니다.merTpno는 유효하지 않은 값을 가질 수 있습니다. "02-0000-0000" 역시 가맹점 정보에 그대로 등록되어 있는 값입니다.TM128로 제공됩니다. WGS84 기준 지도 SDK를 쓰신다면 변환 로직이 필요합니다.업종은 서로 독립된 두 체계로 관리됩니다. 대분류와 소분류는 포함 관계가 아니며, 한 가맹점은 두 체계에서 각각 하나의 값을 가집니다. merTpbuzNm에 어느 체계의 값을 넣어도 검색되며, 응답의 merTpbuzNm에는 소분류(AI 업종명)가 반환되며, AI 업종명이 없는 매장은 대분류 값이 반환됩니다.
가맹점 등록 시 부여되는 국내 표준 업종 값입니다.
eat.pl 잇플이 결제 데이터와 매장 정보를 학습해 자체 분류한 체계입니다. 분류 신뢰도가 낮은 매장은 기타로 묶입니다.