{
  "openapi": "3.0.1",
  "info": {
    "title": "PrestaShop Products Scraper",
    "description": "Use this actor to collect public PrestaShop catalog data without a webservice key. It discovers product pages through sitemaps and storefront HTML, then normalizes titles, prices, stock signals, SKUs, images, categories, or product URLs for price monitoring, competitor analysis, and market research.",
    "version": "0.1",
    "x-build-id": "hgvS25DDEMCRkLvLy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trovevault~prestashop-products-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trovevault-prestashop-products-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/trovevault~prestashop-products-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trovevault-prestashop-products-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/trovevault~prestashop-products-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trovevault-prestashop-products-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": [
          "storeUrls"
        ],
        "properties": {
          "storeUrls": {
            "title": "Store URLs",
            "type": "array",
            "description": "One or more PrestaShop storefront domains or root URLs to scrape. The actor uses each value as the store entry point, discovers product pages through public storefront discovery paths, and extracts URLs, titles, prices, stock signals, SKUs, images, and categories. Accepts bare hostnames like `demo-store8x.motionseed.com` or full URLs like `https://demo-store8x.motionseed.com/en/`. Add multiple stores to compare assortments side by side in one run. Use storefront roots instead of product page URLs for the best coverage.",
            "items": {
              "type": "string"
            }
          },
          "maxProducts": {
            "title": "Max Products",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of products to extract per store. The actor stops after this many product detail pages return usable product data. Use small values like 3 to 5 for quick smoke tests and daily checks, and larger values like 25 to 200 for fuller catalog snapshots. Higher values return more products but take longer and increase the chance of hitting weaker storefront pages.",
            "default": 25
          },
          "discoveryMode": {
            "title": "Discovery Mode",
            "enum": [
              "AUTO",
              "SITEMAP_ONLY",
              "HTML_ONLY"
            ],
            "type": "string",
            "description": "Controls how product page URLs are discovered. `AUTO` uses the strongest public path first for PrestaShop, then falls back to other public sources until it reaches the requested cap. `SITEMAP_ONLY` is best when the storefront publishes clean product sitemaps. `HTML_ONLY` is useful for debugging pages when sitemap coverage is weak. Recommended: `AUTO` for most runs.",
            "default": "AUTO"
          },
          "requestTimeoutSecs": {
            "title": "Request Timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "HTTP timeout used for storefront requests. The actor applies this limit to sitemap downloads, HTML pages, and API discovery calls. Use 20 to 30 seconds for most stores and increase it when the storefront is slow or far from your region. Higher values reduce false timeouts but make failed requests take longer to finish.",
            "default": 30
          },
          "includeRawJsonLd": {
            "title": "Include Raw JSON-LD",
            "type": "boolean",
            "description": "When enabled, the actor includes the parsed Product JSON-LD object in each successful dataset item when the storefront exposes it. This is useful for QA, debugging, and schema comparison across stores. Leave it disabled for smaller datasets unless you need the raw source object.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings for storefront requests. The actor applies this configuration to discovery requests, sitemap downloads, product pages, and supported API calls. Enable Apify Proxy, ideally residential groups, when the target store returns HTTP 403, 429, 526, Cloudflare blocks, or country-specific bot defenses. Leave it disabled for open storefronts to keep runs simpler and lower cost.",
            "default": {
              "useApifyProxy": false
            }
          },
          "datasetId": {
            "title": "Dataset ID (optional)",
            "type": "string",
            "description": "ID of an existing Apify dataset to append results to, in addition to the default run dataset. Leave blank to use only the default run dataset."
          },
          "runId": {
            "title": "Run ID (optional)",
            "type": "string",
            "description": "ID of an existing Apify actor run to associate results with. Used for pipeline chaining and multi-step workflows. Leave blank for standalone runs."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}