{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver DataLab Shopping Insight Scraper",
    "description": "Get the top 500 popular Naver Shopping search keywords per category from Naver DataLab Shopping Insight, filtered by device, gender and age, with optional click trends, audience breakdowns and rank changes.",
    "version": "1.0",
    "x-build-id": "VPGqtJPqpM3HbIc5D"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/frank_conifer_af4~naver-shopping-insight/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-frank_conifer_af4-naver-shopping-insight",
        "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/frank_conifer_af4~naver-shopping-insight/runs": {
      "post": {
        "operationId": "runs-sync-frank_conifer_af4-naver-shopping-insight",
        "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/frank_conifer_af4~naver-shopping-insight/run-sync": {
      "post": {
        "operationId": "run-sync-frank_conifer_af4-naver-shopping-insight",
        "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": {
          "categories": {
            "title": "Shopping categories",
            "maxItems": 200,
            "type": "array",
            "description": "One category per line. Use a category ID (e.g. 50000000), a top-level or second-level name (e.g. 패션의류, 스킨케어), or a path separated by > (e.g. 화장품/미용 > 스킨케어 > 크림). Unknown names return an error row with suggestions and are not charged. Leave empty with 'List categories' on to browse the top level.",
            "items": {
              "type": "string"
            }
          },
          "period": {
            "title": "Period",
            "enum": [
              "last7days",
              "last30days",
              "last90days",
              "last1year"
            ],
            "type": "string",
            "description": "Preset date range ending yesterday (Korea time). Ignored when you set Start date and End date.",
            "default": "last30days"
          },
          "startDate": {
            "title": "Start date (optional)",
            "type": "string",
            "description": "Custom range start (YYYY-MM-DD). Overrides Period when set together with End date. DataLab has data from 2017-08-01 and allows at most 1 year per query."
          },
          "endDate": {
            "title": "End date (optional)",
            "type": "string",
            "description": "Custom range end (YYYY-MM-DD). Dates after yesterday are moved back to yesterday, because DataLab publishes data with a one-day delay."
          },
          "timeUnit": {
            "title": "Time unit",
            "enum": [
              "date",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Granularity of the click trend series (daily, weekly or monthly). Keyword rankings always cover the whole period.",
            "default": "date"
          },
          "device": {
            "title": "Device",
            "enum": [
              "all",
              "pc",
              "mo"
            ],
            "type": "string",
            "description": "Only count searches from this device type.",
            "default": "all"
          },
          "gender": {
            "title": "Gender",
            "enum": [
              "all",
              "f",
              "m"
            ],
            "type": "string",
            "description": "Only count searches from this gender.",
            "default": "all"
          },
          "ages": {
            "title": "Age groups",
            "type": "array",
            "description": "Only count searches from these age groups. Leave empty for all ages.",
            "items": {
              "type": "string",
              "enum": [
                "10",
                "20",
                "30",
                "40",
                "50",
                "60"
              ],
              "enumTitles": [
                "10s",
                "20s",
                "30s",
                "40s",
                "50s",
                "60 and over"
              ]
            },
            "default": []
          },
          "maxRank": {
            "title": "Keywords per category",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "How many top keywords to return per category (DataLab shows up to 500). Each keyword row is one charged event, so this sets the cost. Set 0 to skip rankings and collect trends only.",
            "default": 100
          },
          "compareWithPreviousPeriod": {
            "title": "Compare with previous period",
            "type": "boolean",
            "description": "Also fetch the rankings for the equally long period just before your range and add previousRank, rankChange and rankTrend (up, down, same, new) to every keyword row. Doubles the number of requests but not the price.",
            "default": false
          },
          "includeTrend": {
            "title": "Include click trend",
            "type": "boolean",
            "description": "Add one row per category with the DataLab click trend series [{period, ratio}] for the period and filters. Charged as one trend-series event per category.",
            "default": false
          },
          "includeAudienceBreakdown": {
            "title": "Include audience breakdown in trend rows",
            "type": "boolean",
            "description": "When the click trend is on, also add device, gender and age shares for the category (3 extra requests per category, no extra charge).",
            "default": true
          },
          "listCategories": {
            "title": "List categories (helper mode)",
            "type": "boolean",
            "description": "Instead of rankings, output the subcategories of each entry in Shopping categories (or the top level if empty) with their IDs and paths. Free of charge.",
            "default": false
          },
          "listDepth": {
            "title": "Levels to list",
            "minimum": 1,
            "maximum": 2,
            "type": "integer",
            "description": "How many levels below each parent to list in category browser mode (1 or 2).",
            "default": 1
          },
          "maxConcurrency": {
            "title": "Categories in parallel",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many categories are processed at the same time. All requests still share the rate limit below.",
            "default": 2
          },
          "maxRequestsPerSecond": {
            "title": "Max requests per second",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "Polite rate limit for DataLab requests across the whole run. A full 500-keyword ranking needs 25 requests per category. Failed requests (429 or 5xx) are retried with exponential backoff.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. DataLab works without a proxy; enable one if your runs get rate limited."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}