{
  "openapi": "3.0.1",
  "info": {
    "title": "Olive Young Product Scraper: Ingredients & Prices",
    "description": "Scrape Olive Young prices, stock and full ingredient lists with this Olive Young product scraper: search by keyword, category, product URL or best-seller page; each row carries discount, rating, size, maker and distributor at one price. Optional review statistics. No login.",
    "version": "0.1",
    "x-build-id": "LUaVFIgb27vyMVR46"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pradio~olive-young-product-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pradio-olive-young-product-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/pradio~olive-young-product-scraper/runs": {
      "post": {
        "operationId": "runs-sync-pradio-olive-young-product-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/pradio~olive-young-product-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-pradio-olive-young-product-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": {
          "keyword": {
            "title": "Search terms, links or product numbers",
            "type": "string",
            "description": "One per line, or separated by commas: a search word (laneige), a category link (that whole category is read), a product link (that one product is read), or the store's own product number (GA for one product, GS for a set, the number in the product page's address). Each is read on its own, and they share one cap: the most products one run returns, up to 1,000. Each product row names the line it came from."
          },
          "mode": {
            "title": "What to read",
            "enum": [
              "search",
              "best_sellers",
              "category"
            ],
            "type": "string",
            "description": "Search reads the lines in the box: a word is searched, a product number or a product link reads that product, and a category link on its own reads that whole category. Best sellers reads the store's own ranking, or that category's; those rows come back in the store's own order. A whole category reads every product of the category you pick in Category, just below, within the run's cap. Under Best sellers and A whole category the lines in the box are not read, and the run says so.",
            "default": "search"
          },
          "category": {
            "title": "Category",
            "enum": [
              "",
              "1000000008",
              "1000000009",
              "1000000010",
              "1000000012",
              "1000000261",
              "1000000031",
              "1000000032",
              "1000000040",
              "1000000045",
              "1000000049",
              "1000000033",
              "1000000034",
              "1000000179",
              "1000000035",
              "1000000036",
              "1000000037",
              "1000000038",
              "1000000039",
              "1000000041",
              "1000000042",
              "1000000043",
              "1000000044",
              "1000000046",
              "1000000047",
              "1000000048",
              "1000000052",
              "1000000053",
              "1000000058",
              "1000000063",
              "1000000066",
              "1000000069",
              "1000000205",
              "1000000070",
              "1000000071",
              "1000000074",
              "1000000079",
              "1000000081",
              "1000000149",
              "1000000208",
              "1000000003",
              "1000000004",
              "1000000005",
              "1000000006",
              "1000000007",
              "1000000148",
              "1000000011",
              "1000000028",
              "1000000029",
              "1000000162",
              "1000000087",
              "1000000083",
              "1000000095",
              "1000000119",
              "1000000134",
              "1000000137",
              "1000000151"
            ],
            "type": "string",
            "description": "The whole store is what the box opens on: leave it there to search across the whole shop, or pick a category to search inside it. Each word is then looked for inside that category only. What to read, above, chooses whether the category is searched inside or read whole. The Sort field below names the order that ranks a whole category: Highest rated, and that read is charged once, as a category scan ($0.011; the platform's bill calls it Category scanned).",
            "default": ""
          },
          "includeProductInfo": {
            "title": "Include product info",
            "type": "boolean",
            "description": "Also read each product's notice panel: the ingredient list, size, skin suitability, shelf life, manufacturer and distributor, country of manufacture, and whether the store flags it a functional cosmetic. One extra read per product, at no extra charge. The name, price and brand come back either way.",
            "default": true
          },
          "includeReviews": {
            "title": "Include review statistics",
            "type": "boolean",
            "description": "The shown star rating and review count come back on every row either way. This adds each product's average over every review, star counts, latest review date and skin-type counts. Makes the run slower, never dearer: what you pay per product stays the same. Aggregates only, never review text or reviewer data.",
            "default": false
          },
          "minPrice": {
            "title": "Minimum price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Keep only products priced at or above this, in US dollars. Leave it empty and no price limit applies."
          },
          "maxPrice": {
            "title": "Maximum price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Keep only products priced at or below this, in US dollars. Leave it empty and no price limit applies."
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Leave it empty and every product comes back, with a rating or not. Set it and only products rated at least this many stars come back (0 to 5). A product with no rating yet is left out, even at 0."
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Keep only these brands. Type the name as the store shows it (COSRX, Anua), or a brand id from an earlier result (brand_id, for example B00280 for LANEIGE), which is faster.",
            "items": {
              "type": "string"
            }
          },
          "titleContains": {
            "title": "Product name contains",
            "type": "array",
            "description": "Keep only products whose name contains one of these words, for example serum in a skincare category.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort (the order the rows come back in)",
            "enum": [
              "popular",
              "newest",
              "price_low",
              "price_high",
              "most_reviews",
              "highest_rated",
              "rated_found"
            ],
            "type": "string",
            "description": "Store order is the store's own. Rating (of the rows found) ranks only the products this run read, never charged; on a search it is the same as Highest rated. Highest rated with a category picked reads all of it, charged once as a category scan ($0.011; the platform's bill calls it Category scanned); with no category picked it ranks the search results (ten rows in 47 s, measured). No other order charges for a category. Under Best sellers the order is unused: the rows come in the store's order.",
            "default": "popular"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "The most products one run returns, up to 1,000. Your search lines share it: three lines and 100 give each about 33, not 100 each. The run stops there and its log says so. Maximum products per line, just below, gives each line its own cap instead.",
            "default": 50
          },
          "maxItemsPerSeed": {
            "title": "Maximum products per line",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "The most products one line of your search returns. Left unset, the run's cap (Maximum items, just above) is shared evenly over the lines: 50 over five lines gives each line about 10, so one broad word cannot use up the run. Maximum items still caps the whole run."
          },
          "onlyChanged": {
            "title": "Only new or changed products",
            "type": "boolean",
            "description": "For a price watch on a schedule. Each product shows its last price and stock beside today's, and whether it is new, changed or unchanged since the last run of yours that returned it under the same line. Your first run has nothing to compare with, so every product comes back as new; from the second run on, only what moved is returned. The Actor remembers each product's price and stock per line for 31 days.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}