Google Shopping MCP server

Registry name: io.github.johnisanerd/google-shopping. Maintained by AlphaOSINT (Apify developer johnvc, GitHub johnisanerd).

What it does

Search products and get listings with price, seller, rating, delivery information and discount tags, with filters for location, price range, sort order, free shipping and sale items.

Cross-retailer product prices for a query rather than a single store’s catalog. Use it for price comparison, deal finding and competitor price monitoring.

This server is not self-hosted. It runs on Apify’s hosted MCP endpoint (mcp.apify.com), which starts the Apify Actor johnvc/google-shopping-api-google-shopping-products-prices-deals for each tool call. You need an Apify account, and every call is billed to that account at the Actor’s prices below. Apify’s own pricing and terms apply to the account.

Charge Price (USD) What it covers
Setup $0.02 One-time setup fee per Actor run. Covers initialization and API provisioning costs.
Page Processed $0.02 Fee per page of shopping results processed. Each page returns approximately 40 product listings.

Prices shown are Apify’s free-plan rates; paid Apify plans get lower per-event prices. Apify also bills a token amount per run start and per stored row ($0.00001, $0.00001). Prices change from time to time; the Actor’s page on Apify shows the current ones.

Data source and terms

Google Shopping public search results, collected by scraping. The server returns the data as published at the time of the call. You are responsible for using it in line with the source’s terms and the laws that apply to you. AlphaOSINT is not affiliated with the source.

Endpoint

Setup

Claude Code

claude mcp add --transport http google-shopping "https://mcp.apify.com/?tools=johnvc/google-shopping-api-google-shopping-products-prices-deals"

VS Code (.vscode/mcp.json)

{
  "servers": {
    "google-shopping": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=johnvc/google-shopping-api-google-shopping-products-prices-deals"
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "google-shopping": {
      "url": "https://mcp.apify.com/?tools=johnvc/google-shopping-api-google-shopping-products-prices-deals"
    }
  }
}

Claude Desktop (Settings → Connectors → Add custom connector, paste the URL). Older versions without remote connectors can bridge through mcp-remote in claude_desktop_config.json:

{
  "mcpServers": {
    "google-shopping": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.apify.com/?tools=johnvc/google-shopping-api-google-shopping-products-prices-deals"
      ]
    }
  }
}

Each client opens an Apify sign-in (OAuth) on first use. To use a token instead, send Authorization: Bearer <APIFY_TOKEN> as a header; create one under Apify Console → Settings → API & Integrations.

Tools

Tool What it does
johnvc--google-shopping-api-google-shopping-products-prices-deals Runs the Actor with the parameters below and returns the result rows.
get-actor-run Status of a run started by the tool, for long runs.
get-dataset-items Pages through a run’s full output by datasetId when it is larger than the inline result.
get-key-value-store-record Reads a record a run stored, such as a run report.
abort-actor-run Stops a run.

Apify’s endpoint adds the four helper tools automatically whenever an Actor tool is loaded.

Parameters of johnvc--google-shopping-api-google-shopping-products-prices-deals

Parameter Type Required Default Description
q string yes "wireless headphones" The product or keyword to search for on Google Shopping. Example: ‘wireless headphones’, ‘iPhone 15 case’.
location string     Geographic location to localize the search results. Example: ‘Austin, Texas, United States’, ‘London, England, United Kingdom’.
gl string     Two-letter country code for Google to use. Examples: ‘us’, ‘uk’, ‘de’, ‘fr’, ‘ca’, ‘au’.
hl string     Two-letter language code for results. Examples: ‘en’, ‘es’, ‘de’, ‘fr’, ‘ja’.
google_domain string     Google domain to use for the search. Defaults to ‘google.com’. Examples: ‘google.co.uk’, ‘google.de’, ‘google.fr’.
device string: desktop, tablet, mobile   "desktop" Device type to simulate. Different devices may return slightly different results and prices.
min_price number     Filter results to only show products above this price (in the local currency).
max_price number     Filter results to only show products below this price (in the local currency).
sort_by integer     Sort results by price. 1 = price low to high, 2 = price high to low. Leave blank for default relevance sorting.
free_shipping boolean   false When enabled, only return products that offer free shipping.
on_sale boolean   false When enabled, only return products that are currently on sale or have a discount.
max_pages integer   1 Maximum number of result pages to fetch. Each page contains approximately 40 products. Set to 0 for no limit (fetches all available pages). Default is 1.
output_file string     Optional filename for saving results as a JSON file locally. If not provided, a timestamped filename is generated automatically.

Example arguments:

{
  "helloWorld": 123
}

Output

The tool returns JSON rows with these fields.

Field Type Description
search_parameters object The input parameters used for this search, echoed back in each result page for traceability.
search_metadata object Aggregate statistics about the search run: total results, pages processed, and pagination status.
search_timestamp string ISO 8601 timestamp of when this search page was executed.
page_number integer 1-indexed page number this dataset item represents. Each page of results is pushed as a separate item.
shopping_results array Array of product listings returned on this page. Each item includes title, price, source, rating, reviews, delivery, and more.
filters array Filter options available for narrowing results. Only present on the first page of results.
error boolean True when this dataset item represents an error record rather than search results.
error_message string Human-readable description of the error that occurred, if error is true.
error_type string Machine-readable error category (e.g., ‘InsufficientFunds’, ‘ValidationError’, ‘APIError’).
timestamp string ISO 8601 timestamp of when the error occurred. Only present on error records.