{
  "openapi": "3.0.1",
  "info": {
    "title": "Homes.com Scraper: For Sale, Rent, Sold & Agents [$1.50/1k]",
    "description": "Homes.com scraper for sale, rent and sold listings by city, county, ZIP, map area or URL. Price, beds, baths, sqft, photos, open houses, agent phone. Add agent emails, brokerage, year built, HOA, tax and price history, owner records. Agents mode, 30+ filters, new-listing alerts.",
    "version": "0.0",
    "x-build-id": "i8IxCeMOBb36kdYdW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~homes-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-homes-com-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~homes-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-homes-com-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~homes-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-homes-com-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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Places to search, one per line. Accepts a US city, county, borough, neighborhood or state (\"Austin, TX\", \"Brooklyn, NY\", \"Hudson County, NJ\", \"Texas\"), a 5-digit ZIP code (\"10001\"), or a map rectangle as JSON ({\"bb\":{\"tl\":{\"lt\":40.9,\"ln\":-74.1},\"br\":{\"lt\":40.5,\"ln\":-73.7}}}, tl = north-west corner, br = south-east corner). Cities and ZIP codes are searched inside their real boundary. Use this field, Homes.com URLs, or both; at least one entry is required.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Homes.com URLs",
            "type": "array",
            "description": "homes.com URLs to scrape. A search URL (e.g. https://www.homes.com/austin-tx/homes-for-rent/?bed-min=2) keeps its own filters: for sale / for rent / sold, property type paths (houses-for-sale, condos-for-rent, ...), open-houses, newest, price-reduced, foreclosure, short-sale, new homes, and the parameters price-min, price-max, bed-min, bed-max, bath, yb-min, kws (keyword) and so (sort). A property URL (https://www.homes.com/property/<address>/<id>/) returns that one listing. Agent, building and school pages are not supported. Default: empty.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "scrapeMode": {
            "title": "What to return",
            "enum": [
              "listings",
              "agents",
              "agentDirectory"
            ],
            "type": "string",
            "description": "What each row is. \"listings\" (default): one row per property. \"agents\": one row per listing agent found in the search, with name, email, phones, brokerage, license, bio and how many of the listings read are theirs, ranked most active first. Agents mode opens every listing's full page, so it is billed like full details for each listing read. \"agentDirectory\": every real estate agent in a city from homes.com's agent directory page (homes.com/real-estate-agents/{city}/), not just those with active listings. Pulled through a multi-lane web fetcher (harvester box first, then third-party unblockers); no listings read. Turn on \"Include agent profiles\" to also open each agent's profile page for license number, email and active listings.",
            "default": "listings"
          },
          "maxListingsToScan": {
            "title": "Agents mode: listings to read per location",
            "minimum": 1,
            "type": "integer",
            "description": "Agents mode only: how many listings to read in each location before ranking their agents. More listings give better counts and cost more, since each one is billed like full details. Example: 300. Default: 300.",
            "default": 300
          },
          "forceFresh": {
            "title": "Agents mode: always scan live",
            "type": "boolean",
            "description": "Agents mode answers a city or ZIP it has covered before in seconds, with the most active agents listing there. Turn this on to read the area's listings live instead. Filtered searches (price, beds, listing type and so on) always scan live.",
            "default": false
          },
          "includeAgentProfiles": {
            "title": "Agent directory: open each profile",
            "type": "boolean",
            "description": "Agent directory mode only: also open each agent's profile page (homes.com/real-estate-agents/{name}/{id}/) to add license number, email (when public) and active listing URLs. Costs one extra web fetch per agent. Default: false (listing-page fields only: name, phone, brokerage, city, profile URL, photo).",
            "default": false
          },
          "instantDatabase": {
            "title": "Use the instant database",
            "type": "boolean",
            "description": "Turn on to pull agents from the directory with the filters below. Setting a state, city or brokerage turns it on by itself.",
            "default": false
          },
          "dbState": {
            "title": "State (2-letter code)",
            "type": "string",
            "description": "Agents listing in this US state, e.g. TX, CA, NY. Leave empty for all states."
          },
          "dbCity": {
            "title": "City (optional)",
            "type": "string",
            "description": "Agents listing in this city, e.g. Houston (case-insensitive). Combine with State to avoid same-named cities."
          },
          "dbBrokerage": {
            "title": "Brokerage contains (optional)",
            "type": "string",
            "description": "Only agents whose brokerage name contains this text, e.g. \"Keller Williams\" or \"Compass\"."
          },
          "dbHasEmail": {
            "title": "Only agents with an email",
            "type": "boolean",
            "description": "Skip agents without an email address.",
            "default": false
          },
          "dbHasPhone": {
            "title": "Only agents with a phone",
            "type": "boolean",
            "description": "Skip agents without a phone number.",
            "default": false
          },
          "listingType": {
            "title": "Listing type",
            "enum": [
              "forSale",
              "forRent",
              "sold"
            ],
            "type": "string",
            "description": "Which listings to search: \"forSale\" (default), \"forRent\" (monthly rents, including apartment communities) or \"sold\" (recently sold homes, with sale dates). A homes.com URL that says /homes-for-rent/ or /sold/ overrides this for that URL.",
            "default": "forSale"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Only these property types. Values: house, townhouse, condo, coop, multiFamily, apartment, land, mobile. Example: [\"house\", \"townhouse\"]. Default: empty = all types.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "townhouse",
                "condo",
                "coop",
                "multiFamily",
                "apartment",
                "land",
                "mobile"
              ],
              "enumTitles": [
                "House",
                "Townhouse",
                "Condo",
                "Co-op",
                "Multi-family",
                "Apartment",
                "Land",
                "Mobile / manufactured"
              ]
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recommended",
              "newest",
              "priceLowToHigh",
              "priceHighToLow",
              "priceReduced",
              "sqftHighToLow",
              "bedsHighToLow",
              "pricePerSqft",
              "yearBuiltNewToOld",
              "lotSizeHighToLow",
              "openHouse"
            ],
            "type": "string",
            "description": "Order of the results: recommended (default, homes.com's order), newest, priceLowToHigh, priceHighToLow, priceReduced, sqftHighToLow, bedsHighToLow, pricePerSqft, yearBuiltNewToOld, lotSizeHighToLow or openHouse. Exact for the first 700 listings of each location.",
            "default": "recommended"
          },
          "minPrice": {
            "title": "Min price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in USD: asking price for sale, sold price for sold homes, monthly rent for rentals. Example: 300000 (or 1500 for rentals). Default: no minimum."
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in USD: asking price for sale, sold price for sold homes, monthly rent for rentals. Example: 900000 (or 3000 for rentals). Default: no maximum."
          },
          "minBeds": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest bedrooms. 0 includes studios. Example: 2. Default: no minimum."
          },
          "maxBeds": {
            "title": "Max bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Most bedrooms. Example: 4. Default: no maximum."
          },
          "minBaths": {
            "title": "Min bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest bathrooms. Example: 2. Default: no minimum."
          },
          "maxBaths": {
            "title": "Max bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Most bathrooms. Example: 3. Default: no maximum."
          },
          "minSqft": {
            "title": "Min square feet",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest living area in square feet. Example: 1500. Default: no minimum."
          },
          "maxSqft": {
            "title": "Max square feet",
            "minimum": 0,
            "type": "integer",
            "description": "Largest living area in square feet. Example: 3000. Default: no maximum."
          },
          "minLotAcres": {
            "title": "Min lot size (acres)",
            "minimum": 0,
            "type": "number",
            "description": "Smallest lot in acres (0.25 acres = about 10,900 sq ft). Example: 0.25. Default: no minimum."
          },
          "maxLotAcres": {
            "title": "Max lot size (acres)",
            "minimum": 0,
            "type": "number",
            "description": "Largest lot in acres. Example: 2. Default: no maximum."
          },
          "minYearBuilt": {
            "title": "Built in or after",
            "minimum": 1600,
            "type": "integer",
            "description": "Only homes built in or after this year. Example: 2000. Default: no minimum."
          },
          "maxYearBuilt": {
            "title": "Built in or before",
            "minimum": 1600,
            "type": "integer",
            "description": "Only homes built in or before this year. Example: 1980. Default: no maximum."
          },
          "maxHoaFee": {
            "title": "Max HOA fee (USD per month)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest HOA fee in USD per month. Example: 300. Default: any HOA fee."
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Words the listing must mention, as homes.com's keyword filter matches them. Example: \"pool\" or \"waterfront\". Default: empty = no keyword filter."
          },
          "daysOnMarket": {
            "title": "Days on market",
            "enum": [
              "any",
              "newListings",
              "lessThan3Days",
              "lessThan7Days",
              "lessThan14Days",
              "lessThan1Month",
              "lessThan3Months",
              "moreThan1Month",
              "moreThan3Months",
              "moreThan6Months",
              "moreThan1Year"
            ],
            "type": "string",
            "description": "How long the listing has been on homes.com. Values: any (default), newListings, lessThan3Days, lessThan7Days, lessThan14Days, lessThan1Month, lessThan3Months, moreThan1Month, moreThan3Months, moreThan6Months, moreThan1Year.",
            "default": "any"
          },
          "priceReduced": {
            "title": "Price reduced",
            "enum": [
              "any",
              "lastDay",
              "last3Days",
              "last7Days",
              "last14Days",
              "last30Days",
              "overOneMonth",
              "overThreeMonths"
            ],
            "type": "string",
            "description": "Only listings whose price dropped in this window. Values: any (default), lastDay, last3Days, last7Days, last14Days, last30Days, overOneMonth, overThreeMonths.",
            "default": "any"
          },
          "saleTypes": {
            "title": "Sale types",
            "type": "array",
            "description": "For-sale and sold searches only: kinds of sale to include. Values: resale, newConstruction, foreclosure, preForeclosure, shortSale, auction, bankOwned. Example: [\"foreclosure\", \"preForeclosure\"]. Default: empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "resale",
                "newConstruction",
                "foreclosure",
                "preForeclosure",
                "shortSale",
                "auction",
                "bankOwned"
              ],
              "enumTitles": [
                "Resale",
                "New construction",
                "Foreclosure",
                "Pre-foreclosure",
                "Short sale",
                "Auction",
                "Bank owned (REO)"
              ]
            }
          },
          "saleStatuses": {
            "title": "Sale statuses",
            "type": "array",
            "description": "For-sale searches only: listing statuses to include. Values: active, comingSoon, underContract, pending. Example: [\"pending\"]. Default: empty = homes.com's default (active and coming soon).",
            "items": {
              "type": "string",
              "enum": [
                "active",
                "comingSoon",
                "underContract",
                "pending"
              ],
              "enumTitles": [
                "Active",
                "Coming soon",
                "Under contract",
                "Pending"
              ]
            }
          },
          "soldWithin": {
            "title": "Sold within",
            "enum": [
              "any",
              "lastWeek",
              "lastMonth",
              "last3Months",
              "last6Months",
              "lastYear"
            ],
            "type": "string",
            "description": "Sold searches only: how recent the sale must be. Values: any (default), lastWeek, lastMonth, last3Months, last6Months, lastYear.",
            "default": "any"
          },
          "openHousesOnly": {
            "title": "Open houses only",
            "type": "boolean",
            "description": "true = only for-sale listings with an upcoming open house. Default: false.",
            "default": false
          },
          "with3dTour": {
            "title": "With 3D tour only",
            "type": "boolean",
            "description": "true = only listings that have a 3D tour. Default: false.",
            "default": false
          },
          "includeDetails": {
            "title": "Include full listing details",
            "type": "boolean",
            "description": "true = also open each listing's full page and add every photo, floor plans, 3D tours, agent email and license, brokerage name, phone and email, year built, HOA fee, annual tax, price history, tax history, MLS name and number, parcel id, days on market, schools, Walk/Transit/Bike scores and the MLS feature list. About 3 listings per second instead of 8. Charged as an extra per-listing event from 20 October 2026. Default: false.",
            "default": false
          },
          "includeOwnerRecords": {
            "title": "Include owner records",
            "type": "boolean",
            "description": "true = also add county deed and mortgage records: saleHistory (buyers, sellers, dates), mortgages (lenders, borrowers, amounts, rates) and currentOwners. Turns on full details. These are public records about private individuals; use them lawfully (for example not for unsolicited marketing where the law forbids it). Default: false.",
            "default": false
          },
          "onlyNewListings": {
            "title": "Only new listings",
            "type": "boolean",
            "description": "true = remember every listing this search returns and, on later runs of the same search, return only listings not returned before. The first run returns everything. Memory is kept in a key-value store named homes-com-scraper-monitor in your account. Not used in agents mode. Default: false.",
            "default": false
          },
          "includePriceChanges": {
            "title": "Also return price changes",
            "type": "boolean",
            "description": "With onlyNewListings on: true = also return listings returned before whose price changed since. Rows get changeType \"new\" or \"priceChange\". Default: false.",
            "default": false
          },
          "monitorName": {
            "title": "Search name",
            "type": "string",
            "description": "Optional name for the onlyNewListings memory. Runs with the same name share one memory even if other inputs change; without a name the memory is tied to the exact locations and filters. Example: \"austin-rentals\". Default: empty."
          },
          "maxItems": {
            "title": "Max results (total)",
            "minimum": 1,
            "type": "integer",
            "description": "Most rows to save in this run (listings, or agents in agents mode), across all locations and URLs. Example: 500. Default: 100.",
            "default": 100
          },
          "maxItemsPerLocation": {
            "title": "Max results per location",
            "minimum": 1,
            "type": "integer",
            "description": "Most rows to save from any one location or search URL; the total cap above still applies. Example: 200. Default: 100.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}