{
  "openapi": "3.0.1",
  "info": {
    "title": "Hogangnono Scraper — Korea Apartment Price Data & API",
    "description": "Scrape Hogangnono (호갱노노) Korean apartment-complex analytics — monthly avg/min/max prices, KB valuation, trade volume, real (실거래) trades, build specs, coordinates and reviews. One record per complex (단지), filterable by region. No account or API key needed. 아파트 실거래가·시세 데이터.",
    "version": "1.0",
    "x-build-id": "JNQiNebfEquE3WWc5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~hogangnono-apartment-analytics-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-hogangnono-apartment-analytics-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/sian.agency~hogangnono-apartment-analytics-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-hogangnono-apartment-analytics-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/sian.agency~hogangnono-apartment-analytics-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-hogangnono-apartment-analytics-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": {
          "scrapeMode": {
            "title": "⚙️ Scrape Mode",
            "enum": [
              "overview",
              "detail"
            ],
            "type": "string",
            "description": "⚙️ **Choose how much detail per complex:**\n\n- **Overview** (cheap, primary): one analytics record per apartment complex — KB valuation, household/floor/build specs, coordinates and resident reviews, plus the region's aggregate price-per-pyeong & trade-volume context. 1 request per complex.\n- **Detail** (enrich): everything in Overview **plus** the monthly price time-series (시세) — latest average / minimum / maximum price and monthly trade volume from the monthly-reports API. 2 requests per complex.\n\n💡 **TIP:** Start with Overview to map a region cheaply, then run Detail on the complexes you care about.",
            "default": "overview"
          },
          "regionCodes": {
            "title": "📍 Region Codes (시군구)",
            "uniqueItems": true,
            "type": "array",
            "description": "📍 **SEARCH BY REGION:** Korean district (시군구) codes to scrape. The actor fetches each region's ranked apartment complexes and extracts an analytics record per complex.\n\n**How to get a region code:** open the district on hogangnono.com and copy the number from the URL, e.g. `hogangnono.com/region/11680` → `11680` (강남구 / Gangnam-gu). You can paste either the bare code or the full `/region/<code>` URL.\n\n💡 **TIP:** Leave empty to use the default region (강남구 / Gangnam-gu).\n\n🔢 **TIER-BASED LIMITS:** FREE users up to 25 complexes per run · PAID users unlimited.",
            "default": [
              "11680"
            ],
            "items": {
              "type": "string"
            }
          },
          "aptHashes": {
            "title": "🏢 Apartment Complex IDs (optional)",
            "uniqueItems": true,
            "type": "array",
            "description": "🏢 **SCRAPE SPECIFIC COMPLEXES:** Hogangnono apartment-complex IDs (hashids). When set, the actor scrapes exactly these complexes and ignores Region Codes.\n\n**How to get a complex ID:** open a complex on hogangnono.com and copy the hash from the URL, e.g. `hogangnono.com/apt/bg4ed` → `bg4ed`. Paste either the bare hash or the full `/apt/<hash>` URL.",
            "items": {
              "type": "string"
            }
          },
          "tradeType": {
            "title": "💰 Trade Type",
            "enum": [
              "sale",
              "jeonse",
              "rent"
            ],
            "type": "string",
            "description": "💰 **Which transaction type the price time-series reflects** (Detail mode):\n\n- **Sale (매매)** — purchase price\n- **Jeonse (전세)** — lump-sum lease deposit\n- **Monthly Rent (월세)** — monthly rent",
            "default": "sale"
          },
          "maxResults": {
            "title": "🔢 Max Complexes",
            "minimum": 1,
            "type": "integer",
            "description": "🔢 **Maximum number of apartment-complex records to return.**\n\n💎 **TIER-BASED LIMITS:**\n- **FREE users:** up to 25 complexes per run\n- **PAID users:** unlimited\n\n💡 Lower this to cap your spend on a quick run.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}