店舗サイトの構造化データ(LocalBusiness)の書き方|JSON-LD の例・タイプの選び方・検証の仕方
結論: 構造化データは、店名・住所・電話番号・営業時間などを、Google や AI が取り違えずに読める形で書くものです。入れれば順位が上がるものではありませんが、GBP とサイトの情報が同じ店舗のものだと伝える裏付けになります。リンク先ページ(複数店舗なら店舗ページごと)に、ページに見えている内容と同じ情報を JSON-LD で書き、リッチリザルトテストで確かめます。
構造化データで何が変わるか
- Google は、LocalBusiness の構造化データを使って、営業時間や部門などのビジネスの詳細を Google 検索やマップのナレッジパネルに表示することがある、と説明しています
- ただし、構造化データが順位を上げるという Google の説明はありません。海外の専門家への調査でも、構造化データはマップ・通常検索の順位要因としては上位ではありません
- Google は 2026 年 5 月の生成 AI の検索機能向けのガイドで、生成 AI の検索に構造化データは必要なく、特別なマークアップを足す必要もないと明言しています
- 一方で、Google 以外の AI サービスや地図サービスが、ページの情報を読み取るときの手がかりにしている可能性はあります。営業時間や住所を機械が確実に読める形にすることに損はない、という位置付けで考えてください
優先順位としては、リンク先ページとサービスごとのページを整えたあとで十分です。
どのページに、どう入れるか
- 1 店舗: GBP のリンク先ページ(多くはトップページ)に 1 つ
- 複数店舗: 店舗ページごとに、その店舗の情報を 1 つ。トップページには会社(Organization)の情報を
- 形式は JSON-LD:
<script type="application/ld+json">の中に書きます。<head>の中に置くのが一般的ですが、<body>の中でも読まれます - ページに見えている内容と同じにする: 構造化データだけに書いて、ページには載っていない情報(ページにない営業時間、ないクチコミなど)を入れてはいけません
JSON-LD の例(整骨院・二部営業)
平日は午前と午後の二部制、土曜は午前のみ、日曜・祝日休みの整骨院の例です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MedicalBusiness",
"@id": "https://example.com/#shibuya",
"name": "○○整骨院 渋谷店",
"url": "https://example.com/",
"telephone": "+81-3-1234-5678",
"image": [
"https://example.com/images/shibuya-front.jpg",
"https://example.com/images/shibuya-inside.jpg"
],
"address": {
"@type": "PostalAddress",
"postalCode": "150-0031",
"addressRegion": "東京都",
"addressLocality": "渋谷区",
"streetAddress": "桜丘町 1-2 ○○ビル 3 階",
"addressCountry": "JP"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 35.65612,
"longitude": 139.70078
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "10:00",
"closes": "13:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "15:00",
"closes": "20:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "14:00"
}
],
"priceRange": "¥1,500〜¥8,000",
"sameAs": [
"https://www.instagram.com/example_shibuya/"
]
}
</script>
各項目の書き方
| 項目 | 必須か | 書き方 | 日本で気を付けること |
|---|---|---|---|
@type |
必須(タイプの指定) | LocalBusiness か、できるだけ具体的な下位のタイプ(下の表) |
迷ったら LocalBusiness |
name |
必須 | GBP のビジネス名と同じ | 支店名の付け方も GBP とそろえる |
address |
必須 | PostalAddress で分けて書く |
addressRegion に都道府県、addressLocality に市区町村、streetAddress に町名以降とビル名・階 |
postalCode |
推奨 | 「150-0031」 | 半角。〒は付けない |
addressCountry |
推奨 | 「JP」 | 省略すると国の判断を誤ることがある |
telephone |
推奨 | 国番号から「+81-3-1234-5678」 | 先頭の 0 を取る。「03-1234-5678」でも読まれるが、国番号付きが確実 |
url |
推奨 | その店舗のページの URL | 複数店舗なら店舗ページの URL |
geo |
推奨 | 緯度・経度 | Google は小数点以下 5 桁以上を求めている。Googleマップでピンの位置を右クリックすると確かめられる |
openingHoursSpecification |
推奨 | 曜日ごとに開始・終了 | GBP の営業時間と同じに |
priceRange |
推奨 | 価格帯 | 100 文字未満。長いと表示されない |
image |
推奨 | 店舗の写真の URL | 実際の写真を |
menu |
飲食で推奨 | メニューのページの URL | |
servesCuisine |
飲食で推奨 | 料理の種類 | 「ラーメン」「イタリア料理」など |
sameAs |
任意 | SNS など公式のアカウント | 自社が管理しているものだけ |
@id |
任意 | このデータを指す固有の ID | 複数店舗で、店舗を区別するのに便利 |
営業時間の書き方
| 営業の形 | 書き方 |
|---|---|
| 二部営業(昼と夜) | 同じ曜日に OpeningHoursSpecification を 2 つ書く(上の例) |
| 深夜営業(土曜 18 時〜日曜 3 時) | 土曜に "opens": "18:00"、"closes": "03:00" と 1 つで書く。終了が開始より前なら翌日とみなされる |
| 24 時間営業 | "opens": "00:00"、"closes": "23:59" |
| 定休日 | その曜日を書かない。または "opens": "00:00"、"closes": "00:00" で終日休業 |
| 期間限定の営業時間(年末年始・夏季) | validFrom と validThrough で期間を付けた指定を足す |
深夜営業の例(バー、金曜・土曜は翌 3 時まで)です。
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "18:00",
"closes": "01:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday", "Saturday"],
"opens": "18:00",
"closes": "03:00"
}
]
年末年始の休業の例です。
{
"@type": "OpeningHoursSpecification",
"opens": "00:00",
"closes": "00:00",
"validFrom": "2026-12-30",
"validThrough": "2027-01-03"
}
構造化データの営業時間は、GBP の営業時間とそろえます。GBP を変えたのに構造化データが古いまま、というずれが最もよくある間違いです。年末年始などの期間限定の営業時間は、GBP の特別営業時間で設定するのが基本で、構造化データへの反映は余力があれば、で構いません。
業種ごとのタイプの選び方
Google は、できるだけ具体的なタイプを使うよう求めています。schema.org の主なタイプと、合う業種の例です。
| 業種 | タイプ | 備考 |
|---|---|---|
| 飲食店(全般) | Restaurant |
servesCuisine で料理の種類を |
| カフェ | CafeOrCoffeeShop |
|
| 居酒屋・バー | BarOrPub |
|
| パン屋 | Bakery |
|
| 美容院 | HairSalon |
|
| ネイルサロン | NailSalon |
|
| エステ・スパ | DaySpa または BeautySalon |
|
| 歯科 | Dentist |
|
| クリニック・医院 | MedicalClinic または Physician |
診療科は medicalSpecialty で |
| 整骨院・鍼灸院 | MedicalBusiness |
合うものがなければ HealthAndBeautyBusiness も |
| 薬局 | Pharmacy |
|
| 眼鏡店 | Optician |
|
| スポーツジム | ExerciseGym または HealthClub |
|
| 不動産会社 | RealEstateAgent |
|
| 弁護士 | Attorney |
|
| 司法書士・行政書士 | LegalService |
|
| 税理士・会計事務所 | AccountingService |
|
| 自動車整備 | AutoRepair |
|
| 水道・設備工事 | Plumber |
|
| 電気工事 | Electrician |
|
| 塗装・リフォーム | HousePainter / GeneralContractor |
|
| 引っ越し | MovingCompany |
|
| ホテル・旅館 | Hotel / LodgingBusiness |
|
| 保育・託児 | ChildCare |
|
| 学習塾 | LocalBusiness(または EducationalOrganization を併記) |
塾にぴったりの店舗用タイプはない |
| 小売店 | Store の下位タイプ(ClothingStore、Florist、BookStore など) |
|
| 上のどれにも当たらない | LocalBusiness |
古い日本語の解説には、タイプの訳を誤っているものがあります。例えば Optician は美容師ではなく眼鏡店、Podiatric は小児科ではなく足の診療、ExerciseGym は体育館ではなくトレーニングジム、FoodEstablishment は食品製造ではなく飲食店の総称です。タイプは schema.org の英語の説明で確かめてください。
複数店舗の書き方
- 店舗ページごとに、その店舗の LocalBusiness を 1 つ書きます。1 つのページに全店舗の LocalBusiness を並べるのは避けます(どのページがどの店舗か分からなくなります)
@idで店舗を区別し、parentOrganizationで運営会社を指します- トップページには Organization(会社の名前・ロゴ・公式サイト・SNS)を書きます
- 店舗の中の部門(スーパーの中の薬局、ディーラーの整備工場など)で営業時間が違う場合は、
departmentで入れ子にします。Google は、部門の名前を「店名 + 部門名」にするよう求めています
{
"@context": "https://schema.org",
"@type": "HairSalon",
"@id": "https://example.com/shops/kichijoji/#salon",
"name": "○○ 吉祥寺店",
"url": "https://example.com/shops/kichijoji/",
"telephone": "+81-422-12-3456",
"address": {
"@type": "PostalAddress",
"postalCode": "180-0004",
"addressRegion": "東京都",
"addressLocality": "武蔵野市",
"streetAddress": "吉祥寺本町 1-2-3 2 階",
"addressCountry": "JP"
},
"parentOrganization": {
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "株式会社○○"
}
}
LocalBase では、店舗情報から構造化データを生成でき、営業時間などを変えたときも GBP の情報とずれにくくなります。店舗数が多いと、手作業で全店舗の構造化データを直し続けるのは現実的ではないので、元データから自動で作る仕組みを検討してください。
自社サイトのクチコミの星は出ない
Google は、レビューされる側の事業者が自分でクチコミを管理している場合、LocalBusiness や Organization の構造化データを使ったページには星(レビューのリッチリザルト)を表示しないと定めています。自社サイトに構造化データを直接置く場合も、Google のクチコミを埋め込むウィジェットを使う場合も同じです。
- × 自社サイトに
aggregateRating(★4.8、120 件)を書いて、検索結果に星を出そうとする - × Google マップのクチコミをコピーして、
reviewとしてマークアップする - ○ お客様の声は、本文で紹介する(構造化データにはしない)
Google は review と aggregateRating を、ほかの店舗のクチコミを集めているサイト向けの推奨項目としています。さらに 2026 年 7 月には、レビューの構造化データについて、偽のクチコミや、謝礼と引き換えであることを明かさないクチコミに関するガイドラインを追加しました。クチコミの扱いは、クチコミでやってはいけないことも参照してください。
検証の仕方
- リッチリザルトテスト(Google): コードを貼るか、公開したページの URL を入れて確かめます。エラー(赤)は直し、警告(黄)は推奨項目が足りないという意味なので、書ける範囲で足します
- Schema Markup Validator(schema.org): Google が対応していない項目も含めて、書き方が schema.org の決まりに合っているかを確かめます
- Search Console の URL 検査: 公開後、Google が読み込んだページに構造化データが含まれているかを確かめます。JavaScript で後から入れる作りでは、読み込まれていないことがあります
- ページの表示と見比べる: 営業時間・電話番号・住所が、ページの表示と GBP と同じかを目で確かめます。テストは書式の誤りしか見つけてくれません
よくある間違い
| 間違い | どうなるか | 直し方 |
|---|---|---|
| 営業時間が GBP・ページの表示と違う | 情報の食い違い | 営業時間を変えたら、構造化データも同時に直す |
| テーマとプラグインの両方が LocalBusiness を出力していて、内容が違う | どちらが正しいか分からない | ページのソースで ld+json を検索し、1 つにまとめる |
| ひな形の値(「サンプル店」「000-0000」)が残っている | 誤った情報が読まれる | 公開前にすべての値を確かめる |
| 全店舗の LocalBusiness をトップページに並べた | どのページがどの店舗か分からない | 店舗ページごとに分ける |
Organization だけで、店舗の情報がない |
店舗の住所・営業時間が伝わらない | 店舗には LocalBusiness(またはその下位タイプ) |
aggregateRating で自社の星を書いた |
星は出ない。内容によってはガイドライン違反 | 削除する |
| ページにない情報を構造化データにだけ書いた | ガイドライン違反のおそれ | ページに表示する |
| 郵便番号や電話番号を全角で書いた | 正しく読まれないことがある | 半角で書く |
| 緯度・経度の桁が少ない(35.65, 139.70) | 位置がずれる | 小数点以下 5 桁以上 |
sameAs に他人や無関係のページを入れた |
別の事業者と結び付けられる | 自社が管理している公式アカウントだけ |
作成サービス・WordPress での入れ方
- WordPress: SEO のプラグインの多くは、店舗情報の構造化データを出力する機能を持っています。テーマも出力していることがあるので、二重にならないよう確かめます
- 作成サービス(Wix など): ページごとにコードを追加できる設定や、構造化データを入れる欄があるサービスがあります。ないサービスでは、HTML を埋め込める部品に JSON-LD を入れる方法もありますが、Google に読まれているかを URL 検査で必ず確かめます
- 制作会社に頼むとき: どのページに、どのタイプで、どの項目を入れたか、営業時間を変えるときに誰が直すかを決めておきます
チェック項目
- リンク先ページ(複数店舗なら店舗ページごと)に、LocalBusiness の構造化データがある
- タイプが、業種に合う具体的なものになっている
-
name・address・telephoneが GBP とページの表示と同じ - 営業時間が GBP と同じ(二部営業・深夜営業も正しく書けている)
- 郵便番号・電話番号が半角、
addressCountryが JP - 自社の星(
aggregateRating)を書いていない - 構造化データが二重に出力されていない
- リッチリザルトテストでエラーがない
- 営業時間を変えるとき、誰が構造化データを直すか決まっている
よくある質問
Q. 構造化データを入れると、マップの順位は上がりますか? 上がるという Google の説明や、はっきりした検証はありません。GBP とサイトの情報を結び付ける裏付けの一つと考え、優先順位はリンク先ページとサービスページの後にしてください。
Q. AI 検索のために構造化データを入れたほうがいいですか? Google は、生成 AI の検索に構造化データは必要ないとしています。Google 以外の AI サービスがどう使っているかは公表されていません。入れて損はありませんが、AI 対策として最も大事なのは、ページに事実を文字で書くことです。
Q. FAQ の構造化データは入れるべきですか? Google は 2026 年 5 月に FAQ のリッチリザルトの表示を終了しました。入っているものを外す必要はありませんが、検索結果の表示のために新しく入れる意味はありません。
出典
- ローカル ビジネス(LocalBusiness)の構造化データ(Google 検索セントラル)
- レビュー スニペット(Review、AggregateRating)の構造化データ(Google 検索セントラル)
- 生成 AI の検索機能向けの最適化ガイド(Google 検索セントラル、2026 年 5 月)
- Google 検索のドキュメントの更新履歴(Google 検索セントラル。2026 年 5 月の FAQ リッチリザルトの終了、2026 年 7 月のレビューのガイドラインの追加)
- リッチリザルト テスト(Google)
- Schema Markup Validator(schema.org)
- LocalBusiness(schema.org。下位タイプの一覧)
- Local Search Ranking Factors(Whitespark、2026 年版)
LocalBase なら、複数店舗の Googleビジネスプロフィールの更新・投稿・クチコミ返信をまとめて行えます。新規無料登録から15日間、有料プランの全機能をお試し頂けます。
無料登録して今すぐ利用開始