{
  "title": "Google Shopping Price Comparison & Deal Finder",
  "description": "Search Google Shopping, look up products by ID, or browse deals and categories. Returns real product IDs, viewer URLs, seller offers with shipping and totals, price ranges and 12-month price history where Google exposes it.",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "mode": {
      "title": "Mode",
      "type": "string",
      "description": "What to collect: keyword search, product lookup by ID/viewer URL, deals, or a department category.",
      "editor": "select",
      "default": "search",
      "prefill": "search",
      "enum": [
        "search",
        "product",
        "deals",
        "category"
      ],
      "enumTitles": [
        "Keyword search",
        "Product lookup (ID or URL)",
        "Deals",
        "Category browse"
      ]
    },
    "queries": {
      "title": "Search Queries",
      "type": "array",
      "description": "Product keywords for search/deals mode. Ignored in product mode; optional in category mode.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "iPhone 15 Pro Max"
      ]
    },
    "productIds": {
      "title": "Product IDs or Viewer URLs",
      "type": "array",
      "description": "Google Shopping catalog IDs, product IDs, product viewer URLs, or legacy /shopping/product/<id> URLs. Used in product mode.",
      "editor": "stringList",
      "items": {
        "type": "string"
      }
    },
    "category": {
      "title": "Category",
      "type": "string",
      "description": "Google Shopping department for category mode.",
      "editor": "select",
      "enum": [
        "electronics",
        "computers",
        "cell-phones",
        "audio",
        "cameras",
        "video-games",
        "tv-home-theater",
        "appliances",
        "home-garden",
        "clothing",
        "shoes",
        "beauty",
        "sports-outdoors",
        "toys-games",
        "jewelry"
      ],
      "enumTitles": [
        "Electronics",
        "Computers",
        "Cell Phones",
        "Audio",
        "Cameras",
        "Video Games",
        "TV & Home Theater",
        "Appliances",
        "Home & Garden",
        "Clothing",
        "Shoes",
        "Beauty",
        "Sports & Outdoors",
        "Toys & Games",
        "Jewelry"
      ]
    },
    "countryCode": {
      "title": "Country",
      "type": "string",
      "description": "Country used for the Google domain, UULE location and price hint. The actual currency is always detected from the response, never relabelled.",
      "editor": "select",
      "default": "us",
      "prefill": "us",
      "enum": [
        "us",
        "uk",
        "ca",
        "au",
        "de",
        "fr",
        "es",
        "it",
        "br",
        "mx",
        "in",
        "jp",
        "kr",
        "nl",
        "be",
        "at",
        "ch",
        "se",
        "no",
        "dk",
        "fi",
        "pl",
        "cz",
        "pt",
        "ie",
        "nz",
        "za",
        "sg",
        "hk",
        "tw",
        "ph",
        "th",
        "id",
        "my",
        "vn",
        "ar",
        "cl",
        "co",
        "pe",
        "tr",
        "ru",
        "ua",
        "il",
        "ae",
        "sa",
        "eg",
        "ng",
        "ke"
      ],
      "enumTitles": [
        "United States",
        "United Kingdom",
        "Canada",
        "Australia",
        "Germany",
        "France",
        "Spain",
        "Italy",
        "Brazil",
        "Mexico",
        "India",
        "Japan",
        "South Korea",
        "Netherlands",
        "Belgium",
        "Austria",
        "Switzerland",
        "Sweden",
        "Norway",
        "Denmark",
        "Finland",
        "Poland",
        "Czech Republic",
        "Portugal",
        "Ireland",
        "New Zealand",
        "South Africa",
        "Singapore",
        "Hong Kong",
        "Taiwan",
        "Philippines",
        "Thailand",
        "Indonesia",
        "Malaysia",
        "Vietnam",
        "Argentina",
        "Chile",
        "Colombia",
        "Peru",
        "Turkey",
        "Russia",
        "Ukraine",
        "Israel",
        "UAE",
        "Saudi Arabia",
        "Egypt",
        "Nigeria",
        "Kenya"
      ]
    },
    "languageCode": {
      "title": "Language",
      "type": "string",
      "description": "Interface and result language (hl parameter).",
      "editor": "select",
      "default": "en",
      "prefill": "en",
      "enum": [
        "en",
        "es",
        "fr",
        "de",
        "it",
        "pt",
        "nl",
        "pl",
        "tr",
        "ru",
        "ja",
        "ko",
        "zh",
        "ar",
        "hi",
        "th",
        "vi",
        "id",
        "ms",
        "sv",
        "da",
        "no",
        "fi",
        "cs",
        "el",
        "he",
        "uk"
      ],
      "enumTitles": [
        "English",
        "Spanish",
        "French",
        "German",
        "Italian",
        "Portuguese",
        "Dutch",
        "Polish",
        "Turkish",
        "Russian",
        "Japanese",
        "Korean",
        "Chinese",
        "Arabic",
        "Hindi",
        "Thai",
        "Vietnamese",
        "Indonesian",
        "Malay",
        "Swedish",
        "Danish",
        "Norwegian",
        "Finnish",
        "Czech",
        "Greek",
        "Hebrew",
        "Ukrainian"
      ]
    },
    "sortBy": {
      "title": "Sort By",
      "type": "string",
      "description": "Client-side sort of the collected rows. Google ignores server-side sort on this page.",
      "editor": "select",
      "default": "",
      "enum": [
        "",
        "review_score",
        "price_low",
        "price_high"
      ],
      "enumTitles": [
        "Relevance (default)",
        "Rating high to low",
        "Price low to high",
        "Price high to low"
      ]
    },
    "condition": {
      "title": "Condition",
      "type": "string",
      "description": "Condition hint sent to Google and verified when the result card shows a condition.",
      "editor": "select",
      "default": "",
      "enum": [
        "",
        "new",
        "used",
        "refurbished"
      ],
      "enumTitles": [
        "Any",
        "New",
        "Used",
        "Refurbished"
      ]
    },
    "minPrice": {
      "title": "Minimum Price",
      "type": "integer",
      "description": "Minimum price in the detected local currency. Applied through a shoprs filter and verified on every output row.",
      "minimum": 0
    },
    "maxPrice": {
      "title": "Maximum Price",
      "type": "integer",
      "description": "Maximum price in the detected local currency. Applied through a shoprs filter and verified on every output row.",
      "minimum": 0
    },
    "onSale": {
      "title": "On Sale Only",
      "type": "boolean",
      "description": "Ask Google for discounted products and keep rows with an observed original price or discount.",
      "default": false,
      "prefill": false
    },
    "freeShipping": {
      "title": "Free Shipping Only",
      "type": "boolean",
      "description": "Ask Google for free-shipping products and keep rows whose delivery text says free.",
      "default": false,
      "prefill": false
    },
    "minRating": {
      "title": "Minimum Rating",
      "type": "string",
      "description": "Minimum product rating (0-5). Applied through a shoprs rating chip and verified on every output row.",
      "editor": "select",
      "default": "0",
      "enum": [
        "0",
        "1",
        "2",
        "3",
        "4",
        "5"
      ],
      "enumTitles": [
        "Any",
        "1 and up",
        "2 and up",
        "3 and up",
        "4 and up",
        "5"
      ]
    },
    "store": {
      "title": "Store",
      "type": "string",
      "description": "Optional store name to bias and verify, e.g. Best Buy or Amazon.",
      "editor": "textfield"
    },
    "maxResultsPerQuery": {
      "title": "Max Results",
      "type": "integer",
      "description": "Maximum records per query (search/deals/category) or products (product mode).",
      "minimum": 1,
      "maximum": 200,
      "default": 20,
      "prefill": 1
    },
    "includePriceHistory": {
      "title": "Include 12-Month Price History",
      "type": "boolean",
      "description": "Include per-seller daily price history when Google exposes it (product mode and search detail enrichment).",
      "default": true,
      "prefill": false
    },
    "includeProductDetails": {
      "title": "Enrich Search Results",
      "type": "boolean",
      "description": "Fetch the product viewer for each search result to add brand, description, images, specifications and offers. Costs one extra request per result.",
      "default": false,
      "prefill": false
    }
  }
}
