{
  "openapi": "3.0.1",
  "info": {
    "title": "Shein Search Products Scraper (Multi-Country Price Analytics)",
    "description": "Shein Search Products Scraper extracts public product data including titles, prices, ratings, reviews, brands, categories, and product URLs. Compare prices across multiple countries to analyze regional pricing, product trends, competitors, and market opportunities.",
    "version": "0.1",
    "x-build-id": "eiD0yrnZ1mt8YaRkC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~shein-search-products-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-shein-search-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/api-empire~shein-search-products-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-shein-search-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/api-empire~shein-search-products-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-shein-search-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": [
          "query"
        ],
        "properties": {
          "query": {
            "title": "🔍 Search Queries",
            "type": "array",
            "description": "Product types to search (jacket, dress, shoes...). Add multiple items to run separate searches. Example: [\"jacket\", \"dress\"] runs 2 searches per country.",
            "default": [
              "jacket"
            ],
            "items": {
              "type": "string"
            }
          },
          "countryCodes": {
            "title": "🌍🔀 Countries To Compare (Multi-Country Batch)",
            "type": "array",
            "description": "Pick 2+ regional SHEIN sites to run the SAME queries against in one job and unlock cross-country price comparison rows. Example: [\"us\",\"uk\",\"de\"] searches all 3 storefronts and ranks each matched product by USD price. Leave empty to fall back to the single 🌍 Country field below (classic single-region behavior).",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "de",
                "fr",
                "it",
                "ch",
                "pl",
                "pt",
                "es",
                "se",
                "uk",
                "ca",
                "mx",
                "br",
                "ae",
                "sa",
                "ru",
                "jp",
                "kr",
                "cn",
                "tw",
                "hk",
                "au",
                "in",
                "id",
                "ph",
                "my",
                "sg",
                "tr",
                "nl",
                "be",
                "at",
                "dk",
                "no",
                "fi",
                "ie",
                "vn",
                "th",
                "il"
              ],
              "enumTitles": [
                "🇺🇸 United States",
                "🇩🇪 Germany",
                "🇫🇷 France",
                "🇮🇹 Italy",
                "🇨🇭 Switzerland",
                "🇵🇱 Poland",
                "🇵🇹 Portugal",
                "🇪🇸 Spain",
                "🇸🇪 Sweden",
                "🇬🇧 United Kingdom",
                "🇨🇦 Canada",
                "🇲🇽 Mexico",
                "🇧🇷 Brazil",
                "🇦🇪 UAE",
                "🇸🇦 Saudi Arabia",
                "🇷🇺 Russia",
                "🇯🇵 Japan",
                "🇰🇷 South Korea",
                "🇨🇳 China",
                "🇹🇼 Taiwan",
                "🇭🇰 Hong Kong",
                "🇦🇺 Australia",
                "🇮🇳 India",
                "🇮🇩 Indonesia",
                "🇵🇭 Philippines",
                "🇲🇾 Malaysia",
                "🇸🇬 Singapore",
                "🇹🇷 Turkey",
                "🇳🇱 Netherlands",
                "🇧🇪 Belgium",
                "🇦🇹 Austria",
                "🇩🇰 Denmark",
                "🇳🇴 Norway",
                "🇫🇮 Finland",
                "🇮🇪 Ireland",
                "🇻🇳 Vietnam",
                "🇹🇭 Thailand",
                "🇮🇱 Israel"
              ]
            }
          },
          "countryCode": {
            "title": "🌍 Single Country (Legacy / Fallback)",
            "enum": [
              "us",
              "de",
              "fr",
              "it",
              "ch",
              "pl",
              "pt",
              "es",
              "se",
              "uk",
              "ca",
              "mx",
              "br",
              "ae",
              "sa",
              "ru",
              "jp",
              "kr",
              "cn",
              "tw",
              "hk",
              "au",
              "in",
              "id",
              "ph",
              "my",
              "sg",
              "tr",
              "nl",
              "be",
              "at",
              "dk",
              "no",
              "fi",
              "ie",
              "vn",
              "th",
              "il"
            ],
            "type": "string",
            "description": "Used only when 🌍🔀 Countries To Compare above is left empty — runs the classic single-region search exactly like the original scraper.",
            "default": "us"
          },
          "orderBy": {
            "title": "↕️ Sort Order",
            "enum": [
              "recommend",
              "MostPopular",
              "NewArrivals",
              "TopRated",
              "PriceLowtoHigh",
              "PriceHightoLow"
            ],
            "type": "string",
            "description": "How to sort the search results in every country.",
            "default": "recommend"
          },
          "maxItems": {
            "title": "🎯 Max Items Per Query (Per Country)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum products to scrape per search query, PER country (1–10000). Example: 2 queries × 2 countries × maxItems=10 → up to 40 rows. Default is 10.",
            "default": 10
          },
          "page": {
            "title": "📄 Page Number",
            "minimum": 1,
            "type": "integer",
            "description": "Start page for pagination (1 = first page).",
            "default": 1
          },
          "perPage": {
            "title": "📦 Items Per Page",
            "enum": [
              "20",
              "40",
              "60",
              "80",
              "100",
              "120"
            ],
            "type": "string",
            "description": "Number of products per page (20–120).",
            "default": "120"
          },
          "filter": {
            "title": "🔧 Additional Filters",
            "type": "string",
            "description": "Extra filter options. Leave empty for no filter.",
            "default": ""
          },
          "categoryId": {
            "title": "📂 Category ID",
            "type": "string",
            "description": "Filter by category. Leave empty for all categories.",
            "default": ""
          },
          "minPrice": {
            "title": "💰 Min Price",
            "type": "string",
            "description": "Minimum price in each country's local currency (e.g. 10).",
            "default": ""
          },
          "maxPrice": {
            "title": "💰 Max Price",
            "type": "string",
            "description": "Maximum price in each country's local currency (e.g. 100).",
            "default": ""
          },
          "enablePriceComparison": {
            "title": "🧮 Enable Cross-Country Price Comparison",
            "type": "boolean",
            "description": "When 2+ countries are searched, add extra 'priceComparison' rows to the output that match the same product across countries and rank it by USD price (cheapest market first). Every product row always gets a discount % and on-sale flag regardless of this setting.",
            "default": true
          },
          "matchStrategy": {
            "title": "🔗 Cross-Country Match Strategy",
            "enum": [
              "normalizedTitle",
              "goods_id"
            ],
            "type": "string",
            "description": "How the same product is recognized across different country storefronts for price comparison. Shein assigns a DIFFERENT internal product ID per region to the same item, so 'Normalized Title' (a cleaned, lowercased product name) is the strategy that actually finds cross-country matches. 'Product ID' is kept for the rare case where a region shares identical IDs.",
            "default": "normalizedTitle"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy (residential recommended). Shein blocks bare datacenter IPs — residential is the only reliable mode."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}