{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver Blog Rank Tracker (네이버 블로그 순위)",
    "description": "Enter keywords and your Naver blog IDs or post URLs; get each blog's or post's rank in the Naver Blog search tab (top 30 by default, up to 1,000), with rank change since your last run. Optional full ranked list.",
    "version": "0.1",
    "x-build-id": "73OK1UfbCfbkQHbpz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/magenta_courser~naver-blog-rank-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-magenta_courser-naver-blog-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-blog-rank-tracker/runs": {
      "post": {
        "operationId": "runs-sync-magenta_courser-naver-blog-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-blog-rank-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-magenta_courser-naver-blog-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 in the Naver Blog search tab (search.naver.com, 블로그 tab), one per line, typed as a Korean user would. You can also paste a Naver search URL; its query is used. Examples: 강남 맛집 (Gangnam restaurants), 제주 카페 (Jeju cafe), 올리브영 선크림. Each keyword is one search and one charged keyword check (per started 100 ranks); keywords that fail are free.",
            "items": {
              "type": "string"
            }
          },
          "myBlogs": {
            "title": "My blogs or posts",
            "type": "array",
            "description": "Your blogs or posts to find, one per line: a Naver blog ID (myblog123), a blog URL (https://blog.naver.com/myblog123) or a post URL (https://blog.naver.com/myblog123/223456789012; m.blog.naver.com and PostView links work too). A blog ID or blog URL matches any post of that blog (best rank wins); a post URL matches that post only. External blogs that appear in the tab, such as Tistory, can be given by URL. For each keyword you get one row per entry (type = myBlogRank). Leave empty to get only the ranked list.",
            "items": {
              "type": "string"
            }
          },
          "maxRank": {
            "title": "Max rank",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How deep to look: ranks 1 to maxRank of the blog tab (30 per request). Default 30 (about what a person scrolls). Naver's blog tab stops at about 1,000 results, so 1,000 is the maximum. One keyword check covers up to 100 ranks actually read; deeper scans count one check per started 100 ranks (a recent-order scan to 300 = 3 checks). Relevance order ends near rank 70 on Naver, so it is always one check.",
            "default": 30
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relevance",
              "recent"
            ],
            "type": "string",
            "description": "relevance = the order Naver shows by default in the blog tab (what rank tracking usually means). recent = newest first.",
            "default": "relevance"
          },
          "includeTopList": {
            "title": "Include the ranked list",
            "type": "boolean",
            "description": "Also return every post in ranks 1 to maxRank (type = rankedPost: rank, title, post URL, blog ID, published date, rank change, isMine). Each row of this list is charged as one ranked-post event. Default false.",
            "default": false
          },
          "compareWithLastRun": {
            "title": "Compare with last run",
            "type": "boolean",
            "description": "Add previousRank, rankChange (positive = moved up) and isNewEntry, compared with the last completed run of the same keyword and sort. The ranks are kept in a named key-value store in your account, so scheduled daily runs line up automatically.",
            "default": true
          },
          "historyStoreName": {
            "title": "History store name",
            "type": "string",
            "description": "Named key-value store that keeps the last ranks per keyword and sort. Use a different name for each separate tracking project (letters, digits and hyphens, max 63 characters).",
            "default": "naver-blog-rank-history"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "The default Apify datacenter proxy works for Naver blog search. Switch to RESIDENTIAL with country KR only if the log shows repeated request errors.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxRequests": {
            "title": "Max requests per run",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Optional. Upper limit on HTTP requests for the whole run, retries included. Default: twice the pages needed + 5. When it is used up the run stops and keeps what it saved."
          },
          "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. It also stops after 10 failed requests in a row."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}