{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver Shopping Product Detail Scraper (네이버쇼핑) - Specs",
    "description": "Scrape complete Naver Shopping product data by link or ID: price, discount, stock, specification tables, every seller's price, six months of price history, images, category path and the seller's own product record. Works with price-comparison and store links alike. Export to JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "wVg5QUaPevU1a2qSQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~naver-product-detail-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-naver-product-detail-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/zen-studio~naver-product-detail-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-naver-product-detail-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/zen-studio~naver-product-detail-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-naver-product-detail-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": [
          "productUrls"
        ],
        "properties": {
          "productUrls": {
            "title": "Product links or IDs (상품 링크·상품번호)",
            "type": "array",
            "description": "Paste any Naver Shopping product link. Both kinds work: a <b>price-comparison</b> link (<code>search.shopping.naver.com/catalog/…</code>) and a <b>store</b> link (<code>smartstore.naver.com/…</code> or <code>brand.naver.com/…</code>). Bare ID numbers work too. <b>Max 1,000 per run</b>; longer lists are trimmed, so split them across runs. Duplicates are removed. <b>Search ID from an export?</b> Some ID numbers (for example the <code>productId</code> in a Naver Open API export) are search IDs, which do not open a product on their own. Add the product name after a <code>|</code> and it is usually found: <code>91171893265|라네즈 립 슬리핑 마스크</code>. Use the listing's own title. Many IDs resolve on their own; add the name when a run says it could not match one. Put all of them into one run rather than starting one run each: every run has a start charge, so one run with many is cheaper and faster.",
            "items": {
              "type": "string"
            }
          },
          "includeSellers": {
            "title": "Include all sellers and their prices (판매처별 가격)",
            "type": "boolean",
            "description": "Also collect every seller offering this product, with each one's price, delivery fee and rating. Available for <b>price-comparison</b> products, which are the ones that have competing sellers at all.",
            "default": false
          },
          "maxSellersPerProduct": {
            "title": "Max sellers per product (상품당 최대 판매처 수)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many sellers to collect for each product, cheapest first.",
            "default": 30
          },
          "includePriceHistory": {
            "title": "Include price history (가격 변동 이력)",
            "type": "boolean",
            "description": "Also collect roughly six months of price movement for this product, so you can see whether today's price is actually a low.",
            "default": false
          },
          "includeSellerRecord": {
            "title": "Seller's full product record (판매자 상품정보)",
            "type": "boolean",
            "description": "Also collect the seller's own filing for the product: the mandated disclosure table (materials, size, origin, manufacturer, warranty), delivery-speed statistics, after-sales terms and the option/SKU table. In full for <b>brand store</b> products; other store products get the disclosure table. This is a slower call, so it adds run time.",
            "default": false
          },
          "includeDetailContent": {
            "title": "Detail page images (상세페이지 이미지)",
            "type": "boolean",
            "description": "The seller's own detail page below the buy box: every content image URL on it, in page order, and which editor it was written with. This is the long picture-and-copy description, not the one-line summary that detailContentText carries. Adds detailContentImages and detailContentEditorType. 상세페이지 이미지 URL을 수집합니다. On by default.",
            "default": true
          },
          "includeDetailHtml": {
            "title": "Detail page HTML (상세페이지 HTML)",
            "type": "boolean",
            "description": "The detail page's markup exactly as the store renders it, in detailContentHtml, beside its image URLs. It is large, often 50-250 KB per product, so leave this off unless you need the page itself. 상세페이지 HTML을 함께 수집합니다 (상품당 50-250KB). Off by default.",
            "default": false
          },
          "includeArrivalEstimate": {
            "title": "Arrival estimate (도착 예정일)",
            "type": "boolean",
            "description": "The product page's delivery estimate, \"arrives Wednesday, 97% likely\", in arrivalEstimate: its status, predicted date and probability, for an order placed at the moment the run asked. It changes with the hour: on weekday daytimes about half of ordinary-delivery products have a prediction, at night and at weekends few or none do. Same-day, today-dispatch and arrival-guaranteed products carry their own delivery promise and show no estimate. 상품 페이지의 도착 예정일과 확률을 실행 시점 기준으로 수집합니다. Off by default.",
            "default": false
          },
          "includeReviewStats": {
            "title": "Review score breakdown and insights (별점 분포·리뷰 평가)",
            "type": "boolean",
            "description": "Adds how the product's reviews split across 1 to 5 stars, plus how many have photos, videos, plain text, and how many were written after a month of use. Also what the reviews add up to: how reviewers answered the questions Naver asks for this kind of product (사이즈: 잘 맞아요 81%, 약간 커요 14%), the 20 topics the reviews mention most, and the last six months' review count and average. 별점 분포, 사이즈·핏 평가 비율, 리뷰 키워드를 함께 수집합니다. Available for products sold through a Naver store.",
            "default": true
          },
          "includeAiSummary": {
            "title": "Naver AI summary (AI 요약)",
            "type": "boolean",
            "description": "Adds Naver's own AI digest of the product and its reviews: a one-line summary, who it suits, its highlighted features, and what reviewers agree on. Available for products with at least ten reviews. This text is generated, so it can change between runs.",
            "default": false
          },
          "includeReviews": {
            "title": "Include customer reviews (구매평)",
            "type": "boolean",
            "description": "Also collect customer reviews for each product, written to a separate <b>reviews</b> dataset and linked back by product ID. For review-heavy work (thousands per product, deep paging, filtering) the <b>Naver Shopping Review Scraper</b> is the better tool.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product (상품당 최대 구매평 수)",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "How many reviews to collect for each product. Price-comparison products serve at most <b>10,000</b> per review order; store products have no such limit. Set <b>0</b> to skip reviews.",
            "default": 20
          },
          "reviewSort": {
            "title": "Review order (구매평 정렬)",
            "enum": [
              "RANKING",
              "RECENT"
            ],
            "type": "string",
            "description": "Which reviews to collect first. <b>Newest first</b> reaches a completely different set from <b>Top ranked</b>.",
            "default": "RANKING"
          },
          "reviewType": {
            "title": "Review type (구매평 유형)",
            "enum": [
              "ALL",
              "PHOTO",
              "VIDEO",
              "QUALITY"
            ],
            "type": "string",
            "description": "Limit reviews to a particular kind. <b>Detailed reviews</b> means two things: for a product from one store, the store's own best-review picks, often only a handful or none; for a price-comparison product, the reviews Naver scores highest for usefulness, ranked over five times as many as you ask for.",
            "default": "ALL"
          },
          "includeQna": {
            "title": "Include product Q&A (상품문의)",
            "type": "boolean",
            "description": "Collect the product's public questions with the seller's answers into a separate <b>qna</b> dataset, newest first: the question, when it was asked, whether and how the seller answered. Secret questions (most of them on popular products) carry no text and are only counted, in qnaCount and qnaPublicCount on the product row. 상품문의와 판매자 답변을 수집합니다. Billed per question delivered.",
            "default": false
          },
          "maxQnaPerProduct": {
            "title": "Max questions per product (상품당 최대 문의 수)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "How many public questions to collect for each product, newest first. Set <b>0</b> to skip Q&A.",
            "default": 20
          },
          "feedback": {
            "title": "Feedback to the maintainers",
            "type": "string",
            "description": "For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}