{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver Shopping Scraper & Keyword Rank Tracker",
    "description": "Enter Naver Shopping keywords and get ranked Plus Store products (verified to rank 1,000) for 6 sort orders, with price, discount, store, rating, reviews, stock and delivery. Add your product IDs or store names to get free summary rows with your rank, store ranks and price gap to #1.",
    "version": "0.2",
    "x-build-id": "HTkgKiftBxE1jMnIt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/magenta_courser~naver-shopping-rank-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-magenta_courser-naver-shopping-rank-tracker",
        "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/magenta_courser~naver-shopping-rank-tracker/runs": {
      "post": {
        "operationId": "runs-sync-magenta_courser-naver-shopping-rank-tracker",
        "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/magenta_courser~naver-shopping-rank-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-magenta_courser-naver-shopping-rank-tracker",
        "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": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Required. Search keywords to check on Naver Shopping (search.shopping.naver.com), one per line, typed as a Korean shopper would. Examples: 무선 이어폰 (wireless earbuds), 강아지 사료 (dog food), 선크림 (sunscreen). Each keyword is searched once per sort order in the Naver Plus Store product list (Smart Store and Brand Store products; no ads, no external malls).",
            "items": {
              "type": "string"
            }
          },
          "sorts": {
            "title": "Sort orders",
            "type": "array",
            "description": "Optional. Sort orders to check; default [\"REL\"]. Each keyword is searched once per sort order and every row has a \"sort\" field. REL = Naver ranking (the default order shoppers see), PURCHASE = most purchased, REVIEW = most reviews, LOW_PRICE = lowest price, HIGH_PRICE = highest price, RECENT = newest. Ranks are organic only (no ads). LOW_PRICE, HIGH_PRICE and REVIEW are checked against prices and review counts; a page that is not in that order is retried and, if it stays wrong, the search fails without charge. PURCHASE and RECENT cannot be checked from the data; if page 1 matches the default order the search is kept and marked sortCheck = sameAsDefault.",
            "items": {
              "type": "string",
              "enum": [
                "REL",
                "PURCHASE",
                "REVIEW",
                "LOW_PRICE",
                "HIGH_PRICE",
                "RECENT"
              ],
              "enumTitles": [
                "Naver ranking (default)",
                "Most purchased",
                "Most reviews",
                "Lowest price",
                "Highest price",
                "Newest"
              ]
            },
            "default": [
              "REL"
            ]
          },
          "maxRank": {
            "title": "Max rank",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional. How deep to scan each keyword and sort order: products ranked 1 to maxRank are returned, 100 per request. Default 100. We have tested full scans up to rank 1,000; Naver's list stops at rank 10,000, which is the maximum accepted here, but scans deeper than 1,000 have not been tested end to end. You are charged per product row, so maxRank is also your row count per keyword and sort order: 3 keywords x 2 sorts x maxRank 100 = up to 600 charged rows.",
            "default": 100
          },
          "myProductIds": {
            "title": "My product IDs (optional)",
            "type": "array",
            "description": "Optional. Your products to track, one per line: Naver Shopping product ID (nvMid), Smart Store product number, or a product URL. Examples: 13103686932, 90648198024, https://smartstore.naver.com/yourstore/products/13103686932. For each keyword and sort order you get one free row (type = myProductSummary) with the rank, price and price gap to the #1 product. found = false means the product was not within the ranksScanned ranks of a completed search; found = null means the search did not finish (see searchStatus and stopReason), so absence is unknown.",
            "items": {
              "type": "string"
            }
          },
          "myStoreNames": {
            "title": "My store names (optional)",
            "type": "array",
            "description": "Optional. Stores to track, one per line: store name as shown on Naver, Smart Store URL, or the store ID from that URL (spaces and letter case are ignored). Examples: 필립스 오디오 공식몰 (Philips Audio official store), philipsav_official, https://smartstore.naver.com/philipsav_official. For each keyword and sort order you get one free row (type = myStoreSummary) with the store's best rank, average rank and how many of its products are within the scanned ranks. found follows the same rules as for products.",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Keep the default: Apify residential proxy, country KR (South Korea). Naver Shopping blocks many data-center IPs. Change it only if you have your own Korean residential proxies.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "KR"
            }
          },
          "maxRequests": {
            "title": "Max requests per run",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional. Upper limit on HTTP requests for the whole run, retries included. Default: 2 per 100 ranks per search + 5. When it is used up, the run stops, keeps what it saved and marks unfinished searches as budgetLimited or notStarted in RUN_SUMMARY."
          },
          "maxRunMinutes": {
            "title": "Max run time (minutes)",
            "minimum": 1,
            "maximum": 1440,
            "type": "integer",
            "description": "Optional. The run stops sending new requests after this many minutes, default 60, and keeps what it saved. Independent of this, the run also stops after 10 blocked requests in a row (stopReason = blocked) instead of retrying every remaining page."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}