{
  "openapi": "3.0.1",
  "info": {
    "title": "Taiwan Real Estate Actual Price Registration — 實價登錄 API",
    "description": "Every property deal Taiwan's Ministry of the Interior registers: sales, presale contracts and leases, with price, area, floor, layout, age and parking, normalized to JSON with ping and per-ping prices. All 22 cities, quarterly batches back to 2012.",
    "version": "0.1",
    "x-build-id": "QEikPtNMZHlfMeZeo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/chamarix~taiwan-real-estate-transactions/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-chamarix-taiwan-real-estate-transactions",
        "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/chamarix~taiwan-real-estate-transactions/runs": {
      "post": {
        "operationId": "runs-sync-chamarix-taiwan-real-estate-transactions",
        "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/chamarix~taiwan-real-estate-transactions/run-sync": {
      "post": {
        "operationId": "run-sync-chamarix-taiwan-real-estate-transactions",
        "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": {
          "recordTypes": {
            "title": "Record types",
            "type": "array",
            "description": "The register is published as three separate books and they do not share columns. SALE is completed transfers of land and buildings, PRESALE is contracts on units that are not built yet (with the project's name attached), RENT is leases (with the term, furnishings and equipment attached). Season 115S2 held 75,399 sales, 8,571 presale contracts and 47,610 leases.",
            "items": {
              "type": "string",
              "enum": [
                "SALE",
                "PRESALE",
                "RENT"
              ],
              "enumTitles": [
                "SALE — 買賣 (completed sales)",
                "PRESALE — 預售屋 (presale contracts)",
                "RENT — 租賃 (leases)"
              ]
            },
            "default": [
              "SALE"
            ]
          },
          "seasons": {
            "title": "Seasons (ROC quarters)",
            "type": "array",
            "description": "Quarterly batches to download, written the Ministry's way: 115S2 is the second quarter of ROC year 115, i.e. 2026. A season is cut by registration date, not transaction date — 115S2 holds sales registered 2026-03-11 to 2026-06-10, whose transactions happened weeks to months earlier. Leave empty for the newest published season. The register opened on 2012-08-01, inside 101S3; eight seasons is the per-run ceiling.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeLatest": {
            "title": "Also fetch the ten-day increment",
            "type": "boolean",
            "description": "The Ministry publishes a small top-up batch three times a month, ahead of the quarterly archive. Turn this on to add the registrations made since the last quarter closed — around 2 MB against a season's 14 MB. Combined with a season it can repeat a record, so de-duplicate on serial_number.",
            "default": false
          },
          "cities": {
            "title": "Cities and counties",
            "type": "array",
            "description": "Chinese names, e.g. ['臺北市', '新北市']. 台 is accepted in place of 臺. Leave empty for all 22. Each city is a separate file inside the archive, so narrowing this genuinely saves work.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "districts": {
            "title": "Districts filter",
            "type": "array",
            "description": "Keep only these 鄉鎮市區, e.g. ['大安區', '信義區']. Matched exactly against the Ministry's own spelling.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "transactionDateFrom": {
            "title": "Transaction date from (YYYY-MM-DD)",
            "pattern": "^(|\\d{4}[-/]?\\d{2}[-/]?\\d{2})$",
            "type": "string",
            "description": "Keep only records transacted on or after this date. This filters what a season contains; it does not choose which seasons to download. A season's transactions cluster in the two to three months before its registration window, and a few reach back decades.",
            "default": ""
          },
          "transactionDateTo": {
            "title": "Transaction date to (YYYY-MM-DD)",
            "pattern": "^(|\\d{4}[-/]?\\d{2}[-/]?\\d{2})$",
            "type": "string",
            "description": "Keep only records transacted on or before this date, inclusive.",
            "default": ""
          },
          "propertyKinds": {
            "title": "Property kinds filter",
            "type": "array",
            "description": "Keep only these 交易標的. Sales and presale contracts use 房地(土地+建物)+車位, 房地(土地+建物), 土地, 車位 and 建物 — in season 115S2's sales they ran 30,957 / 26,251 / 16,727 / 1,036 / 428, so filtering to the two 房地 kinds is the usual way to get residential deals without bare land and lone parking bays. Leases use a different set: 租賃房屋, 租賃房屋+車位, 土地, 車位.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "buildingTypes": {
            "title": "Building types filter",
            "type": "array",
            "description": "Keep only these 建物型態: 住宅大樓(11層含以上有電梯), 華廈(10層含以下有電梯), 公寓(5樓含以下無電梯), 透天厝, 套房(1房1廳1衛), 廠辦, 辦公商業大樓, 店面(店鋪), 工廠, 倉庫, 農舍, 其他.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minTotalPrice": {
            "title": "Minimum total price (NTD)",
            "type": "integer",
            "description": "Keep only records at or above this total price. For leases this is the monthly rent, which is a different order of magnitude."
          },
          "maxTotalPrice": {
            "title": "Maximum total price (NTD)",
            "type": "integer",
            "description": "Keep only records at or below this total price."
          },
          "excludeNoteFlags": {
            "title": "Exclude notes containing",
            "type": "array",
            "description": "Drop any record whose 備註 contains one of these phrases. The registrar picks most notes from a standard list, so this is the practical way to strip prices that are not market prices: ['親友、員工、共有人或其他特殊關係間之交易'] removes related-party deals, and in season 115S2 those 679 Taipei residential deals had a median of NT$555,980 per ping against NT$847,385 for the 3,995 arm's-length ones. Other useful ones are 僅車位交易, 協議價購 and 政府機關標讓售.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Include itemised land, building and parking rows",
            "type": "boolean",
            "description": "Attach the register's detail files: every land parcel with its number and ownership share, every registered building layer with its own age and area, and every parking bay with its price and floor. It also turns on a cross-check — the itemised areas are summed and compared against the summary row, and the result is reported per record in detail_check. Records get noticeably larger.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum records",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many records. A single season's sales across all 22 cities is about 75,000 records, so the default keeps an exploratory run small. Set 0 for no limit. Records are read city by city in the Ministry's own order, so a low limit returns whole cities rather than a sample of all of them.",
            "default": 5000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}