{
  "description": "Search 99acres sale and rent listings by city, BHK, property type, locality, and price.",
  "properties": {
    "bedrooms": {
      "default": "",
      "description": "Number of bedrooms. Choose '5+' for five or more.",
      "editor": "select",
      "enum": [
        "",
        "1",
        "2",
        "3",
        "4",
        "5+"
      ],
      "enumTitles": [
        "Any",
        "1 BHK",
        "2 BHK",
        "3 BHK",
        "4 BHK",
        "5+ BHK"
      ],
      "prefill": "2",
      "title": "Bedrooms (BHK)",
      "type": "string"
    },
    "city": {
      "default": "Delhi",
      "description": "Indian city to search in.",
      "editor": "select",
      "enum": [
        "Delhi",
        "Mumbai",
        "Bangalore",
        "Hyderabad",
        "Chennai",
        "Kolkata",
        "Pune",
        "Ahmedabad",
        "Jaipur",
        "Noida",
        "Gurugram",
        "Navi Mumbai",
        "Thane",
        "Ghaziabad",
        "Faridabad",
        "Lucknow",
        "Surat",
        "Indore",
        "Bhopal",
        "Nagpur",
        "Vadodara",
        "Chandigarh",
        "Coimbatore",
        "Kochi",
        "Visakhapatnam"
      ],
      "enumTitles": [
        "Delhi",
        "Mumbai",
        "Bangalore",
        "Hyderabad",
        "Chennai",
        "Kolkata",
        "Pune",
        "Ahmedabad",
        "Jaipur",
        "Noida",
        "Gurugram",
        "Navi Mumbai",
        "Thane",
        "Ghaziabad",
        "Faridabad",
        "Lucknow",
        "Surat",
        "Indore",
        "Bhopal",
        "Nagpur",
        "Vadodara",
        "Chandigarh",
        "Coimbatore",
        "Kochi",
        "Visakhapatnam"
      ],
      "prefill": "Noida",
      "title": "City",
      "type": "string"
    },
    "furnishing": {
      "default": "",
      "description": "Filter by furnishing status.",
      "editor": "select",
      "enum": [
        "",
        "Furnished",
        "Unfurnished",
        "Semi-furnished"
      ],
      "enumTitles": [
        "Any",
        "Furnished",
        "Unfurnished",
        "Semi-furnished"
      ],
      "prefill": "",
      "title": "Furnishing",
      "type": "string"
    },
    "includeDetails": {
      "default": false,
      "description": "Fetch each property's detail page for RERA numbers, amenity labels, carpet area, floor, furnishing details, and coordinates. Off by default because it adds one residential request per property.",
      "prefill": false,
      "title": "Include detail-page enrichment",
      "type": "boolean"
    },
    "includeProjects": {
      "default": true,
      "description": "Include new-launch project cards alongside individual listings. Project rows have recordType 'project'.",
      "prefill": false,
      "title": "Include new-launch projects",
      "type": "boolean"
    },
    "localities": {
      "description": "Optional list of locality names; each is resolved to a 99acres locality ID.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Localities (multiple)",
      "type": "array"
    },
    "locality": {
      "description": "Optional locality or sector name within the city, e.g. 'Sector 43'. The actor looks up the 99acres locality ID.",
      "editor": "textfield",
      "title": "Locality",
      "type": "string"
    },
    "maxItems": {
      "default": 50,
      "description": "Maximum number of property and project records to return.",
      "maximum": 1000,
      "minimum": 1,
      "prefill": 3,
      "title": "Max items",
      "type": "integer"
    },
    "mode": {
      "default": "searchForSale",
      "description": "Search properties for sale or for rent.",
      "editor": "select",
      "enumSuggestedValues": [
        "searchForSale",
        "searchForRent"
      ],
      "enumTitles": [
        "For sale",
        "For rent"
      ],
      "prefill": "searchForRent",
      "title": "Listing type",
      "type": "string"
    },
    "priceMax": {
      "description": "Maximum price in Indian Rupees. Applied while scanning pages because 99acres ignores price query parameters.",
      "maximum": 999999999,
      "minimum": 0,
      "title": "Max price (INR)",
      "type": "integer"
    },
    "priceMin": {
      "description": "Minimum price in Indian Rupees. Applied while scanning pages because 99acres ignores price query parameters.",
      "maximum": 999999999,
      "minimum": 0,
      "title": "Min price (INR)",
      "type": "integer"
    },
    "propertyType": {
      "default": "Residential Apartment",
      "description": "Residential property type to search for.",
      "editor": "select",
      "enumSuggestedValues": [
        "Residential Apartment",
        "Independent House",
        "Villa",
        "Residential Plot",
        "Independent Floor",
        "Studio Apartment",
        "Farm House"
      ],
      "enumTitles": [
        "Residential apartment",
        "Independent house",
        "Villa",
        "Residential plot / land",
        "Independent / builder floor",
        "Studio apartment",
        "Farm house"
      ],
      "prefill": "Residential Apartment",
      "title": "Property type",
      "type": "string"
    },
    "searchUrls": {
      "description": "Optional 99acres search URLs: /property-in-<city>-ffid?... or /<n>-bhk-flats-in-<city>-ffid?... When provided, city and filter fields are ignored.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Search URLs",
      "type": "array"
    },
    "sortBy": {
      "default": "relevance",
      "description": "Result order. 'Newest' is 99acres' recently-updated order (updatedAt), not the original posting date (postedAt).",
      "editor": "select",
      "enum": [
        "relevance",
        "newest"
      ],
      "enumTitles": [
        "Relevance",
        "Newest first"
      ],
      "prefill": "relevance",
      "title": "Sort by",
      "type": "string"
    }
  },
  "required": [
    "mode",
    "city"
  ],
  "schemaVersion": 1,
  "title": "99acres Scraper Input",
  "type": "object"
}
