{
  "openapi": "3.0.1",
  "info": {
    "title": "Zap Imóveis Scraper - Properties, Prices & 80+ Fields",
    "description": "Scrape Zap Imóveis sale, rental and new-development listings by city, filters or URL. Extract 80+ fields including prices, fees, addresses, GPS, agencies, CRECI, amenities, nearby POIs, scores, H3 location data and media.",
    "version": "1.0",
    "x-build-id": "8WAXj3hEF20O3s2sq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~zapimoveis-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-zapimoveis-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/abotapi~zapimoveis-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-zapimoveis-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/abotapi~zapimoveis-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-zapimoveis-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Search Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Pick how to find listings. 'search' uses the filter fields below. 'url' takes the listing URLs you paste and walks pagination forward.",
            "default": "search"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Places to search, one per line, typed as you would on the site: a city ('Sao Paulo, SP', 'Rio de Janeiro', 'Curitiba PR'), a neighborhood or zone ('Moema, Sao Paulo', 'Copacabana, Rio de Janeiro'), or a bare two-letter state code ('SP', 'RJ') for a whole state. Diacritics optional; adding the state code picks the right city when several share a name. Each entry resolves to one ZAP location and the log says which; an entry with no match is reported and skipped, never guessed.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "businessType": {
            "title": "Sale or Rental",
            "enum": [
              "SALE",
              "RENTAL"
            ],
            "type": "string",
            "description": "SALE = for sale, RENTAL = for rent.",
            "default": "SALE"
          },
          "listingType": {
            "title": "Listing Type",
            "enum": [
              "USED",
              "DEVELOPMENT"
            ],
            "type": "string",
            "description": "USED = existing properties on the resale market. DEVELOPMENT = new construction launches (lancamentos).",
            "default": "USED"
          },
          "propertyType": {
            "title": "Property Type",
            "enum": [
              "ANY",
              "APARTMENT",
              "HOME",
              "PENTHOUSE",
              "STUDIO",
              "ALLOTMENT_LAND",
              "FARM",
              "OFFICE",
              "COMMERCIAL_BUILDING",
              "SHED_DEPOSIT_WAREHOUSE",
              "BUSINESS"
            ],
            "type": "string",
            "description": "Filter by property category. ANY returns all types.",
            "default": "ANY"
          },
          "minPrice": {
            "title": "Min Price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in Brazilian Reais. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max Price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in Brazilian Reais. Leave empty for no maximum."
          },
          "minBedrooms": {
            "title": "Min Bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum number of bedrooms."
          },
          "minBathrooms": {
            "title": "Min Bathrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum number of bathrooms."
          },
          "minParkingSpaces": {
            "title": "Min Parking Spaces",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum parking spots."
          },
          "minUsableArea": {
            "title": "Min Usable Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum usable floor area in square meters."
          },
          "maxUsableArea": {
            "title": "Max Usable Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum usable floor area in square meters."
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "relevance",
              "price-asc",
              "price-desc",
              "newest",
              "area-desc",
              "area-asc"
            ],
            "type": "string",
            "description": "Result ordering. 'relevance' = ZAP default (sponsored + ranked); 'price-asc' / 'price-desc' = primary price; 'newest' = most recently updated first; 'area-desc' / 'area-asc' = largest / smallest usable area first.",
            "default": "relevance"
          },
          "propertyTypes": {
            "title": "Property Types (multi-select)",
            "type": "array",
            "description": "Pick one or more property types; listings of ANY picked type are returned. When set, this overrides the single 'Property Type' above. Leave empty to use 'Property Type'.",
            "items": {
              "type": "string",
              "enum": [
                "APARTMENT",
                "STUDIO",
                "KITNET",
                "HOME",
                "CONDOMINIUM",
                "VILLAGE_HOUSE",
                "PENTHOUSE",
                "FLAT",
                "LOFT",
                "RESIDENTIAL_ALLOTMENT_LAND",
                "BUSINESS",
                "TWO_STORY_HOUSE",
                "OFFICE",
                "COMMERCIAL_PROPERTY",
                "HOTEL",
                "FLOOR",
                "COMMERCIAL_BUILDING",
                "COMMERCIAL_ALLOTMENT_LAND",
                "SHED_DEPOSIT_WAREHOUSE",
                "PARKING_SPACE",
                "FARM"
              ],
              "enumTitles": [
                "Apartment",
                "Studio",
                "Kitnet",
                "House",
                "House in gated community (condomínio)",
                "Village house (casa de vila)",
                "Penthouse (cobertura)",
                "Flat",
                "Loft",
                "Residential land / lot",
                "Store / commercial point",
                "Two-story house (sobrado)",
                "Office / commercial room",
                "Commercial house",
                "Hotel / motel / inn",
                "Corporate floor",
                "Whole building",
                "Commercial land / lot",
                "Warehouse / shed",
                "Garage / parking space",
                "Farm / ranch / country property"
              ]
            }
          },
          "usageType": {
            "title": "Usage",
            "enum": [
              "ANY",
              "RESIDENTIAL",
              "COMMERCIAL"
            ],
            "type": "string",
            "description": "Residential or commercial properties only. Used only when no property type is picked above.",
            "default": "ANY"
          },
          "amenities": {
            "title": "Amenities / Property Features",
            "type": "array",
            "description": "Only listings that have ALL of the picked amenities (pool, gym, elevator, pets allowed, near public transport, 24h concierge, furnished, ...).",
            "items": {
              "type": "string",
              "enum": [
                "ACLIVE",
                "ADMINISTRATION",
                "ADULT_GAME_ROOM",
                "ADULT_POOL",
                "AIR_CONDITIONING",
                "ALARM_SYSTEM",
                "ALUMINUM_WINDOW",
                "AMERICAN_KITCHEN",
                "AQUARIUM",
                "ARGILLOSE",
                "ARMORED_SECURITY_CABIN",
                "ARTESIAN_WELL",
                "BACKGROUND_HOUSE",
                "BACKYARD",
                "BALCONY",
                "BAR",
                "BARBECUE_BALCONY",
                "BARBECUE_GRILL",
                "BARN",
                "BATHROOM_CABINETS",
                "BATHTUB",
                "BEAUTY_CENTER",
                "BEAUTY_ROOM",
                "BEDROOM_WARDROBE",
                "BICYCLES_PLACE",
                "BLINDEX_BOX",
                "BUILTIN_WARDROBE",
                "BURNT_CEMENT",
                "CABLE_TV",
                "CARETAKER",
                "CARETAKER_HOUSE",
                "CARPET",
                "CEMENT",
                "CHILDRENS_POOL",
                "CHILDREN_CARE",
                "CINEMA",
                "CLIMBING_WALL",
                "CLOSET",
                "COFFEE_SHOP",
                "COLD_FLOOR",
                "CONCIERGE_24H",
                "COOKER",
                "COPA",
                "CORNER_PROPERTY",
                "CORRAL",
                "COVENTION_HALL",
                "COVERAGE",
                "COVERED_POOL",
                "COWORKING",
                "DECK",
                "DECLIVE",
                "DEPOSIT",
                "DIGITAL_LOCKER",
                "DINNER_ROOM",
                "DISABLED_ACCESS",
                "DIVIDERS",
                "DOG_KENNEL",
                "DRESS_ROOM",
                "DRESS_ROOM2",
                "DRYWALL",
                "EAST_FACING",
                "ECO_CONDOMINIUM",
                "ECO_GARBAGE_COLLECTOR",
                "EDICULE",
                "ELECTRICITY",
                "ELECTRIC_GENERATOR",
                "ELECTRONIC_GATE",
                "ELETRIC_CHARGER",
                "ELEVATOR",
                "EMPLOYEE_DEPENDENCY",
                "ENTRANCE_HALL",
                "ESSENTIAL_PUBLIC_SERVICES",
                "EXTERIOR_VIEW",
                "FENCE",
                "FIREPLACE",
                "FITNESS_ROOM",
                "FOOTBALL_FIELD",
                "FREEZER",
                "FRUIT_TREES",
                "FULL_CABLING",
                "FULL_FLOOR",
                "FURNISHED",
                "GAMES_ROOM",
                "GARAGE",
                "GARAGE_BAND",
                "GARDEN",
                "GAS_SHOWER",
                "GATED_COMMUNITY",
                "GEMINADA",
                "GLASS_WALL",
                "GOLF_FIELD",
                "GOURMET_BALCONY",
                "GOURMET_KITCHEN",
                "GOURMET_SPACE",
                "GRASS",
                "GRAVEL",
                "GREEN_SPACE",
                "GUEST_PARKING",
                "GYM",
                "HALF_FLOOR",
                "HEADQUARTERS",
                "HEATED_POOL",
                "HEATING",
                "HELIPAD",
                "HIGH_CEILING_HEIGHT",
                "HIKING_TRAIL",
                "HOME_CINEMA",
                "HOME_OFFICE",
                "HOT_TUB",
                "INDOOR_SOCCER",
                "INTEGRATED_ENVIRONMENTS",
                "INTERCOM",
                "INTERNET_ACCESS",
                "KITCHEN",
                "KITCHEN_CABINETS",
                "LAKE",
                "LAKE_VIEW",
                "LAMINATED_FLOOR",
                "LAND",
                "LARGE_KITCHEN",
                "LARGE_ROOM",
                "LARGE_WINDOW",
                "LAUNDRY",
                "LAVABO",
                "LIBRARY",
                "LUNCH_ROOM",
                "MARINA",
                "MASSAGE",
                "MASSAGE_ROOM",
                "MCMV",
                "MEETING_ROOM",
                "MEZZANINE",
                "MINI_SQUARE",
                "MOUNTAIN_VIEW",
                "NATURAL_VENTILATION",
                "NEAR_ACCESS_ROADS",
                "NEAR_HOSPITAL",
                "NEAR_PUBLIC_TRANSPORT",
                "NEAR_SCHOOL",
                "NEAR_SHOPPING_CENTER",
                "NEAR_SHOPPING_CENTER_2",
                "NORTH_FACING",
                "NUMBER_OF_FLOORS",
                "ORCHID_PLACE",
                "PANORAMIC_VIEW",
                "PANTRY",
                "PARKING",
                "PARTY_HALL",
                "PASTURE",
                "PATROL",
                "PAVED_STREET",
                "PAY_PER_USE_SERVICES",
                "PETS_ALLOWED",
                "PET_SPACE",
                "PIZZA_OVEN",
                "PLAN",
                "PLANNED_FURNITURE",
                "PLATED_GAS",
                "PLATIBANDA",
                "PLAYGROUND",
                "PLAYGROUND_2",
                "POMAR",
                "POOL",
                "POOL_BAR",
                "PORCELAIN",
                "PRIVATE_POOL",
                "RAISED_FLOOR",
                "RAMP",
                "RECEPTION",
                "RECREATION_AREA",
                "REDARIO",
                "REFECTORY",
                "REFLECTING_POOL",
                "RESTAURANT",
                "REVERSIBLE_ROOM",
                "RIVER",
                "SAFETY_CIRCUIT",
                "SANCA",
                "SANDY",
                "SAND_PIT",
                "SAUNA",
                "SEA_VIEW",
                "SECURITY_24_HOURS",
                "SECURITY_CABIN",
                "SECURITY_CAMERA",
                "SEMI_OLYMPIC_POOL",
                "SERVICE_AREA",
                "SERVICE_BATHROOM",
                "SERVICE_ENTRANCE",
                "SERVICE_ROOM",
                "SEWAGE",
                "SIDE_ENTRANCE",
                "SKATE_LANE",
                "SLAB",
                "SMALL_ROOM",
                "SMART_APARTMENT",
                "SMART_CONDOMINIUM",
                "SOLARIUM",
                "SOLAR_ENERGY",
                "SOUNDPROOFING",
                "SOUTH_FACING",
                "SPA",
                "SPORTS_COURT",
                "SQUARE",
                "SQUASH",
                "STAIR",
                "STORES",
                "TEEN_SPACE",
                "TENNIS_COURT",
                "THERMAL_INSULATION",
                "TOYS_PLACE",
                "TREE_CLIMBING",
                "TRUCK_ENTRANCE",
                "VALET_PARKING",
                "VEGETABLE_GARDEN",
                "VINYL_FLOOR",
                "WALLS_GRIDS",
                "WALL_BALCONY",
                "WATCHMAN",
                "WATER_TANK",
                "WELL",
                "WEST_FACING",
                "WHIRLPOOL",
                "WOOD_FLOOR",
                "YOUTH_GAME_ROOM",
                "ZEN_SPACE"
              ],
              "enumTitles": [
                "Aclive (Desnível para frente (rua))",
                "Administration (Administração)",
                "Adult game room (Salão de jogos)",
                "Adult pool (Piscina para adulto)",
                "Air conditioning (Ar-condicionado)",
                "Alarm system (Sistema de alarme)",
                "Aluminum window (Janela de alumínio)",
                "American kitchen (Cozinha americana)",
                "Aquarium (Aquário)",
                "Argillose (Argiloso)",
                "Armored security cabin (Guarita blindada)",
                "Artesian well (Poço artesiano)",
                "Background house (Casa de fundo)",
                "Backyard (Quintal)",
                "Balcony (Varanda)",
                "Bar (Bar)",
                "Barbecue balcony (Churrasqueira na varanda)",
                "Barbecue grill (Churrasqueira)",
                "Barn (Celeiro)",
                "Bathroom cabinets (Armário no banheiro)",
                "Bathtub (Banheira)",
                "Beauty center (Centro de estética)",
                "Beauty room (Espaço de beleza)",
                "Bedroom wardrobe (Armário embutido no quarto)",
                "Bicycles place (Bicicletário)",
                "Blindex box (Box blindex)",
                "Builtin wardrobe (Armário embutido)",
                "Burnt cement (Cimento queimado)",
                "Cable tv (TV a cabo)",
                "Caretaker (Zelador)",
                "Caretaker house (Casa de caseiro)",
                "Carpet (Carpete)",
                "Cement (Cimento)",
                "Childrens pool (Piscina infantil)",
                "Children care (Children care)",
                "Cinema (Cinema)",
                "Climbing wall (Muro de escalada)",
                "Closet (Closet)",
                "Coffee shop (Coffee shop)",
                "Cold floor (Piso frio)",
                "Concierge 24h (Portaria 24h)",
                "Cooker (Fogão)",
                "Copa (Copa)",
                "Corner property (Imóvel de esquina)",
                "Corral (Curral)",
                "Covention hall (Salão de convenção)",
                "Coverage (Cobertura coletiva)",
                "Covered pool (Piscina coberta)",
                "Coworking (Coworking)",
                "Deck (Deck)",
                "Declive (Desnível para trás (fundo))",
                "Deposit (Depósito)",
                "Digital locker (Fechadura digital)",
                "Dinner room (Sala de jantar)",
                "Disabled access (Acesso para deficientes)",
                "Dividers (Possui divisória)",
                "Dog kennel (Canil)",
                "Dress room (Vestiário)",
                "Dress room2 (Vestiário para diaristas)",
                "Drywall (Drywall)",
                "East facing (Frente para o leste)",
                "Eco condominium (Condomínio sustentável)",
                "Eco garbage collector (Coleta seletiva de lixo)",
                "Edicule (Edícula)",
                "Electricity (Energia elétrica)",
                "Electric generator (Gerador elétrico)",
                "Electronic gate (Portão eletrônico)",
                "Eletric charger (Carregador eletrônico para carro e bicicleta)",
                "Elevator (Elevador)",
                "Employee dependency (Dependência de empregados)",
                "Entrance hall (Hall de entrada)",
                "Essential public services (Serviços públicos essenciais)",
                "Exterior view (Vista exterior)",
                "Fence (Cerca)",
                "Fireplace (Lareira)",
                "Fitness room (Espaço fitness)",
                "Football field (Campo de futebol)",
                "Freezer (Freezer)",
                "Fruit trees (Árvore frutífera)",
                "Full cabling (Cabeamento estruturado)",
                "Full floor (Andar inteiro)",
                "Furnished (Mobiliado)",
                "Games room (Salão de jogos)",
                "Garage (Garagem)",
                "Garage band (Garage band)",
                "Garden (Jardim)",
                "Gas shower (Chuveiro a gás)",
                "Gated community (Condomínio fechado)",
                "Geminada (Geminada)",
                "Glass wall (Muro de vidro)",
                "Golf field (Campo de golfe)",
                "Gourmet balcony (Varanda gourmet)",
                "Gourmet kitchen (Cozinha gourmet)",
                "Gourmet space (Espaço gourmet)",
                "Grass (Gramado)",
                "Gravel (Cascalho)",
                "Green space (Espaço verde / Parque)",
                "Guest parking (Estacionamento para visitantes)",
                "Gym (Academia)",
                "Half floor (Meio andar)",
                "Headquarters (Casa sede)",
                "Heated pool (Piscina aquecida)",
                "Heating (Aquecimento)",
                "Helipad (Heliponto)",
                "High ceiling height (Pé direito alto)",
                "Hiking trail (Pista de cooper)",
                "Home cinema (Cinema)",
                "Home office (Escritório)",
                "Hot tub (Ofurô)",
                "Indoor soccer (Quadra de futebol de salão)",
                "Integrated environments (Ambientes integrados)",
                "Intercom (Interfone)",
                "Internet access (Conexão à internet)",
                "Kitchen (Cozinha)",
                "Kitchen cabinets (Armário na cozinha)",
                "Lake (Lago)",
                "Lake view (Vista para lago)",
                "Laminated floor (Piso laminado)",
                "Land (Terra)",
                "Large kitchen (Cozinha grande)",
                "Large room (Sala grande)",
                "Large window (Janela grande)",
                "Laundry (Lavanderia)",
                "Lavabo (Lavabo)",
                "Library (Biblioteca)",
                "Lunch room (Sala de almoço)",
                "Marina (Marina)",
                "Massage (Sala de massagem)",
                "Massage room (Sala de massagem)",
                "Mcmv (Minha Casa Minha Vida)",
                "Meeting room (Sala de reunião)",
                "Mezzanine (Mezanino)",
                "Mini square (Mini quadra)",
                "Mountain view (Vista para a montanha)",
                "Natural ventilation (Ventilação natural)",
                "Near access roads (Perto de vias de acesso)",
                "Near hospital (Próximo a hospitais)",
                "Near public transport (Próximo a transporte público)",
                "Near school (Próximo a escola)",
                "Near shopping center (Próximo a shopping)",
                "Near shopping center 2 (Próximo a shopping)",
                "North facing (Frente para o norte)",
                "Number of floors (Mais de um andar)",
                "Orchid place (Orquidário)",
                "Panoramic view (Vista panorâmica)",
                "Pantry (Despensa)",
                "Parking (Estacionamento )",
                "Party hall (Salão de festas)",
                "Pasture (Pasto)",
                "Patrol (Ronda/Vigilância)",
                "Paved street (Rua asfaltada)",
                "Pay per use services (Serviços pay per use)",
                "Pets allowed (Aceita animais)",
                "Pet space (Espaço Pet)",
                "Pizza oven (Forno de pizza)",
                "Plan (Plano)",
                "Planned furniture (Móvel planejado)",
                "Plated gas (Gás Encanado)",
                "Platibanda (Platibanda)",
                "Playground (Playground)",
                "Playground 2 (Playground)",
                "Pomar (Pomar)",
                "Pool (Piscina)",
                "Pool bar (Bar na piscina)",
                "Porcelain (Porcelanato)",
                "Private pool (Piscina privativa)",
                "Raised floor (Piso elevado)",
                "Ramp (Rampa)",
                "Reception (Recepção)",
                "Recreation area (Área de lazer)",
                "Redario (Redario)",
                "Refectory (Refeitório)",
                "Reflecting pool (Espelhos d'água)",
                "Restaurant (Restaurante)",
                "Reversible room (Quarto extra reversível)",
                "River (Rio)",
                "Safety circuit (Circuito de segurança)",
                "Sanca (Gesso - Sanca - Teto Rebaixado)",
                "Sandy (Arenoso)",
                "Sand pit (Quadra de areia)",
                "Sauna (Sauna)",
                "Sea view (Vista para o mar)",
                "Security 24 hours (Segurança 24h)",
                "Security cabin (Guarita)",
                "Security camera (Câmera de segurança)",
                "Semi olympic pool (Piscina semi-olímpica)",
                "Service area (Área de serviço)",
                "Service bathroom (Banheiro de serviço)",
                "Service entrance (Entrada de serviço)",
                "Service room (Quarto de serviço)",
                "Sewage (Rede de água e esgoto)",
                "Side entrance (Entrada lateral)",
                "Skate lane (Pista de skate)",
                "Slab (Laje)",
                "Small room (Sala pequena)",
                "Smart apartment (Apartamento inteligente)",
                "Smart condominium (Condomínio inteligente)",
                "Solarium (Solarium)",
                "Solar energy (Energia solar)",
                "Soundproofing (Isolamento acústico)",
                "South facing (Frente para o sul)",
                "Spa (Spa)",
                "Sports court (Quadra poliesportiva)",
                "Square (Praça)",
                "Squash (Quadra de squash)",
                "Stair (Escada)",
                "Stores (Loja)",
                "Teen space (Espaço teen)",
                "Tennis court (Quadra de tênis)",
                "Thermal insulation (Isolamento térmico)",
                "Toys place (Brinquedoteca)",
                "Tree climbing (Arvorismo)",
                "Truck entrance (Entrada para caminhões)",
                "Valet parking (Manobrista)",
                "Vegetable garden (Horta)",
                "Vinyl floor (Piso vinílico)",
                "Walls grids (Muro e grade)",
                "Wall balcony (Varanda fechada com vidro)",
                "Watchman (Vigia)",
                "Water tank (Reservatório de água)",
                "Well (Poço)",
                "West facing (Frente para o oeste)",
                "Whirlpool (Hidromassagem)",
                "Wood floor (Piso de madeira)",
                "Youth game room (Salão de jogos)",
                "Zen space (Espaço zen)"
              ]
            }
          },
          "minCondoFee": {
            "title": "Min Condo Fee (BRL / month)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum monthly condominium fee in Brazilian Reais. Leave empty for no minimum."
          },
          "maxCondoFee": {
            "title": "Max Condo Fee (BRL / month)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum monthly condominium fee in Brazilian Reais. Leave empty for no maximum."
          },
          "nearTransit": {
            "title": "Near Metro / Train",
            "type": "boolean",
            "description": "Only listings near a metro or train station (the site's own 'near metro' filter).",
            "default": false
          },
          "belowMarketPrice": {
            "title": "Below Market Price",
            "type": "boolean",
            "description": "Only listings the site flags as priced below the market reference for comparable properties.",
            "default": false
          },
          "rentWithoutGuarantor": {
            "title": "Rent Without Guarantor (sem fiador)",
            "type": "boolean",
            "description": "Rentals only: listings that can be rented without a guarantor (fiador). Ignored for sale searches.",
            "default": false
          },
          "hasVirtualTour": {
            "title": "Has Virtual Tour",
            "type": "boolean",
            "description": "Only listings with a virtual / video tour.",
            "default": false
          },
          "constructionStatus": {
            "title": "Construction Stage (new developments only)",
            "enum": [
              "ANY",
              "PLAN_ONLY",
              "UNDER_CONSTRUCTION",
              "BUILT"
            ],
            "type": "string",
            "description": "Only with Listing Type = New developments: keep launches that are still on the plan ('PLAN_ONLY', the site's 'Na planta'), under construction, or ready to move in ('BUILT', 'Pronto para morar'). Ignored, with a log warning, for resale or rental searches.",
            "default": "ANY"
          },
          "urls": {
            "title": "Listing URLs",
            "type": "array",
            "description": "ZAP links to collect (URL mode only), one per line; copy them straight from the browser. Supported: a city search ('.../venda/apartamentos/sp+sao-paulo/'), a zone or neighborhood search ('.../sp+sao-paulo+zona-sul/', '.../sp+sao-paulo+zona-sul+moema/', '.../pr+curitiba++batel/'), a whole-state search ('.../venda/casas/sc/'), a new-development search ('.../lancamentos/imoveis/sp+sao-paulo/', optionally with a stage: '.../na-planta/', '.../em-construcao/', '.../pronto-para-morar/'), an amenity page ('.../sp+sao-paulo/elevador/'), any of those with the site's filters, page (?pagina=N or /page-N/) and sort (ordenarPor / ordem), a link the site's filter panel produced (it carries onde=, tipos=, transacao=), and a single listing or development page (any link ending in '-id-<N>/') or just its numeric listing code. Each search link is walked forward from the page it points to; a listing link returns exactly that listing. Agency pages ('/imobiliaria/<id>/') and other site sections are skipped with a warning, never run as a nationwide search. Filter fields in the Search section are ignored here: the link's own filters apply. If you don't replace these defaults, the actor scrapes one example of every supported URL shape below.",
            "default": [
              "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/",
              "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo+zona-sul+moema/",
              "https://www.zapimoveis.com.br/venda/casas/sc/",
              "https://www.zapimoveis.com.br/lancamentos/imoveis/sp+sao-paulo/",
              "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/elevador/",
              "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/?pagina=2&ordenarPor=preco_menor",
              "https://www.zapimoveis.com.br/aluguel/apartamentos/rj+rio-de-janeiro/?precoMaximo=5000&quartos=2",
              "https://www.zapimoveis.com.br/venda/cobertura/sp+sao-paulo/?onde=,S%C3%A3o%20Paulo,S%C3%A3o%20Paulo,,,,,city,BR%3ESao%20Paulo%3ENULL%3ESao%20Paulo,-23.555771,-46.639557,&tipos=cobertura_residencial",
              "https://www.zapimoveis.com.br/imovel/venda-apartamento-3-quartos-com-academia-vila-mariana-zona-sul-sao-paulo-sp-87m2-id-2901801013/",
              "https://www.zapimoveis.com.br/lancamentos/alma-pinheiros-id-2900789998/",
              "2915514667",
              "https://www.zapimoveis.com.br/imobiliaria/848266/"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Max Pages Per Search",
            "minimum": 0,
            "type": "integer",
            "description": "Optional bound on result pages walked per search or URL (up to 24 listings per page). Leave empty to walk every result page; maxListings is then the effective stopping condition."
          },
          "maxListings": {
            "title": "Max Listings",
            "minimum": 0,
            "type": "integer",
            "description": "Total maximum number of listings to return across all searches. Set 0 for unlimited (subject to maxPages).",
            "default": 20
          },
          "fetchDetails": {
            "title": "Fetch Full Listing Details",
            "type": "boolean",
            "description": "Open each listing's detail record to add the full description, title, last-updated date, accepts-exchange / resale flags, publishing portals, building count, a new development's unit variants and units still available, the agency's total listings, service areas and verification score. One extra request per listing, so runs take longer. Off = search-page fields only (the default).",
            "default": false
          },
          "fetchSellerRatings": {
            "title": "Fetch Seller Ratings",
            "type": "boolean",
            "description": "Adds the advertiser's public rating from the listing page (the 'x/5' badge next to the CRECI line) as entities.seller.rating: stars, number of ratings and feedbacks, answered vs unanswered leads, and the service points buyers liked or want improved. One extra request per distinct agency or seller (cached for the run). Advertisers nobody has rated yet get null.",
            "default": false
          },
          "maximizeCoverage": {
            "title": "Maximize Coverage (past 1,200 results)",
            "type": "boolean",
            "description": "The site shows at most 1,200 results per search. When on, a larger search is split into price ranges and each range is collected, so you can get past that limit. Each listing is returned once and the total still stops at Max Listings. Needs Max Pages empty (0).",
            "default": false
          },
          "proxy": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Apify Residential proxy is strongly recommended. The site rejects datacenter ranges; without residential, runs return zero items. Default country = BR. Free-tier accounts do not include residential, see the README for the upgrade path."
          },
          "resumeFromRunId": {
            "title": "Resume from run ID",
            "type": "string",
            "description": "Optional: paste a previous run ID (or dataset ID) from this actor. Listings already collected there are skipped, so this run only returns new ones. Leave empty for a normal run. For recurring monitoring of the SAME search across scheduled runs, use incrementalMode below instead — the two are not meant to be combined."
          },
          "incrementalMode": {
            "title": "Incremental mode (recurring monitoring)",
            "type": "boolean",
            "description": "When true, the actor remembers the previous run of this SAME search itself (via a small internal state store) and classifies every listing as NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED in the output's changeType field. Unlike resumeFromRunId (which continues one interrupted run from a pasted id), this needs no id pasted between scheduled runs. Do not combine with resumeFromRunId — a resumed run is a partial scan and cannot be used to detect EXPIRED listings.",
            "default": false
          },
          "stateKey": {
            "title": "State key (incremental mode only)",
            "type": "string",
            "description": "Optional: a name for this monitoring campaign's saved state. Leave empty to auto-derive one from the search scope (locations/urls + filters), so two different searches never share a baseline. Set this explicitly if you want two runs with slightly different inputs to share one baseline, or to keep multiple campaigns cleanly separated."
          },
          "emitUnchanged": {
            "title": "Emit unchanged listings (incremental mode only)",
            "type": "boolean",
            "description": "When true, listings unchanged since the last incremental run are still returned (changeType=UNCHANGED) instead of being suppressed. This returns AND bills more rows — leave off to get only what changed.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired listings (incremental mode only)",
            "type": "boolean",
            "description": "When true, listings present in the previous incremental baseline but no longer found by this run are returned as changeType=EXPIRED tombstone rows. This returns AND bills extra rows. Only fires when this run completed a full scan of every planned search (no listing/page cap hit, not a resumed run) — otherwise a listing that was simply not reached yet would be wrongly reported as gone.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Output field names that should NOT make a listing count as UPDATED in incremental mode. Use a dotted path for a nested field (e.g. 'attributes.lqs'). By default this already ignores the agency/seller fields that change for every listing that agency currently has live (seller_name, seller_tier, seller_license_number, seller_legacy_zap_id, phones, whatsapp, entities.seller, raw.account, raw.account_link) plus raw.listing.score (ZAP's internal ranking score, measured to drift on every fetch with no change to the listing itself). Add more dotted paths here if another field changes too often for your use case. Ignored fields are still returned in the output.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}