{
  "openapi": "3.0.1",
  "info": {
    "title": "Oliveyoung Scraper — Rankings, Search, Ingredients [💰 $4/1K]",
    "description": "Olive Young (oliveyoung.co.kr), Korea's #1 beauty retailer: official best-seller rankings (top 100 by category, period, gender, age), keyword search in its own popularity order, and full ingredient lists in Korean + English INCI. Prices, discounts, ratings, review counts and barcodes as clean JSON.",
    "version": "0.1",
    "x-build-id": "JoVFqXzehXUP9Ijpi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cocomoon~oliveyoung-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cocomoon-oliveyoung-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/cocomoon~oliveyoung-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cocomoon-oliveyoung-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/cocomoon~oliveyoung-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cocomoon-oliveyoung-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "ranking",
              "details"
            ],
            "type": "string",
            "description": "What to scrape. <b>search</b> — products for a keyword or brand, in Olive Young's popularity order, with prices, discounts, ratings and review counts. <b>ranking</b> — the official best-seller chart: top 100 overall or per category, real-time / daily / weekly / monthly, optionally by gender and age group, with the rank change since your previous run. <b>details</b> — full product details for a list of product numbers: <b>complete ingredient list (전성분) with English INCI names</b>, volume, shelf life, manufacturer, country of origin, functional-cosmetic status, how to use, cautions, options with barcodes, current promotion and coupon, unit price. (<code>detail</code> is accepted as an alias.)",
            "default": "search"
          },
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Search mode. One search per keyword — Korean or English, e.g. <code>선크림</code> (sunscreen), <code>토너패드</code>, <code>sunscreen</code>, <code>toner</code>, or a brand such as <code>anua</code>, <code>medicube</code>. Korean category words return more results; results come back in Olive Young's popularity order.",
            "items": {
              "type": "string"
            }
          },
          "rankingCategories": {
            "title": "Ranking categories",
            "type": "array",
            "description": "Ranking mode. Which best-seller charts to collect — each category returns its own top 100. <b>All categories</b> is Olive Young's overall chart.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "skincare",
                "maskPack",
                "cleansing",
                "suncare",
                "makeup",
                "nails",
                "beautyTools",
                "dermaCosmetics",
                "fragrance",
                "haircare",
                "bodycare",
                "luxeEdit",
                "mensEdit",
                "healthSupplements",
                "food",
                "oralCare",
                "healthGoods",
                "hygiene",
                "fashion",
                "homeLiving",
                "hobby"
              ],
              "enumTitles": [
                "All categories (overall top 100)",
                "Skincare",
                "Mask packs",
                "Cleansing",
                "Sun care",
                "Makeup",
                "Nails",
                "Beauty tools",
                "Derma cosmetics",
                "Fragrance / diffusers",
                "Hair care",
                "Body care",
                "Luxe Edit",
                "Men's Edit",
                "Health supplements",
                "Food",
                "Oral care",
                "Health goods",
                "Hygiene",
                "Fashion",
                "Home / living",
                "Hobby / fancy"
              ]
            },
            "default": [
              "all"
            ]
          },
          "rankingPeriod": {
            "title": "Ranking period",
            "enum": [
              "REALTIME",
              "DAY",
              "WEEK",
              "MONTH"
            ],
            "type": "string",
            "description": "Ranking mode. Which chart to read: the live chart (updated through the day), or sales over the last day, week or month.",
            "default": "REALTIME"
          },
          "rankingGender": {
            "title": "Ranking: buyer gender",
            "enum": [
              "ALL",
              "FEMALE",
              "MALE"
            ],
            "type": "string",
            "description": "Ranking mode. Chart for all buyers, or only what women or men buy.",
            "default": "ALL"
          },
          "rankingAge": {
            "title": "Ranking: buyer age group",
            "enum": [
              "ALL",
              "TEENAGER",
              "TWENTIES",
              "THIRTIES",
              "OVER_FORTIES"
            ],
            "type": "string",
            "description": "Ranking mode. Chart for all ages, or one age group (teens, 20s, 30s, 40 and over).",
            "default": "ALL"
          },
          "rankingTop": {
            "title": "Ranking: top N per category",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Ranking mode. How many ranked products to return per chart (1–100). Replaces Max items in ranking mode.",
            "default": 100
          },
          "includeDetails": {
            "title": "Add full details & ingredients to search / ranking results",
            "type": "boolean",
            "description": "Search and ranking modes. Also fetch each product's details page and add the full ingredient list (Korean + English INCI), volume, shelf life, manufacturer, country of origin, barcodes, promotion, coupon and unit price to every row. Two extra requests per product (about 30 seconds per 10 products); billed the same per product.",
            "default": false
          },
          "products": {
            "title": "Products (details mode)",
            "type": "array",
            "description": "Details mode. Olive Young product numbers (<code>A000000232672</code>) or product page URLs (<code>https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000232672</code>), one per line. Tip: take the <code>goodsNo</code> values from a search or ranking run.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Search and details modes. Maximum number of products in total, across all keywords / products. Ranking mode uses <b>Top N per category</b> instead.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxies for the search API. Leave the default: search uses the standard Apify proxy, and product pages (details, ranking, includeDetails) are fetched through Korean residential IPs automatically, because Olive Young blocks datacenter IPs there. Choose residential proxies here only if you want <i>everything</i> to go through them.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}