Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: 장소 혼잡도 Visit API
version: '1.0'
servers:
- url: https://apis.openapi.sk.com/puzzle/place
security:
- sec0: []
tags:
- name: Visit
paths:
/visit/count/raw/daily/pois/{poiId}:
get:
tags:
- Visit
summary: 일자별 장소 방문자 수
description: '특정 장소 주변에 10분 이상 체류한 SK텔레콤 회선 사용자 중 거주 인구 및 직장 인구를 제외한 사용자 수에 보정 계수를 곱해 추정 방문자 수를 산출합니다.
'
operationId: poivisitcount
parameters:
- $ref: '#/components/parameters/ContentTypeJson'
- $ref: '#/components/parameters/AppKey'
- $ref: '#/components/parameters/Gender'
- $ref: '#/components/parameters/AgeGrp'
- $ref: '#/components/parameters/StartDate'
- $ref: '#/components/parameters/EndDate'
- $ref: '#/components/parameters/Date'
- $ref: '#/components/parameters/Range'
- $ref: '#/components/parameters/PoiId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
contents:
$ref: '#/components/schemas/PoiVisitorCountRawDaily'
examples:
Result:
value: "{\n \"status\": {\n \"code\": \"00\",\n \"message\": \"success\",\n \"totalCount\": 1\n },\n \"contents\": {\n \"poiId\": \"10067845\",\n \"poiName\": \"더현대서울\",\n \"gender\": \"all\",\n \"ageGrp\": \"all\",\n \"raw\": [\n {\n \"approxVisitorCount\": 26284.4,\n \"date\": \"20230201\"\n },\n {\n \"approxVisitorCount\": 27706.7,\n \"date\": \"20230202\"\n }\n ]\n }\n}"
'400':
$ref: '#/paths/~1meta~1pois/get/responses/400'
'401':
$ref: '#/paths/~1meta~1pois/get/responses/401'
'403':
$ref: '#/paths/~1meta~1pois/get/responses/403'
'404':
$ref: '#/paths/~1meta~1pois/get/responses/404'
'429':
$ref: '#/paths/~1meta~1pois/get/responses/429'
'500':
$ref: '#/paths/~1meta~1pois/get/responses/500'
'504':
$ref: '#/paths/~1meta~1pois/get/responses/504'
deprecated: false
/visit/distance/stat/daily/pois/{poiId}:
get:
tags:
- Visit
summary: 장소 유입력
description: '특정 장소 주변에 10분 이상 체류한 SK텔레콤 회선 사용자 중 거주 인구 및 직장 인구를 제외한 방문자가 얼마나 멀리서 오는지 알 수 있는 중위값을 제공합니다.
'
operationId: poivisitdistance
parameters:
- $ref: '#/components/parameters/ContentTypeJson'
- $ref: '#/components/parameters/AppKey'
- $ref: '#/components/parameters/PoiId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
contents:
$ref: '#/components/schemas/PoiVisitorDistance'
examples:
Result:
value: "{\n \"status\": {\n \"code\": \"00\",\n \"message\": \"success\",\n \"totalCount\": 1\n },\n \"contents\": {\n \"poiId\": \"219475\",\n \"poiName\": \"롯데백화점본점\",\n \"stat\": {\n \"visitorDistance\": 10.2218\n },\n \"statStartDate\": \"20230416\",\n \"statEndDate\": \"20230515\"\n }\n}"
'400':
$ref: '#/paths/~1meta~1pois/get/responses/400'
'401':
$ref: '#/paths/~1meta~1pois/get/responses/401'
'403':
$ref: '#/paths/~1meta~1pois/get/responses/403'
'404':
$ref: '#/paths/~1meta~1pois/get/responses/404'
'429':
$ref: '#/paths/~1meta~1pois/get/responses/429'
'500':
$ref: '#/paths/~1meta~1pois/get/responses/500'
'504':
$ref: '#/paths/~1meta~1pois/get/responses/504'
deprecated: false
/visit/seg/stat/daily/pois/{poiId}:
get:
tags:
- Visit
summary: 장소 방문자 연령 분포
description: '특정 장소 주변에 10분 이상 체류한 SK텔레콤 회선 사용자 중 거주 인구 및 직장 인구를 제외한 방문자의 연령 분포를 제공합니다.
'
operationId: poivisitseg
parameters:
- $ref: '#/components/parameters/ContentTypeJson'
- $ref: '#/components/parameters/AppKey'
- $ref: '#/components/parameters/PoiId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
contents:
$ref: '#/components/schemas/PoiVisitorSeg'
examples:
Result:
value: "{\n \"status\": {\n \"code\": \"00\",\n \"message\": \"success\",\n \"totalCount\": 1\n },\n \"contents\": {\n \"poiId\": \"219475\",\n \"poiName\": \"롯데백화점본점\",\n \"stat\": [\n {\n \"gender\": \"male\",\n \"ageGrp\": \"0\",\n \"rate\": 0.1074\n },\n {\n \"gender\": \"male\",\n \"ageGrp\": \"10\",\n \"rate\": 1.0081\n }\n ],\n \"statStartDate\": \"20230416\",\n \"statEndDate\": \"20230515\"\n }\n}"
'400':
$ref: '#/paths/~1meta~1pois/get/responses/400'
'401':
$ref: '#/paths/~1meta~1pois/get/responses/401'
'403':
$ref: '#/paths/~1meta~1pois/get/responses/403'
'404':
$ref: '#/paths/~1meta~1pois/get/responses/404'
'429':
$ref: '#/paths/~1meta~1pois/get/responses/429'
'500':
$ref: '#/paths/~1meta~1pois/get/responses/500'
'504':
$ref: '#/paths/~1meta~1pois/get/responses/504'
deprecated: false
/visit/count/raw/daily/areas/{areaId}:
get:
tags:
- Visit
summary: 일자별 상권 방문자 수
description: '특정 상권에 10분 이상 체류한 SK텔레콤 회선 사용자 중 거주 인구 및 직장 인구를 제외한 사용자 수에 보정 계수를 곱해 추정 방문자 수를 산출합니다.
'
operationId: areavisitcount
parameters:
- $ref: '#/components/parameters/ContentTypeJson'
- $ref: '#/components/parameters/AppKey'
- $ref: '#/components/parameters/Gender'
- $ref: '#/components/parameters/AgeGrp'
- $ref: '#/components/parameters/StartDate'
- $ref: '#/components/parameters/EndDate'
- $ref: '#/components/parameters/Date'
- $ref: '#/components/parameters/Range'
- $ref: '#/components/parameters/AreaId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
contents:
$ref: '#/components/schemas/AreaVisitorCountRawDaily'
examples:
Result:
value: "{\n \"status\": {\n \"code\": \"00\",\n \"message\": \"success\",\n \"totalCount\": 1\n },\n \"contents\": {\n \"areaId\": \"9195\",\n \"areaName\": \"명동\",\n \"gender\": \"all\",\n \"ageGrp\": \"all\",\n \"raw\": [\n {\n \"approxVisitorCount\": 275654,\n \"date\": \"20230511\"\n },\n {\n \"approxVisitorCount\": 299273,\n \"date\": \"20230512\"\n }\n ]\n }\n}"
'400':
$ref: '#/paths/~1meta~1pois/get/responses/400'
'401':
$ref: '#/paths/~1meta~1pois/get/responses/401'
'403':
$ref: '#/paths/~1meta~1pois/get/responses/403'
'404':
$ref: '#/paths/~1meta~1pois/get/responses/404'
'429':
$ref: '#/paths/~1meta~1pois/get/responses/429'
'500':
$ref: '#/paths/~1meta~1pois/get/responses/500'
'504':
$ref: '#/paths/~1meta~1pois/get/responses/504'
deprecated: false
/visit/distance/stat/daily/areas/{areaId}:
get:
tags:
- Visit
summary: 상권 유입력
description: '특정 상권에 10분 이상 체류한 SK텔레콤 회선 사용자 중 거주 인구 및 직장 인구를 제외한 방문자가 얼마나 멀리서 오는지 알 수 있는 중위값을 제공합니다.
'
operationId: areavisitdistance
parameters:
- $ref: '#/components/parameters/ContentTypeJson'
- $ref: '#/components/parameters/AppKey'
- $ref: '#/components/parameters/AreaId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
contents:
$ref: '#/components/schemas/AreaVisitorDistance'
examples:
Result:
value: "{\n \"status\": {\n \"code\": \"00\",\n \"message\": \"success\",\n \"totalCount\": 1\n },\n \"contents\": {\n \"areaId\": \"9195\",\n \"areaName\": \"명동\",\n \"stat\": {\n \"visitorDistance\": 12.0826\n },\n \"statStartDate\": \"20230418\",\n \"statEndDate\": \"20230517\"\n }\n}"
'400':
$ref: '#/paths/~1meta~1pois/get/responses/400'
'401':
$ref: '#/paths/~1meta~1pois/get/responses/401'
'403':
$ref: '#/paths/~1meta~1pois/get/responses/403'
'404':
$ref: '#/paths/~1meta~1pois/get/responses/404'
'429':
$ref: '#/paths/~1meta~1pois/get/responses/429'
'500':
$ref: '#/paths/~1meta~1pois/get/responses/500'
'504':
$ref: '#/paths/~1meta~1pois/get/responses/504'
deprecated: false
/visit/seg/stat/daily/areas/{areaId}:
get:
tags:
- Visit
summary: 상권 방문자 연령 분포
description: '특정 상권에 10분 이상 체류한 SK텔레콤 회선 사용자 중 거주 인구 및 직장 인구를 제외한 방문자의 연령 분포를 제공합니다.
'
operationId: areavisitseg
parameters:
- $ref: '#/components/parameters/ContentTypeJson'
- $ref: '#/components/parameters/AppKey'
- $ref: '#/components/parameters/AreaId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
contents:
$ref: '#/components/schemas/AreaVisitorSeg'
examples:
Result:
value: "{\n \"status\": {\n \"code\": \"00\",\n \"message\": \"success\",\n \"totalCount\": 1\n },\n \"contents\": {\n \"areaId\": \"9195\",\n \"areaName\": \"명동\",\n \"stat\": [\n {\n \"gender\": \"male\",\n \"ageGrp\": \"0\",\n \"rate\": 0.1171\n },\n {\n \"gender\": \"male\",\n \"ageGrp\": \"10\",\n \"rate\": 1.5923\n }\n ],\n \"statStartDate\": \"20230416\",\n \"statEndDate\": \"20230515\"\n }\n}"
'400':
$ref: '#/paths/~1meta~1pois/get/responses/400'
'401':
$ref: '#/paths/~1meta~1pois/get/responses/401'
'403':
$ref: '#/paths/~1meta~1pois/get/responses/403'
'404':
$ref: '#/paths/~1meta~1pois/get/responses/404'
'429':
$ref: '#/paths/~1meta~1pois/get/responses/429'
'500':
$ref: '#/paths/~1meta~1pois/get/responses/500'
'504':
$ref: '#/paths/~1meta~1pois/get/responses/504'
deprecated: false
/visit/type/stat/daily/areas/{areaId}:
get:
tags:
- Visit
summary: 상권 방문자 유형 분포
description: '특정 상권에 10분 이상 체류한 SK텔레콤 회선 사용자의 유형 분포를 제공합니다.
'
operationId: areavisittype
parameters:
- $ref: '#/components/parameters/ContentTypeJson'
- $ref: '#/components/parameters/AppKey'
- $ref: '#/components/parameters/AreaId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
contents:
$ref: '#/components/schemas/AreaVisitorType'
examples:
Result:
value: "{\n \"status\": {\n \"code\": \"00\",\n \"message\": \"success\",\n \"totalCount\": 1\n },\n \"contents\": {\n \"areaId\": \"9195\",\n \"areaName\": \"명동\",\n \"stat\": [\n {\n \"visitorType\": \"home\",\n \"rate\": 2.7631\n },\n {\n \"visitorType\": \"visitor\",\n \"rate\": 75.0717\n },\n {\n \"visitorType\": \"work\",\n \"rate\": 22.1652\n }\n ],\n \"statStartDate\": \"20230416\",\n \"statEndDate\": \"20230515\"\n }\n}"
'400':
$ref: '#/paths/~1meta~1pois/get/responses/400'
'401':
$ref: '#/paths/~1meta~1pois/get/responses/401'
'403':
$ref: '#/paths/~1meta~1pois/get/responses/403'
'404':
$ref: '#/paths/~1meta~1pois/get/responses/404'
'429':
$ref: '#/paths/~1meta~1pois/get/responses/429'
'500':
$ref: '#/paths/~1meta~1pois/get/responses/500'
'504':
$ref: '#/paths/~1meta~1pois/get/responses/504'
deprecated: false
components:
schemas:
VisitorCountDate:
type: object
properties:
approxVisitorCount:
type: number
description: 추정 방문자수
date:
type: string
description: 날짜 (YYYYMMDD)
required:
- approxVisitorCount
- date
PoiVisitorCountRawDaily:
type: object
properties:
poiId:
type: string
description: 장소 id
poiName:
type: string
description: 장소 이름
gender:
type: string
description: 성별 (male:남성, female:여성, all:전체)
ageGrp:
type: string
description: 연령대 (0:10대 미만, 10:10대, 20:20대, 30:30대, 40:40대, 50:50대, 60:60대, 70:70대, 80:80대, 90:90대, 100:100대이상, all:전체)
raw:
description: raw 데이터
type: array
items:
$ref: '#/components/schemas/VisitorCountDate'
required:
- poiId
- poiName
- gender
- ageGrp
- raw
ResponseStatus:
type: object
description: 응답 상태입니다.
properties:
code:
type: string
description: '응답 코드입니다.
00: 성공
'
message:
type: string
description: '요청(request) 성공 여부 메시지입니다.
success: 성공.
'
totalCount:
type: integer
description: 검색 결과 데이터 건수입니다.
required:
- code
- message
- totalCount
VisitorType:
type: object
properties:
visitorType:
type: string
description: 방문자 유형(home, work, visitor)
rate:
type: number
description: 방문자 유형이 전체에서 차지하는 비율입니다.
required:
- gender
- ageGrp
- rate
AreaVisitorSeg:
type: object
properties:
areaId:
type: string
description: 상권 id
areaName:
type: string
description: 상권 이름
stat:
description: 통계 데이터
type: array
items:
$ref: '#/components/schemas/VisitorSeg'
statStartDate:
type: string
description: 통계 시작일
statEndDate:
type: string
description: 통계 종료일
required:
- areaId
- areaName
- stat
- statStartDate
- statEndDate
AreaVisitorDistance:
type: object
properties:
areaId:
type: string
description: 상권 id
areaName:
type: string
description: 상권 이름
stat:
description: 통계 데이터
type: object
properties:
visitorDistance:
type: number
description: 유입력
statStartDate:
type: string
description: 통계 시작일
statEndDate:
type: string
description: 통계 종료일
required:
- areaId
- areaName
- stat
- statStartDate
- statEndDate
AreaVisitorType:
type: object
properties:
areaId:
type: string
description: 상권 id
areaName:
type: string
description: 상권 이름
stat:
description: 통계 데이터
type: array
items:
$ref: '#/components/schemas/VisitorType'
statStartDate:
type: string
description: 통계 시작일
statEndDate:
type: string
description: 통계 종료일
required:
- areaId
- areaName
- stat
- statStartDate
- statEndDate
PoiVisitorSeg:
type: object
properties:
poiId:
type: string
description: 장소 id
poiName:
type: string
description: 장소 이름
stat:
description: 통계 데이터
type: array
items:
$ref: '#/components/schemas/VisitorSeg'
statStartDate:
type: string
description: 통계 시작일
statEndDate:
type: string
description: 통계 종료일
required:
- poiId
- poiName
- stat
- statStartDate
- statEndDate
VisitorSeg:
type: object
properties:
gender:
type: string
description: 성별
ageGrp:
type: string
description: 연령대
rate:
type: number
description: 방문자 성별, 연령대가 전체에서 차지하는 비율입니다.
required:
- gender
- ageGrp
- rate
PoiVisitorDistance:
type: object
properties:
poiId:
type: string
description: 장소 id
poiName:
type: string
description: 장소 이름
stat:
description: 통계 데이터
type: object
properties:
visitorDistance:
type: number
description: 유입력
statStartDate:
type: string
description: 통계 시작일
statEndDate:
type: string
description: 통계 종료일
required:
- poiId
- poiName
- stat
- statStartDate
- statEndDate
AreaVisitorCountRawDaily:
type: object
properties:
areaId:
type: string
description: 상권 id
areaName:
type: string
description: 상권 이름
gender:
type: string
description: 성별 (male:남성, female:여성, all:전체)
ageGrp:
type: string
description: 연령대 (0:10대 미만, 10:10대, 20:20대, 30:30대, 40:40대, 50:50대, 60:60대, 70:70대, 80:80대, 90:90대, 100:100대이상, all:전체)
raw:
description: raw 데이터
type: array
items:
$ref: '#/components/schemas/VisitorCountDate'
required:
- areaId
- areaName
- gender
- ageGrp
- raw
parameters:
Gender:
name: gender
in: query
description: 조회 대상 성별
schema:
type: string
default: male
enum:
- male
- female
- all
ContentTypeJson:
name: Content-Type
description: application/json
in: header
required: true
schema:
type: string
default: application/json
EndDate:
name: endDate
in: query
description: 기준 종료 일자(YYYYMMDD)
schema:
type: string
AgeGrp:
name: ageGrp
in: query
description: 조회 대상 연령대
schema:
type: string
default: '30'
enum:
- '0'
- '10'
- '20'
- '30'
- '40'
- '50'
- '60'
- '70'
- '80'
- '90'
- 100_over
- all
Date:
name: date
in: query
description: 기준 일자(YYYYMMDD) 또는 어제(ystday)를 지정, startDate, endDate 입력이 우선합니다.
schema:
type: string
default: ystday
AreaId:
name: areaId
in: path
description: 상권(AREA) ID
schema:
type: string
default: '9195'
required: true
PoiId:
name: poiId
in: path
description: 관심장소(POI) ID
schema:
type: string
default: '10067845'
required: true
AppKey:
name: appKey
in: header
description: <a href="https://openapi.sk.com/mypage/project/" target="_blank">대시보드>앱</a>>앱키(appKey) 탭에서 조회
required: true
schema:
type: string
StartDate:
name: startDate
in: query
description: 기준 시작 일자(YYYYMMDD)
schema:
type: string
Range:
name: range
in: query
description: 기준일로부터 조회되는 날짜 범위
schema:
type: string
default: 30days
enum:
- 0days
- 7days
- 30days
securitySchemes:
sec0:
type: apiKey
in: header
x-default: e8wHh2tya84M88aReEpXCa5XTQf3xgo01aZG39k5
name: appkey
x-readme:
headers: []
explorer-enabled: true
proxy-enabled: true
samples-enabled: true
x-readme-fauxas: true