에어비엔비 지도 검색 분석 🔍

dyeon-dev·2025년 10월 29일

에어비엔비 지도 검색 분석

에어비엔비에서 아무런 검색값 없이 검색하게 되면 내 근처의 숙소 리스트를 보여줍니다.
그런데 저는 로그인을 하지 않았고, 위치 허용 여부를 선택한 적 없습니다.
그런데 어떻게 내 근처의 숙소 리스트를 보여줄까요?

에어비엔비의 경우 URL 파라미터의 값으로 상태관리를 주로 하는 것 같아보였습니다. 그래서 URL을 분석해보았습니다.
Airbnb는 검색 조건을 모두 GET Query로 노출시키는 방식이며,
날짜/인원 선택에 따라 "검색 모드, 좌표, 달력 사용 여부, 장기 숙박 옵션, 필터 UI 상태" 같은 메타 정보까지 URL에 포함됩니다.

아무것도 선택 없이 검색한 경우

https://www.airbnb.co.kr/s/homes?
refinement_paths[]= /homes
&location_search=NEARBY
&source=structured_search_input_header
&search_type=unknown
  • 다른 건 거두절미 하고, location_search=NEARBY 라고 보입니다.
  • 현재 사용자의 위치 기반으로 근처 지역 숙소 검색한다는 뜻이겠죠.
  • 즉, 위치·날짜·인원 미선택 → 기본적으로 내 주변 기반 탐색

날짜, 인원을 선택하고 검색할 경우 URL

https://www.airbnb.co.kr/s/homes?
refinement_paths[]= /homes
&location_search=NEARBY
&source=structured_search_input_header
&search_type=unknown
&flexible_trip_lengths[]=one_week
&center_lat=37.45
&center_lng=126.73
&monthly_start_date=2025-11-01
&monthly_length=3
&monthly_end_date=2026-02-01
&search_mode=regular_search
&price_filter_input_type=2
&channel=EXPLORE
&date_picker_type=calendar
&checkin=2025-11-01
&checkout=2025-11-04
&adults=2
&drawer_open=true
  • center_lat, center_lng 값과 location_search=NEARBY 값이 보입니다.
  • location_search=NEARBY: 위치 검색 옵션이 “내 주변” 모드라는 의미
  • center_lat , center_lng: 실제 계산된 지도 중심 좌표

지도 이동 기반으로 검색할 경우 URL

https://www.airbnb.co.kr/s/homes?
refinement_paths[]= /homes
&location_search=NEARBY
&source=structured_search_input_header
&search_type=user_map_move
&flexible_trip_lengths[]=one_week
&monthly_start_date=2025-11-01
&monthly_length=3
&monthly_end_date=2026-02-01
&search_mode=regular_search
&price_filter_input_type=2
&channel=EXPLORE
&date_picker_type=calendar
&checkin=2025-11-01
&checkout=2025-11-04
&adults=2
&price_filter_num_nights=3
&ne_lat=37.61692080810032
&ne_lng=126.80809670588201
&sw_lat=37.255288467379465
&sw_lng=126.60219879834523
&zoom=10.876819265101252
&zoom_level=10.876819265101252
&search_by_map=true
  • search_type이 unknown에서 user_map_move(지도 이동 기반 검색)으로 바뀌었습니다.
  • 이 경우 지도 화면에 보이는 영역(뷰포트)을 기준으로 사용자가 지도를 움직이면 화면에 보이는 영역만 숙소를 다시 검색합니다.
  • ne_lat, ne_lng, sw_lat, sw_lng 4개의 좌표도 추가되었습니다. 이건 현재 화면에 보이는 사각형 영역(Bounding Box)를 의미합니다.
    - 지도 화면에서 위쪽 오른쪽 끝의 좌표(ne)
    - 지도 화면에서 아래쪽 왼쪽 끝의 좌표(sw)
  • zoom / zoom_level: 지도 확대 수준 (클수록 좁은 범위)
  • 즉, 지도 이동 시 화면 좌표 계산 → bounding box 생성 → 해당 범위 내 숙소만 다시 fetch 과정을 반복합니다.

URL에서 확인했다시피, 저는 위치 정보를 허용한적이 없는데 지도 중심 좌표가 들어간 것을 확인하였습니다. 그리고 상황별로 위치 좌표를 사용하는 의미와 방식이 다릅니다.
정리해보자면,

검색바 기반 검색의 경우 (검색어가 없을 때)

  • 위치 기반으로 근처 지역 숙소 검색

검색바 기반 검색의 경우 (검색어가 있을 때)

  • 중심 좌표(center_lat, center_lng) + 반경(radius) 방식

지도 기반 검색의 경우

  • 지도의 실제 화면 영역(bounding box)로 판단
  • 화면이 가로/세로 비율을 가지므로 중심점 + 거리만으로는 표현 불가

왜 위치 허용을 하지 않았는데도 center_lat / center_lng가 보일까?

Airbnb에서 위치 권한을 허용하지 않았는데도 center_lat / center_lng같은 좌표들이 나타나는 이유는 실제로 내부에서 IP 기반 GeoIP 위치 값을 받아오기 때문입니다.
즉, geolocation API가 아니어도 Airbnb는 사용자의 대략적인 지역 좌표를 추정할 수 있습니다.

1) Airbnb는 먼저 navigator.geolocation을 시도하지 않는다.

  • Airbnb는 브라우저 권한 요청을 사용자에게 먼저 띄우지 않습니다.
  • 대부분의 사용자에게 "위치 권한 허용" 팝업이 뜬 적이 없을 것이다.
  • Airbnb는 geolocation API 없이도 사용자의 위치를 알고 싶어하기 때문에 서버에서 IP 기반으로 대략적인 위·경도를 계산해서 URL에 넣습니다.

2) IP 기반 GeoIP 정보는 위도/경도를 제공한다.

  • GeoIP DB는 단순히 “대한민국/서울” 수준이 아니라, 대략적인 위도(latitude)·경도(longitude)까지 제공합니다.
  • 예) IP → 서울시 관악구 주변 → lat=37.47, lng=126.95 같은 값 반환
  • 그래서 위치 권한을 전혀 허용하지 않아도 center_lat, center_lng, 지도 중앙 좌표, 주변 숙소 선택 같은 것들이자동으로 가능합니다.

3) 검색 조건이 두 단계로 동작한다.

  • location_search=NEARBY 위치 검색 옵션으로 “내 주변” 검색 모드로 동작하고,
  • center_lat & center_lng 등의 실제 계산된 지도 중심 좌표를 통해 검색합니다.

이렇듯, geolocation을 허용하는 팝업이 뜨지 않고 Airbnb는 사용자 경험을 위해 좌표가 가능한 한 항상 존재하도록 설계했습니다.

0개의 댓글