{
  "openapi": "3.0.1",
  "info": {
    "title": "Realtor.com Market Data Scraper — Hotness, Forecast, Schools",
    "description": "Extract US housing market data from Realtor.com map layers: ZIP market hotness scores, 12-month price forecasts, days-on-market and home-value heatmaps, parcel-level estimates, flood and wildfire climate risk, school ratings. One query per metro returns hundreds of analyst-ready rows.",
    "version": "1.0",
    "x-build-id": "sioXJLdZKlvSCqtvT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~realtor-market-analytics-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-realtor-market-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~realtor-market-analytics-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-realtor-market-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~realtor-market-analytics-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-realtor-market-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",
        "required": [
          "locations"
        ],
        "properties": {
          "locations": {
            "title": "📍 Locations",
            "uniqueItems": true,
            "type": "array",
            "description": "US locations to analyze — ZIP code (`78704`), city (`Austin, TX`), neighborhood, county, or full address. Each location is resolved server-side and every selected layer is fetched for it. **FREE tier:** 1 location per run.",
            "default": [
              "Austin, TX"
            ],
            "items": {
              "type": "string"
            }
          },
          "layers": {
            "title": "🗂️ Market data layers",
            "uniqueItems": true,
            "type": "array",
            "description": "Which map-data layers to fetch per location. **ZIP metrics:** MarketHotness (hotness score + label per ZIP), HousingForecast (12-month forecast $ and %). **Heatmap cells (~4,500/ZIP query):** Estimate, EstimatePpsqft, Sqft, YearBuilt, LotAcres, LotSlope, Noise, DaysOnMarket, SoldPriceVsListPrice, SoldSqft. **Climate rasters (PNG overlays):** Flood, Wildfire, Heat, Wind, Air. **Records:** Schools (ratings + contacts), Neighborhoods (names + region IDs). **FREE tier:** up to 3 layers per run.",
            "items": {
              "type": "string",
              "enum": [
                "MarketHotness",
                "HousingForecast",
                "DaysOnMarket",
                "Estimate",
                "EstimatePpsqft",
                "Sqft",
                "YearBuilt",
                "LotAcres",
                "LotSlope",
                "Noise",
                "SoldPriceVsListPrice",
                "SoldSqft",
                "Neighborhoods",
                "Schools",
                "Flood",
                "Wildfire",
                "Heat",
                "Wind",
                "Air"
              ],
              "enumTitles": [
                "Market Hotness (score per ZIP)",
                "Housing Forecast (12-month $ + % per ZIP)",
                "Days on Market (heatmap cells)",
                "Home Value Estimate (heatmap cells)",
                "Estimate $/sqft (heatmap cells)",
                "Home Size sqft (heatmap cells)",
                "Year Built (heatmap cells)",
                "Lot Acres (heatmap cells)",
                "Lot Slope (heatmap cells)",
                "Noise Score (heatmap cells)",
                "Sold vs List Price (heatmap cells)",
                "Sold $/sqft (heatmap cells)",
                "Neighborhoods (names + region IDs)",
                "Schools (ratings + contacts)",
                "Flood Risk (raster overlay)",
                "Wildfire Risk (raster overlay)",
                "Heat Risk (raster overlay)",
                "Wind Risk (raster overlay)",
                "Air Quality (raster overlay)"
              ]
            },
            "default": [
              "MarketHotness",
              "HousingForecast",
              "DaysOnMarket"
            ]
          },
          "zoom": {
            "title": "🔎 Zoom level",
            "minimum": 3,
            "maximum": 16,
            "type": "integer",
            "description": "Optional map zoom (3–16). Leave empty for each layer's sensible default. **Zoom 15–16 on heatmap layers switches to parcel resolution** — per-parcel value estimates plus the property IDs behind every cell (PAID tier, billed as parcel queries)."
          },
          "relativeYear": {
            "title": "🌡️ Climate projection horizon",
            "enum": [
              "0",
              "15",
              "30"
            ],
            "type": "string",
            "description": "Projection horizon for climate raster layers (Flood, Wildfire, Heat, Wind, Air): 0 = today, 15 = +15 years, 30 = +30 years. Ignored by non-climate layers.",
            "default": "0"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}