{
  "openapi": "3.0.1",
  "info": {
    "title": "DC Inside Scraper",
    "description": "Collect public posts and comment threads from major, minor, and mini DC Inside galleries by feed, gallery search, or direct URL, with nested or flat results and separate coverage audits.",
    "version": "0.0",
    "x-build-id": "oPQxOh8bAyh5drexP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/research_master~dc-inside-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-research_master-dc-inside-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/research_master~dc-inside-scraper/runs": {
      "post": {
        "operationId": "runs-sync-research_master-dc-inside-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/research_master~dc-inside-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-research_master-dc-inside-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": {
          "startUrls": {
            "title": "Gallery or post URLs",
            "type": "array",
            "description": "Add public gall.dcinside.com list or post URLs. List URLs are paginated; direct post URLs are collected once.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "galleryIds": {
            "title": "Gallery IDs",
            "type": "array",
            "description": "Add gallery IDs without a URL, such as programming. The selected gallery type below is applied to every ID.",
            "items": {
              "type": "string"
            }
          },
          "galleryType": {
            "title": "Gallery type for gallery IDs",
            "enum": [
              "major",
              "minor",
              "mini"
            ],
            "type": "string",
            "description": "Choose the URL family used for gallery IDs. Full URLs above determine their own type.",
            "default": "major"
          },
          "searchQueries": {
            "title": "Search terms inside galleries",
            "type": "array",
            "description": "Search post titles and bodies within each gallery. Direct post URLs ignore this setting.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Gallery feed",
            "enum": [
              "latest",
              "recommended"
            ],
            "type": "string",
            "description": "Collect the latest feed or the gallery's recommended-post feed.",
            "default": "latest"
          },
          "dateFrom": {
            "title": "Posts from date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Keep posts on or after this date."
          },
          "dateTo": {
            "title": "Posts through date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Keep posts on or before this date."
          },
          "maxPosts": {
            "title": "Maximum posts",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum unique posts saved across the whole run.",
            "default": 20
          },
          "startPage": {
            "title": "First gallery page",
            "minimum": 1,
            "type": "integer",
            "description": "First page number for gallery-list targets.",
            "default": 1
          },
          "maxPagesPerTarget": {
            "title": "Maximum pages per gallery target",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard pagination limit for each gallery feed or gallery search.",
            "default": 10
          },
          "scrapeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Collect public comments and replies for each successfully parsed post.",
            "default": true
          },
          "maxCommentsPerPost": {
            "title": "Maximum comments per post",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many comments per post. Use 0 for all available comments.",
            "default": 100
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "nested",
              "flat",
              "postsOnly"
            ],
            "type": "string",
            "description": "Nested saves one row per post with comments inside. Flat saves one post row plus one row per collected comment. Posts only skips comments.",
            "default": "nested"
          },
          "includeHtml": {
            "title": "Include post body HTML",
            "type": "boolean",
            "description": "Keep sanitized inner HTML alongside plain text for downstream media or formatting analysis.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Use Apify Proxy or your own proxy URLs. Disabling the proxy may cause timeouts or blocked pages.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "KR"
            }
          },
          "requestDelayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Minimum pause between requests from each worker.",
            "default": 700
          },
          "maxConcurrency": {
            "title": "Maximum concurrent post workers",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Lower concurrency is gentler and often more reliable on DC Inside.",
            "default": 2
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 10,
            "maximum": 120,
            "type": "integer",
            "description": "Maximum time for one HTTP request before retrying.",
            "default": 45
          },
          "maxRetries": {
            "title": "Maximum retries per request",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Retry blocked, timed out, or server-error responses with a fresh proxy session.",
            "default": 3
          },
          "debugMode": {
            "title": "Debug logging",
            "type": "boolean",
            "description": "Log sanitized request and parser diagnostics without response bodies or credentials.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}