店舗紹介サイトや会社紹介ページでは、Googleの口コミ評価を表示したいケースがあります。
例えば以下のような情報です。
・Googleの口コミ評価(★4.3 など)
・レビュー件数
・Googleマップへのリンク
これらの情報は、Googleが提供している「Google Places API」を利用することで取得できます。
この記事では、LaravelでGoogle Places APIを使用して、Google口コミの評価値を取得し、データベースに保存してWebサイトに表示する方法を解説します。
また実装する中で重要だと感じた、以下のポイントについても紹介します。
・Google Places APIの基本的な仕組み
・LaravelでAPIを呼び出す方法
・.envにAPIキーを安全に保存する方法
・API料金を無駄に発生させない設計
・1日1回のバッチ処理で口コミを更新する方法
LaravelでGoogle口コミを表示したい方の参考になれば幸いです。
Google口コミはAPIで取得できる
Googleの口コミ情報はGoogle Places APIを使用することで取得できます。
取得できる主な情報
- 店舗名
- 住所
- 電話番号
- 営業時間
- 口コミ評価
- レビュー数
今回の記事では口コミ評価(rating)を取得します。

Google CloudでAPIキーを取得する
以下の流れでAPIキーを取得します。
- Google Cloudでプロジェクト作成
- Places APIを有効化
- APIキーを発行
.envにAPIキーを設定
APIキーはGitにコミットしないように.envで管理します。
.envの記述
GOOGLE_MAPS_API_KEY=xxxxxxxxxxxxxxxx「xxxxxxxxxxxxxxxx」の部分にAPIキーを記載します。

config/services.phpに設定を追加
config/services.phpの記述
'google' => [
'maps_api_key' => env('GOOGLE_MAPS_API_KEY'),
],Laravelではこのようにservices.phpを経由してAPIキーを取得するのが一般的です。
Google口コミを取得するサービスクラスを作成
API処理はサービスクラスにまとめます。
app/Services/GoogleReviewService.php
namespace App\Services;
use Illuminate\Support\Facades\Http;
class GoogleReviewService
{
public function fetchRating($placeId)
{
$response = Http::get(
'https://maps.googleapis.com/maps/api/place/details/json',
[
'place_id' => $placeId,
'fields' => 'rating',
'key' => config('services.google.maps_api_key'),
]
);
$data = $response->json();
return [
'rating' => $data['result']['rating'] ?? null
];
}
}店舗登録時に口コミ評価を取得する
今回は店舗登録時にGoogle口コミ評価を取得する設計にします。
Store.phpprotected static function booted()
{
static::saved(function ($store) {
if (!empty($store->place_id)) {
$service = new GoogleReviewService();
$reviewData = $service->fetchRating($store->place_id);
if ($reviewData) {
$store->google_review = $reviewData['rating'];
$store->saveQuietly();
}
}
});
}ポイント
- saveQuietly() を使用
- イベントループを防ぐ
カラムを追加する方法については以下の記事でご紹介しています。

Webサイトに口コミ評価を表示する
DBに保存した値を表示します。
bladeの記述
{{ $store->google_review }} // 4.3$store->google_reviewで口コミ評価が取得できるので、CSSで自由にカスタマイズすることも可能です。
Google APIの料金
Google Places APIは従量課金制です。
例
Place Details API
$17 / 1000リクエストただし、Google Cloudには
$200 / 月
無料クレジットがあります。
そのため通常のサイトであれば無料枠内で収まるケースが多いです。
API料金を無駄に発生させない設計
よくある失敗として
ページ表示ごとにAPIを呼び出すという実装があります。
例
1日1000PV
↓
API1000回
↓
課金今回の記事では
登録時のみAPIを実行という設計にしています。
店舗登録
↓
API1回
↓
DB保存この方法によりAPI使用回数を大幅に削減できます。
口コミ評価を1日1回更新するバッチ処理
Google口コミは時間が経つと変化するため、
1日1回更新するバッチ処理を用意します。
Laravelではスケジュール機能を使用できます。
Artisanコマンド作成
php artisan make:command UpdateGoogleReviewsapp/Console/Commands/UpdateGoogleReviews.phppublic function handle()
{
$stores = Store::whereNotNull('place_id')->get(); $service = new GoogleReviewService(); foreach ($stores as $store) { $reviewData = $service->fetchRating($store->place_id); if ($reviewData) {
$store->google_review = $reviewData['rating'];
$store->saveQuietly();
} } return 0;
}Kernel.php にスケジュールを設定
app/Console/Kernel.phpprotected function schedule(Schedule $schedule)
{
$schedule->command('reviews:update')->daily();
}これにより
1日1回
↓
口コミ更新されます。
まとめ
この記事では、LaravelでGoogle口コミを取得してサイトに表示する方法を紹介しました。
ポイント
- Google口コミはPlaces APIで取得できる
- APIキーは .envで管理
- API処理はサービスクラスに分離
- APIは登録時に実行すると効率的
- 口コミ更新は1日1回のバッチ処理で対応
Google口コミを表示すると、サイトの信頼性やクリック率が向上するケースも多いので、店舗サイトなどでは非常に有効な機能です。
LaravelでGoogle口コミを表示したい方は、ぜひ参考にしてみてください。
