{
  "openapi": "3.0.1",
  "info": {
    "title": "HAR.com Texas Real Estate Scraper",
    "description": "Scrape HAR.com, the largest Texas MLS portal: homes for sale, for rent and sold across Houston, Dallas, Austin & San Antonio, with price, beds, baths, sqft, MLS# and listing agent. Plus 127,000+ HAR agents with email, delivered instantly by city or zip. JSON/CSV out.",
    "version": "0.0",
    "x-build-id": "42j03zVybHG5OAgiS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~har-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-har-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/memo23~har-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-har-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/memo23~har-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-har-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": {
          "listingType": {
            "title": "Listing type",
            "enum": [
              "sale",
              "rent",
              "sold",
              "agents"
            ],
            "type": "string",
            "description": "Homes for sale, homes for rent, recently sold/leased transactions, or real-estate agents. Sold data comes from agents' closed-deal history (final sold price + date). Agents mode returns the HAR agent directory (name, email, phone, rating, office) for the locations below.",
            "default": "sale"
          },
          "locations": {
            "title": "Locations (city, area, or zip)",
            "type": "array",
            "description": "Texas locations to search — a city (\"Houston\"), area (\"Sugar Land\"), or 5-digit zip code (\"78701\"). Zips search by zip code, everything else by city. One search is run per location. Leave empty if you are pasting HAR.com URLs below instead.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "HAR.com URLs (optional)",
            "type": "array",
            "description": "Paste HAR.com URLs — search-result pages (e.g. https://www.har.com/houston/realestate/for_sale or .../for_rent), map/area searches (draw an area on HAR's map, apply filters, then copy the browser URL), or individual property pages (https://www.har.com/homedetail/...). Any filters already in the URL (price, beds, property type, map bounds, acreage) are applied automatically. Property pages are fetched individually.",
            "items": {
              "type": "string"
            }
          },
          "addresses": {
            "title": "Street addresses to look up (optional)",
            "type": "array",
            "description": "Look up specific properties by street address — on OR off market. Each returns a full property record: appraisal value, multi-source valuations (AVM), tax, parcel number (APN), schools, and whether it's currently listed. Use the street portion only, e.g. \"3540 Topeka St\" (do not append city/state/zip).",
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Include full property detail (schools, tax, description, mortgage estimate)",
            "type": "boolean",
            "description": "Fetch each property's detail record to add schools, tax breakdown, a full description and an estimated monthly payment. Adds one API call per listing.",
            "default": false
          },
          "includeAvm": {
            "title": "Include home valuation (AVM + appraisal value)",
            "type": "boolean",
            "description": "Attach an automated valuation to each property — the appraisal-district value, an AVM estimate and price per square foot. Adds one API call per listing.",
            "default": false
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest list price (for sale) or monthly rent (for rent)."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Highest list price (for sale) or monthly rent (for rent)."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Restrict to specific property types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "single-family",
                "townhouse-condo",
                "lots",
                "multi-family",
                "acreage",
                "mid-hi-rise-condo"
              ],
              "enumTitles": [
                "Single-Family",
                "Townhouse / Condo",
                "Residential Lots",
                "Multi-Family",
                "Country Homes / Acreage",
                "Mid / High-Rise Condo"
              ]
            }
          },
          "minBeds": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of bedrooms."
          },
          "maxBeds": {
            "title": "Maximum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of bedrooms."
          },
          "minBaths": {
            "title": "Minimum full bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of full bathrooms."
          },
          "maxBaths": {
            "title": "Maximum full bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of full bathrooms."
          },
          "hasHalfBath": {
            "title": "Require a half bathroom",
            "type": "boolean",
            "description": "Only return properties that have at least one half bathroom.",
            "default": false
          },
          "minSqft": {
            "title": "Minimum square feet",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum living area in square feet."
          },
          "maxSqft": {
            "title": "Maximum square feet",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum living area in square feet."
          },
          "minPricePerSqft": {
            "title": "Minimum price per sqft",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price per square foot."
          },
          "maxPricePerSqft": {
            "title": "Maximum price per sqft",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price per square foot."
          },
          "minLotSize": {
            "title": "Minimum lot size (sqft)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum lot size in square feet."
          },
          "maxLotSize": {
            "title": "Maximum lot size (sqft)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum lot size in square feet."
          },
          "newConstruction": {
            "title": "New construction only",
            "type": "boolean",
            "description": "Only return newly-built homes.",
            "default": false
          },
          "hasPool": {
            "title": "Has a private pool",
            "type": "boolean",
            "description": "Only return homes with a private pool.",
            "default": false
          },
          "priceReduced": {
            "title": "Price reduced only",
            "type": "boolean",
            "description": "Only return homes with a recent price reduction.",
            "default": false
          },
          "hasOpenHouse": {
            "title": "Has an open house",
            "type": "boolean",
            "description": "Only return homes with a scheduled open house.",
            "default": false
          },
          "waterfront": {
            "title": "Waterfront only",
            "type": "boolean",
            "description": "Only return waterfront homes.",
            "default": false
          },
          "foreclosure": {
            "title": "Foreclosures only",
            "type": "boolean",
            "description": "Only return foreclosure / distressed properties.",
            "default": false
          },
          "maxHoaFee": {
            "title": "Maximum HOA / maintenance fee",
            "minimum": 0,
            "type": "integer",
            "description": "Highest monthly HOA / maintenance fee."
          },
          "minYearBuilt": {
            "title": "Minimum year built",
            "minimum": 1800,
            "type": "integer",
            "description": "Earliest construction year."
          },
          "maxYearBuilt": {
            "title": "Maximum year built",
            "minimum": 1800,
            "type": "integer",
            "description": "Latest construction year."
          },
          "extraFilters": {
            "title": "Advanced filters (raw HAR params)",
            "type": "object",
            "description": "Any other HAR filter, as raw param → value pairs. Covers the full 'More Filters' panel (waterfront view, on golf course, elevator, study room, energy-efficient, architectural style, financing type, etc.). Use the exact param names from a har.com search URL. Examples: {\"waterview\": \"1\", \"ongolfcourse\": \"1\", \"style\": \"Victorian\", \"garage_num\": \"2\"}."
          },
          "instantDatabase": {
            "title": "⚡ Instant delivery even with listing counts",
            "type": "boolean",
            "description": "Agents searches already come back instantly whenever the location's agents are collected. Turn this on to keep the instant delivery when 'Include agent listing counts' is also on (counts are then left out, since only a live pass computes them).",
            "default": false
          },
          "forceFresh": {
            "title": "Always scrape live",
            "type": "boolean",
            "description": "Skip the instant delivery and scrape every location live from HAR.com, even when its agents are already collected. Slower; use it when you need this minute’s directory.",
            "default": false
          },
          "agentName": {
            "title": "Agent name",
            "type": "string",
            "description": "Filter agents by name (first, last, or full)."
          },
          "minAgentRating": {
            "title": "Minimum agent rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only agents with at least this client rating (0–5)."
          },
          "platinumAgentsOnly": {
            "title": "Platinum agents only",
            "type": "boolean",
            "description": "Only HAR Platinum agents.",
            "default": false
          },
          "agentsWithEmailOnly": {
            "title": "Only agents with an email",
            "type": "boolean",
            "description": "Skip agents that have no email address (most have one).",
            "default": false
          },
          "includeAgentStats": {
            "title": "Include agent listing counts",
            "type": "boolean",
            "description": "Add each agent's active and sold listing counts (a productivity signal for lead qualification). Adds two extra API calls per agent, so it slows large runs.",
            "default": false
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "newest",
              "price-asc",
              "price-desc",
              "sqft-desc",
              "lotsize-desc",
              "year-desc",
              "address-asc",
              "subdivision-asc"
            ],
            "type": "string",
            "description": "Ordering of results. A sort already present in a pasted HAR.com URL takes precedence.",
            "default": "newest"
          },
          "maxSoldAgents": {
            "title": "Agents to crawl for sold data",
            "minimum": 1,
            "type": "integer",
            "description": "For 'Sold / leased' runs only: how many agents active in the searched area to pull closed-deal history from. More agents = more sold transactions, but slower. Ignored for sale/rent.",
            "default": 25
          },
          "maxItems": {
            "title": "Maximum items to scrape",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on the number of properties collected across all searches. Use this to control billing.",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of API calls processed in parallel.",
            "default": 10
          },
          "proxy": {
            "title": "Proxy configuration (optional override)",
            "type": "object",
            "description": "Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}