가게 정보를 구조화된 데이터로 적는 법(구글·네이버)
요점
- 구글은 지역 업체의 구조화된 데이터에서 이름(name)과 주소(address)를 필수로, 좌표·전화·영업시간·가격대·메뉴 주소·음식 종류 등을 권장으로 정했다. 형식은 제이슨엘디(JSON-LD)를 권한다.
- 네이버의 식당(Restaurant) 마크업은 이름(name)과 영업시간(openingHours)이 필수다. 네이버는 설명 글 대신 숫자 위주로 간결하게 적으라고 안내한다.
- 구글 기준으로 하루 종일 쉬는 날은 opens와 closes를 둘 다 00:00으로, 24시간 영업은 00:00과 23:59로 적는다. 계절 영업은 validFrom과 validThrough로 기간을 적는다.
- 표기한 내용은 화면에도 보여야 한다. 화면에 없는 가격이나 받은 적 없는 별점을 적으면 구글 정책 위반이다.
- 구글은 2026년 5월 안내서에서 구조화된 데이터가 생성형 AI 검색에 꼭 필요하지는 않다고 적었다. 검색 결과 표시와 가게 정보 오해를 줄이는 데 쓴다.
구조화된 데이터란
구조화된 데이터는 페이지의 정보가 무엇인지 기계에게 따로 알려 주는 표기다. 「12,000」이라는 글자가 가격인지 전화번호의 일부인지 사람은 앞뒤를 보고 알지만, 기계에게는 표시가 있어야 확실하다. 구글, 마이크로소프트, 야후, 얀덱스가 함께 만든 공동 어휘 스키마오알지(schema.org)에는 식당을 위한 종류(Restaurant)가 따로 있고, 그 아래에 음식 종류, 예약 가능 여부, 메뉴 주소, 영업시간, 가격대 같은 칸이 정의돼 있다.
적는 형식은 제이슨엘디, 마이크로데이터, 알디에프에이 셋이다. 구글은 제이슨엘디를 권한다. 제이슨엘디는 화면의 글자와 따로 페이지 안의 별도 칸에 가게 정보를 한 묶음으로 적는 방식이라, 디자인을 바꿔도 묶음은 그대로 남고, 영업시간이 바뀌면 그 줄만 고친다.
구글이 공개한 사례로 일본의 라쿠텐 레시피가 있다. 월 이용자 1,500만 명 규모인 이 서비스가 레시피용 구조화된 데이터를 적용한 뒤 검색 유입이 2.7배, 평균 체류 시간이 1.5배가 됐다. 2010년대 후반의 기록이고, 구글은 표기를 했다고 검색 결과에 특별한 모양을 반드시 보여 주지는 않는다고 적었다.
구글과 네이버가 요구하는 항목
| 칸 | 구글 | 네이버 | 적는 법 |
|---|---|---|---|
| name 상호 | 필수 | 필수 | 간판의 상호 그대로 |
| address 주소 | 필수 | 식당 표에 없음 | 도로명주소를 칸별로 |
| openingHoursSpecification 영업시간 | 권장 | 식당 표에 없음 | 요일별 여는 시각·닫는 시각 |
| openingHours 영업시간(글자형) | 문서에 없음 | 필수 | 예: Tu-Su 11:00-21:00 |
| telephone 전화 | 권장 | 선택 | 구글은 국가 번호와 지역 번호를 넣으라고 한다. 예: +82-2-000-0000 |
| geo 좌표 | 권장 | 식당 표에 없음 | 위도·경도 모두 소수점 아래 다섯째 자리 이상 |
| url 홈페이지 | 권장 | 선택 | 네이버는 절대 경로로 적으라고 한다 |
| menu 메뉴 페이지 주소 | 권장 | 식당 표에 없음 | 메뉴 페이지의 전체 주소 |
| servesCuisine 음식 | 권장 | 선택 | 구글은 「메뉴 유형」, 네이버는 메뉴를 하나씩 따로 적으라고 한다 |
| priceRange 가격대 | 권장 | 선택 | 구글은 100자 미만. 네이버는 통화를 함께 적으라고 한다 |
| image 대표 사진 | 일반 권장 목록에 없음 | 선택 | 사진 주소 |
| description 설명 | 문서에 없음 | 선택 | 네이버는 너무 길지 않게 내용 중심으로 쓰라고 한다 |
구글 문서의 권장 항목에는 평점(aggregateRating)과 리뷰(review)도 있지만, 구글은 이 둘을 다른 업체의 리뷰를 모아 싣는 사이트에 권한다. 가게가 자기 홈페이지에 자기 별점을 적는 칸이 아니다.
구글 문서에 없는 정보는 스키마오알지의 음식점(FoodEstablishment) 칸에서 찾는다. 예약 가능 여부(acceptsReservations), 최대 수용 인원(maximumAttendeeCapacity), 임시 휴무 같은 특별 영업시간(specialOpeningHoursSpecification), 편의시설(amenityFeature)이 있다. 구글은 자기 문서에 없는 칸을 검색 결과 표시에 쓴다고 약속하지 않았다.
냉면집 예시
아래는 가상의 냉면집 「○○면옥」의 예시다. 구글과 네이버 두 곳의 요구를 함께 채웠다. 모든 값은 예시이므로 자기 가게의 기준표 값으로 바꾼다. 기준표는 가게 정보를 한 가지로 맞추는 법에서 만든다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "○○면옥",
"address": {
"@type": "PostalAddress",
"streetAddress": "○○로 00, 2층",
"addressLocality": "중구",
"addressRegion": "서울특별시",
"postalCode": "00000",
"addressCountry": "KR"
},
"geo": { "@type": "GeoCoordinates", "latitude": 37.56600, "longitude": 126.99100 },
"telephone": "+82-2-000-0000",
"url": "https://example.com/",
"menu": "https://example.com/menu/",
"servesCuisine": ["평양냉면", "비빔냉면"],
"priceRange": "12,000원~18,000원",
"openingHours": ["Tu-Su 11:00-15:00", "Tu-Su 16:30-21:00"],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
"opens": "11:00",
"closes": "15:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
"opens": "16:30",
"closes": "21:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Monday",
"opens": "00:00",
"closes": "00:00"
}
],
"acceptsReservations": true
}
</script>
이 묶음은 첫 화면이나 오시는 길 페이지의 <head> 안에 넣는다. 지점이 여럿이면 지점마다 페이지를 두고 묶음도 하나씩 따로 둔다.
영업시간 적는 규칙
구글 문서가 안내한 표기는 이렇다.
- 쉬는 시간이 있는 날: 같은 요일을 두 묶음으로 나눠 적는다. 위 예시는 화요일부터 일요일까지 11:00~15:00과 16:30~21:00 두 묶음이다.
- 하루 종일 쉬는 날: opens와 closes를 둘 다
00:00으로 적는다. 위 예시의 월요일이 이 경우다. - 24시간 영업: opens를
00:00, closes를23:59로 적는다. - 자정을 넘기는 영업: 저녁 6시에 열어 새벽 3시에 닫으면 opens
18:00, closes03:00으로 적는다. - 계절 영업과 연휴: validFrom(시작일)과 validThrough(종료일)를 함께 넣는다. 여름 석 달만 여는 가게라면 두 칸에 6월 1일과 8월 31일을 적는다.
{
"@type": "OpeningHoursSpecification",
"opens": "00:00",
"closes": "00:00",
"validFrom": "2026-12-31",
"validThrough": "2027-01-02"
}
위 묶음은 12월 31일부터 1월 2일까지 쉰다는 표기다.
화면과 표기가 같아야 한다
구글은 구조화된 데이터로 표기한 내용이 페이지에도 실제로 보여야 한다고 정해 두었다. 화면에는 없는 가격을 표기에만 넣거나 받은 적 없는 별점을 적으면 정책 위반이고, 구글은 그 사이트의 표기를 무시하거나 직접 조치를 할 수 있다.
홈페이지를 개편하면서 화면의 영업시간만 바꾸고 묶음은 그대로 두면 이 규칙에 걸린다. 영업시간이나 가격을 고칠 때마다 화면과 묶음을 같은 날 함께 고친다.
검사하기
- 구글 리치 결과 테스트에 페이지 주소를 넣거나 코드를 붙여 넣는다.
- 문법 오류가 있으면 묶음 전체가 인식되지 않는다. 쉼표나 따옴표 하나가 빠져도 그렇다.
- 필수 속성이 빠지면 오류, 권장 속성이 빠지면 경고가 뜬다. 오류가 있으면 구글이 별점이나 영업시간 같은 특별한 표시(리치 결과)에 그 표기를 쓰지 못한다.
- 스키마오알지의 검사기는 구글 문서에 없는 칸까지 문법을 확인해 준다.
검사를 통과해도 검색 결과에 특별한 모양으로 표시된다는 보장은 없다. 구글과 네이버 모두 표기를 참고할 뿐 노출을 보장하지 않는다고 적었다.
생성형 AI 검색과의 관계
구글은 2026년 5월 생성형 AI 안내서에서 구조화된 데이터가 AI 개요나 AI 모드에 꼭 필요하지는 않다고 적었다. 같은 안내서는 검색 전반과 리치 결과를 위해서는 구조화된 데이터를 계속 쓰라고 권한다. 가게 홈페이지에는 기계가 가게 이름과 주소와 영업시간을 다른 가게와 헷갈리지 않게 하려고 구조화된 데이터를 넣는다.