{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Shopping Results Scraper",
    "description": "Export Google Shopping result cards with prices, merchants, ratings and visible shipping or sale signals. Search by keyword, country and language for product research.",
    "version": "0.2",
    "x-build-id": "hHUNkJPixjMkGfBFz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fetch_cat~google-shopping-results-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fetch_cat-google-shopping-results-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/fetch_cat~google-shopping-results-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fetch_cat-google-shopping-results-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/fetch_cat~google-shopping-results-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fetch_cat-google-shopping-results-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Shopping queries",
            "minItems": 1,
            "type": "array",
            "description": "Enter product names, model numbers or category terms. Provide 1–100 distinct nonblank queries of at most 200 characters each. The example prefill is not an API default. Results share the total cap in rounds.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerQuery": {
            "title": "Maximum results per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Optional saved-row cap per query. Defaults to maxItems and must not exceed it. A cap is not a guaranteed result count."
          },
          "country": {
            "title": "Country code",
            "minLength": 2,
            "maxLength": 2,
            "type": "string",
            "description": "Two-letter Google Shopping country code, such as US, GB, CA, AU, or DE.",
            "default": "US"
          },
          "language": {
            "title": "Language code",
            "type": "string",
            "description": "Google interface language, such as en, es, de, fr, or it.",
            "default": "en"
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "number",
            "description": "Nonnegative lower price bound, no greater than maxPrice. Requests a price filter and removes known prices below it; cards with an unknown price can remain. No currency conversion."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "Nonnegative upper price bound, no less than minPrice. Requests a price filter and removes known prices above it; cards with an unknown price can remain. No currency conversion."
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard total cap across all queries.",
            "default": 20
          },
          "merchant": {
            "title": "Merchant or store",
            "type": "string",
            "description": "Only save results whose visible merchant contains this store name."
          },
          "condition": {
            "title": "Product condition",
            "enum": [
              "any",
              "new",
              "used",
              "refurbished"
            ],
            "type": "string",
            "description": "Request any, new, used or refurbished products. Cards with an unknown condition can remain; known conflicting conditions are removed. Refurbished searches use Google's used-product filter, then check visible card condition.",
            "default": "any"
          },
          "onSale": {
            "title": "On-sale products only",
            "type": "boolean",
            "description": "Only save results with a visible sale, deal, original price, or discount.",
            "default": false
          },
          "freeShipping": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Only save results that explicitly advertise free shipping or delivery.",
            "default": false
          },
          "freeReturns": {
            "title": "Free returns only",
            "type": "boolean",
            "description": "Only save results that explicitly advertise free returns.",
            "default": false
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "priceAsc",
              "priceDesc",
              "rating"
            ],
            "type": "string",
            "description": "Request relevance, ascending price, descending price or highest rating. Available cards are also sorted within each fetched page, with unknown values last. This is not a global dataset sort or an exhaustive ranking; relevance preserves extracted order.",
            "default": "relevance"
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "First Shopping results page to request.",
            "default": 1
          },
          "maxPages": {
            "title": "Maximum pages per query",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Hard page-request cap for each query (up to 10).",
            "default": 1
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Per-page timeout. Timeout and partial outcomes are recorded in the run summary.",
            "default": 45
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "This Actor uses a proxy from the first request; there is no direct mode or direct-to-proxy fallback. Omission retains managed Apify Proxy with GOOGLE_SERP. Valid explicit proxyConfiguration settings take precedence: custom proxyUrls are retained, and an explicit useApifyProxy:false without custom URLs stops because a proxy is required; it does not enable managed fallback. With managed settings, omitted groups use GOOGLE_SERP, explicit groups are retained, and country follows the country input. Custom proxies must support Google Shopping access and are not guaranteed to work. Invalid or unsupported settings are rejected before source requests or Actor charge events. Managed proxy use can incur platform usage charges. Do not share proxy credentials in issue reports.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "GOOGLE_SERP"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}