{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver Blog & Cafe Scraper",
    "description": "Scrapes Naver Blog and Cafe posts with full content, comments, metadata, and engagement metrics. Supports keyword search and direct URL scraping.",
    "version": "1.0",
    "x-build-id": "LUMNbRNN3dHcC1aFf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/huggable_quote~naver-blog-cafe-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-huggable_quote-naver-blog-cafe-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/huggable_quote~naver-blog-cafe-scraper/runs": {
      "post": {
        "operationId": "runs-sync-huggable_quote-naver-blog-cafe-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/huggable_quote~naver-blog-cafe-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-huggable_quote-naver-blog-cafe-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",
        "properties": {
          "searchKeywords": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Keywords to search for on Naver Blog and Cafe. Each keyword will be searched separately.",
            "items": {
              "type": "string"
            }
          },
          "directUrls": {
            "title": "Direct URLs",
            "type": "array",
            "description": "Naver Blog or Cafe post URLs to scrape. You can also give a blog home URL (e.g. https://blog.naver.com/<blogId>, optionally with ?categoryNo=<n>), a cafe home URL (e.g. https://cafe.naver.com/<cafe>) or a cafe board URL (e.g. https://cafe.naver.com/f-e/cafes/<id>/menus/<boardId>) to collect that blog's, cafe's or board's most recent posts, up to Max Results.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search Type",
            "enum": [
              "blog",
              "cafe",
              "both"
            ],
            "type": "string",
            "description": "Which Naver service to search.",
            "default": "both"
          },
          "maxResults": {
            "title": "Max Results Per Keyword / Blog / Cafe",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of search results per keyword per search type (blog/cafe), and the maximum number of recent posts collected per blog or cafe home/board URL. For example, with 2 keywords and searchType 'both', up to maxResults × 2 × 2 posts may be returned. Max 1000.",
            "default": 30
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "sim",
              "date"
            ],
            "type": "string",
            "description": "How to sort search results. Note: with 'sim' (relevance), Naver's API returns mostly posts from non-Naver blog platforms, which this actor filters out - runs page deeper and take longer for the same number of posts. 'date' returns almost exclusively Naver posts and is faster.",
            "default": "sim"
          },
          "dateFrom": {
            "title": "Posted From",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only keep posts published on or after this day (Korea time). Either a date (YYYY-MM-DD) or a period back from today, e.g. \"7 days\" or \"2 weeks\". Applies to keyword searches and to blog/cafe home URLs; individual post URLs are always scraped. Blog search results are filtered before scraping (with sortBy \"date\" the search stops at the first older post); cafe search results carry no date, so they are filtered after scraping and may number fewer than Max Results."
          },
          "dateTo": {
            "title": "Posted To",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only keep posts published on or before this day (Korea time). Same formats and scope as Posted From."
          },
          "scrapeContent": {
            "title": "Scrape Full Content",
            "type": "boolean",
            "description": "Whether to visit each post URL and scrape full content. If false, only search result data is returned.",
            "default": true
          },
          "scrapeComments": {
            "title": "Scrape Comments",
            "type": "boolean",
            "description": "Whether to scrape comments from each post. Requires 'Scrape Full Content' to be enabled.",
            "default": true
          },
          "skipMembersOnlyPosts": {
            "title": "Skip Members-Only Cafe Posts",
            "type": "boolean",
            "description": "Members-only cafe posts cannot be read, so they come back with title, author, date and counts only (no body). Turn this on to leave them out and fill Max Results with readable posts instead (keyword searches and cafe home/board URLs; individual post URLs are always returned). Requires Scrape Full Content.",
            "default": false
          },
          "scrapeBlogCommentsViaBrowser": {
            "title": "Scrape Blog Comments via Browser (slower)",
            "type": "boolean",
            "description": "Naver blocks blog comments from non-browser HTTP clients, so they cannot be scraped over plain HTTP. Enable this to render each blog post's comments in a real headless browser (Playwright). Only affects blog posts whose comments could not be fetched otherwise. WARNING: makes runs significantly slower and more resource-intensive — set the run's memory to at least 2048 MB when enabling this. Cafe comments are unaffected (they already work without a browser).",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings for web scraping. Recommended for large-scale scraping."
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of pages to scrape concurrently.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}