{
  "openapi": "3.0.1",
  "info": {
    "title": "Sephora Scraper - Products, Reviews & Prices",
    "description": "Scrape Sephora products, prices, ratings, reviews and brands. Search by keyword, enrich product details and check store availability. Supports US collection and selected international markets. Export structured JSON or CSV.",
    "version": "0.1",
    "x-build-id": "67s8tr7OvVc08hH0s"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fetchfinch~sephora-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fetchfinch-sephora-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/fetchfinch~sephora-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fetchfinch-sephora-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/fetchfinch~sephora-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fetchfinch-sephora-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",
        "properties": {
          "mode": {
            "title": "Run mode",
            "enum": [
              "catalog",
              "brands",
              "search",
              "details",
              "full"
            ],
            "type": "string",
            "description": "Choose the catalog view. Every mode reads the maintained offline snapshot.",
            "default": "search"
          },
          "snapshotUrl": {
            "title": "Catalog source",
            "type": "string",
            "description": "Internal catalog source.",
            "default": "https://api.medardkonopik.com/sephora-collector/snapshot.json"
          },
          "snapshotPath": {
            "title": "Local catalog source",
            "type": "string",
            "description": "Internal local catalog source."
          },
          "emitChangesOnly": {
            "title": "Output changed records only",
            "type": "boolean",
            "description": "Output only product and brand records whose meaningful data changed since the previous run. The run summary is always included. Leave off for a complete snapshot.",
            "default": false
          },
          "cacheStoreName": {
            "title": "Persistent cache name",
            "type": "string",
            "description": "Optional stable name for reusing cache and progress across scheduled runs. Leave blank to keep state isolated to this run."
          },
          "catalogScope": {
            "title": "Catalog scope",
            "enum": [
              "core",
              "all-roots"
            ],
            "type": "string",
            "description": "Core departments avoid curated category overlap. All roots maximizes coverage.",
            "default": "core"
          },
          "searchQueries": {
            "title": "Search terms",
            "maxItems": 5,
            "type": "array",
            "description": "One or more product search terms, for example perfume, vitamin C serum, or Rare Beauty. Used when Run mode is Search.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": [
              "perfume"
            ]
          },
          "maxResultsPerQuery": {
            "title": "Results per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum products returned for each search query.",
            "default": 100
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum records returned by catalog, brands, details, or full mode."
          },
          "maxSearchPages": {
            "title": "Pages per search",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum result pages to fetch for each search term. Results stop automatically when the search is exhausted.",
            "default": 1
          },
          "maxCatalogPages": {
            "title": "Catalog pages per run",
            "minimum": 1,
            "maximum": 317,
            "type": "integer",
            "description": "Maximum listing pages in this run. Each page contains up to 60 products; the actor resumes from its saved cursor.",
            "default": 1
          },
          "maxDetails": {
            "title": "Products per details run",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Retained for task compatibility. Details mode reads matching products from the snapshot and makes no live requests.",
            "default": 0
          },
          "detailProductIds": {
            "title": "Product IDs to return",
            "type": "array",
            "description": "Optional US Sephora product IDs such as P442563.",
            "items": {
              "type": "string"
            }
          },
          "enableInternational": {
            "title": "Request international data",
            "type": "boolean",
            "description": "Retained for task compatibility. The maintained snapshot is US-only, so international requests produce an explicit unavailable summary.",
            "default": false
          },
          "euLocales": {
            "title": "EU locales",
            "type": "array",
            "description": "Retained for compatibility; the offline snapshot currently contains US catalog data only.",
            "default": [
              "fr-FR"
            ],
            "items": {
              "type": "string"
            }
          },
          "euQueries": {
            "title": "EU catalog queries",
            "type": "array",
            "description": "Retained for compatibility; no live EU requests are made.",
            "items": {
              "type": "string"
            }
          },
          "euProductIds": {
            "title": "EU product IDs",
            "type": "array",
            "description": "Retained for compatibility; no live EU requests are made.",
            "items": {
              "type": "string"
            }
          },
          "asiaMarkets": {
            "title": "Asia markets",
            "type": "array",
            "description": "Retained for compatibility; no live Asia requests are made."
          },
          "asiaQueries": {
            "title": "Asia catalog queries",
            "type": "array",
            "description": "Retained for compatibility; no live Asia requests are made."
          },
          "asiaProductIds": {
            "title": "Asia product details",
            "type": "array",
            "description": "Retained for compatibility; no live Asia requests are made."
          },
          "includeReviews": {
            "title": "Include review metadata",
            "type": "boolean",
            "description": "Return aggregate rating and review-count records from the snapshot. Individual review text is not included.",
            "default": false
          },
          "reviewProductIds": {
            "title": "Review product IDs",
            "type": "array",
            "description": "US product IDs whose aggregate review metadata should be returned, such as P442563.",
            "items": {
              "type": "string"
            }
          },
          "reviewPageSize": {
            "title": "Review page size",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Retained for task compatibility; the offline snapshot has aggregate review counts only.",
            "default": 10
          },
          "includeAvailability": {
            "title": "Include online availability",
            "type": "boolean",
            "description": "Return online availability flags captured in the snapshot. Physical store inventory is not included.",
            "default": false
          },
          "availabilityProductIds": {
            "title": "Availability product IDs",
            "type": "array",
            "description": "US product IDs whose online availability flags should be returned.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Availability locations",
            "type": "array",
            "description": "Optional location objects retained for task compatibility; the snapshot does not provide store-level inventory."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}