Storebot-Google is Google's specialized crawler for product and store-related content. It indexes product listings, prices, availability, and other e-commerce data to power Google Shopping and product search results. The bot operates similarly to Googlebot but focuses specifically on structured product data, merchant feeds, and shopping-related content. It respects robots.txt directives and follows Google's standard crawling practices.
User Agent String
Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012; Storebot-Google/1.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36
How to Control Storebot-Google
Block Completely
To prevent Storebot-Google from accessing your entire website, add this to your robots.txt file:
Multiple ways to detect Storebot-Google in your application:
Basic Pattern
/Storebot\-Google/i
Strict Pattern
/^Mozilla/5\.0 \(Linux; Android 8\.0; Pixel 2 Build/OPD3\.170816\.012; Storebot\-Google/1\.0\) AppleWebKit/537\.36 \(KHTML, like Gecko\) Chrome/81\.0\.4044\.138 Mobile Safari/537\.36$/
Flexible Pattern
/Storebot\-Google[\s\/]?[\d\.]*?/i
Vendor Match
/.*Google.*Storebot\-Google/i
Implementation Examples
// PHP Detection for Storebot-Google
function detect_storebot_google() {
$user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
$pattern = '/Storebot\\-Google/i';
if (preg_match($pattern, $user_agent)) {
// Log the detection
error_log('Storebot-Google detected from IP: ' . $_SERVER['REMOTE_ADDR']);
// Set cache headers
header('Cache-Control: public, max-age=3600');
header('X-Robots-Tag: noarchive');
// Optional: Serve cached version
if (file_exists('cache/' . md5($_SERVER['REQUEST_URI']) . '.html')) {
readfile('cache/' . md5($_SERVER['REQUEST_URI']) . '.html');
exit;
}
return true;
}
return false;
}
# Python/Flask Detection for Storebot-Google
import re
from flask import request, make_responsedef detect_storebot_google():
user_agent = request.headers.get('User-Agent', '')
pattern = r'Storebot-Google'
if re.search(pattern, user_agent, re.IGNORECASE):
# Create response with caching
response = make_response()
response.headers['Cache-Control'] = 'public, max-age=3600'
response.headers['X-Robots-Tag'] = 'noarchive'
return True
return False# Django Middleware
class StorebotGoogleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if self.detect_bot(request):
# Handle bot traffic
pass
return self.get_response(request)
// JavaScript/Node.js Detection for Storebot-Google
const express = require('express');
const app = express();// Middleware to detect Storebot-Google
function detectStorebotGoogle(req, res, next) {
const userAgent = req.headers['user-agent'] || '';
const pattern = /Storebot-Google/i;
if (pattern.test(userAgent)) {
// Log bot detection
console.log('Storebot-Google detected from IP:', req.ip);
// Set cache headers
res.set({
'Cache-Control': 'public, max-age=3600',
'X-Robots-Tag': 'noarchive'
});
// Mark request as bot
req.isBot = true;
req.botName = 'Storebot-Google';
}
next();
}app.use(detectStorebotGoogle);
# Apache .htaccess rules for Storebot-Google# Block completely
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Storebot\-Google [NC]
RewriteRule .* - [F,L]# Or redirect to a static version
RewriteCond %{HTTP_USER_AGENT} Storebot\-Google [NC]
RewriteCond %{REQUEST_URI} !^/static/
RewriteRule ^(.*)$ /static/$1 [L]# Or set environment variable for PHP
SetEnvIfNoCase User-Agent "Storebot\-Google" is_bot=1# Add cache headers for this bot
<If "%{HTTP_USER_AGENT} =~ /Storebot\-Google/i">
Header set Cache-Control "public, max-age=3600"
Header set X-Robots-Tag "noarchive"
</If>
# Nginx configuration for Storebot-Google# Map user agent to variable
map $http_user_agent $is_storebot_google {
default 0;
~*Storebot\-Google 1;
}server {
# Block the bot completely
if ($is_storebot_google) {
return 403;
}
# Or serve cached content
location / {
if ($is_storebot_google) {
root /var/www/cached;
try_files $uri $uri.html $uri/index.html @backend;
}
try_files $uri @backend;
}
# Add headers for bot requests
location @backend {
if ($is_storebot_google) {
add_header Cache-Control "public, max-age=3600";
add_header X-Robots-Tag "noarchive";
}
proxy_pass http://backend;
}
}
Should You Block This Bot?
Recommendations based on your website type:
Site Type
Recommendation
Reasoning
E-commerce
Allow
Essential for product visibility in search results
Blog/News
Allow
Increases content reach and discoverability
SaaS Application
Block
No benefit for application interfaces; preserve resources
Documentation
Allow
Improves documentation discoverability for developers
Corporate Site
Allow
Allow for public pages, block sensitive areas like intranets