{
  "openapi": "3.0.1",
  "info": {
    "title": "ZAP Imóveis Scraper",
    "description": "ZAP Imóveis scraper & API for Brazilian real estate: search property for sale & rent and export address, price, condo fee, beds, baths, parking, area, type, amenities, advertiser, photos and coordinates. Brazil property market data and real-estate lead generation — fast, no login.",
    "version": "1.0",
    "x-build-id": "AQCVntF9vlwtzMPat"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/haketa~zapimoveis-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-haketa-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/haketa~zapimoveis-scraper/runs": {
      "post": {
        "operationId": "runs-sync-haketa-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/haketa~zapimoveis-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-haketa-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",
        "properties": {
          "mode": {
            "title": "What do you want to scrape?",
            "enum": [
              "listings",
              "agencies"
            ],
            "type": "string",
            "description": "Choose 'Property Listings' to collect homes, apartments and commercial units. Choose 'Agency Directory' to collect imobiliária profiles (contact details, CRECI, CNPJ) for B2B outreach.",
            "default": "listings"
          },
          "portal": {
            "title": "Website",
            "enum": [
              "ZAP",
              "VIVA_REAL"
            ],
            "type": "string",
            "description": "Which Brazilian portal to pull results from. ZAP Imóveis is the default; you can switch to VivaReal with the same settings.",
            "default": "ZAP"
          },
          "business": {
            "title": "For sale or for rent?",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick whether you want properties for sale, for rent, or both. Leave empty to include both.",
            "items": {
              "type": "string",
              "enum": [
                "SALE",
                "RENTAL"
              ],
              "enumTitles": [
                "For Sale (Venda)",
                "For Rent (Aluguel)"
              ]
            }
          },
          "listingType": {
            "title": "Listing type",
            "uniqueItems": true,
            "type": "array",
            "description": "'Standard' covers normal resale and rental inventory. 'New Developments' covers lançamentos — brand-new builder projects (Cyrela, EZTec, Tegra and more). Leave empty for both.",
            "items": {
              "type": "string",
              "enum": [
                "USED",
                "DEVELOPMENT"
              ],
              "enumTitles": [
                "Standard listings (Padrão)",
                "New Developments (Lançamentos)"
              ]
            }
          },
          "usageTypes": {
            "title": "Residential or commercial?",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick residential (homes, apartments, penthouses) or commercial (offices, retail, warehouses). Leave empty to include both.",
            "items": {
              "type": "string",
              "enum": [
                "RESIDENTIAL",
                "COMMERCIAL"
              ],
              "enumTitles": [
                "Residential",
                "Commercial (offices, retail, warehouses)"
              ]
            }
          },
          "unitTypes": {
            "title": "Property types",
            "uniqueItems": true,
            "type": "array",
            "description": "Narrow results to specific property types. Pick one or more from the list. Leave empty to include all types.",
            "items": {
              "type": "string",
              "enum": [
                "APARTMENT",
                "HOME",
                "CONDOMINIUM",
                "PENTHOUSE",
                "FLAT",
                "KITNET",
                "FARM",
                "LAND_LOT",
                "OFFICE",
                "COMMERCIAL_BUILDING",
                "COMMERCIAL_PROPERTY",
                "BUSINESS",
                "WAREHOUSE_SHED",
                "GARAGE",
                "HOTEL"
              ],
              "enumTitles": [
                "Apartment (Apartamento)",
                "House (Casa)",
                "House in gated community (Casa de condomínio)",
                "Penthouse (Cobertura)",
                "Flat / Studio (Flat)",
                "Studio (Kitnet)",
                "Farm / Country estate (Sítio / Fazenda)",
                "Land / Lot (Terreno / Lote)",
                "Commercial office (Sala comercial)",
                "Commercial building (Prédio comercial)",
                "Commercial suite (Conjunto comercial)",
                "Business point (Ponto comercial)",
                "Warehouse (Galpão)",
                "Garage (Garagem)",
                "Hotel / Inn (Hotel / Pousada)"
              ]
            }
          },
          "states": {
            "title": "States",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick one or more Brazilian states to search. Leave empty to search nationwide.",
            "items": {
              "type": "string",
              "enum": [
                "SP",
                "RJ",
                "MG",
                "RS",
                "PR",
                "SC",
                "BA",
                "DF",
                "GO",
                "PE",
                "CE",
                "ES",
                "PA",
                "MA",
                "MT",
                "MS",
                "PB",
                "RN",
                "AL",
                "PI",
                "SE",
                "AM",
                "RO",
                "TO",
                "AC",
                "AP",
                "RR"
              ],
              "enumTitles": [
                "São Paulo (SP)",
                "Rio de Janeiro (RJ)",
                "Minas Gerais (MG)",
                "Rio Grande do Sul (RS)",
                "Paraná (PR)",
                "Santa Catarina (SC)",
                "Bahia (BA)",
                "Distrito Federal (DF)",
                "Goiás (GO)",
                "Pernambuco (PE)",
                "Ceará (CE)",
                "Espírito Santo (ES)",
                "Pará (PA)",
                "Maranhão (MA)",
                "Mato Grosso (MT)",
                "Mato Grosso do Sul (MS)",
                "Paraíba (PB)",
                "Rio Grande do Norte (RN)",
                "Alagoas (AL)",
                "Piauí (PI)",
                "Sergipe (SE)",
                "Amazonas (AM)",
                "Rondônia (RO)",
                "Tocantins (TO)",
                "Acre (AC)",
                "Amapá (AP)",
                "Roraima (RR)"
              ]
            }
          },
          "cities": {
            "title": "Cities",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick one or more major cities to search. Leave empty to search the whole selected state (or nationwide). Need a city that isn't listed here? Use the 'Other cities' box below.",
            "items": {
              "type": "string",
              "enum": [
                "sao-paulo",
                "rio-de-janeiro",
                "belo-horizonte",
                "brasilia",
                "curitiba",
                "porto-alegre",
                "florianopolis",
                "salvador",
                "recife",
                "fortaleza",
                "goiania",
                "campinas",
                "santos",
                "guarulhos",
                "niteroi",
                "sao-jose-dos-campos",
                "ribeirao-preto",
                "sorocaba",
                "londrina",
                "joinville",
                "uberlandia",
                "vitoria",
                "manaus",
                "belem",
                "natal",
                "campo-grande",
                "cuiaba",
                "maceio",
                "joao-pessoa",
                "aracaju"
              ],
              "enumTitles": [
                "São Paulo",
                "Rio de Janeiro",
                "Belo Horizonte",
                "Brasília",
                "Curitiba",
                "Porto Alegre",
                "Florianópolis",
                "Salvador",
                "Recife",
                "Fortaleza",
                "Goiânia",
                "Campinas",
                "Santos",
                "Guarulhos",
                "Niterói",
                "São José dos Campos",
                "Ribeirão Preto",
                "Sorocaba",
                "Londrina",
                "Joinville",
                "Uberlândia",
                "Vitória",
                "Manaus",
                "Belém",
                "Natal",
                "Campo Grande",
                "Cuiabá",
                "Maceió",
                "João Pessoa",
                "Aracaju"
              ]
            }
          },
          "citiesCustom": {
            "title": "Other cities (advanced)",
            "type": "array",
            "description": "Optional. Add any city not in the dropdown above, written as a lowercase hyphenated slug without accents (for example: santo-andre, foz-do-iguacu, feira-de-santana). Most users can leave this empty.",
            "items": {
              "type": "string"
            }
          },
          "neighborhoods": {
            "title": "Neighborhoods / Bairros (advanced)",
            "type": "array",
            "description": "Optional. Narrow to specific neighborhoods, written as lowercase hyphenated slugs (for example: pinheiros, itaim-bibi, copacabana, ipanema). Works best when you select a single city. Leave empty to include all neighborhoods.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include properties priced at or above this amount, in Brazilian Reais. Leave 0 for no minimum.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include properties priced at or below this amount, in Brazilian Reais. Leave 0 for no maximum.",
            "default": 0
          },
          "minArea": {
            "title": "Minimum area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include properties with usable area at or above this many square meters. Leave 0 for no minimum.",
            "default": 0
          },
          "maxArea": {
            "title": "Maximum area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include properties with usable area at or below this many square meters. Leave 0 for no maximum.",
            "default": 0
          },
          "minBedrooms": {
            "title": "Minimum bedrooms (Quartos)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include properties with at least this many bedrooms. Leave 0 for no filter.",
            "default": 0
          },
          "minParkingSpaces": {
            "title": "Minimum parking spaces (Vagas)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include properties with at least this many parking spaces. Leave 0 for no filter.",
            "default": 0
          },
          "semFiador": {
            "title": "Rentals without a guarantor (Sem Fiador)",
            "type": "boolean",
            "description": "Turn on to only include rental listings that do not require a fiador (guarantor). Applies to rentals.",
            "default": false
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "newest",
              "lowest_price",
              "highest_price",
              "lowest_area",
              "highest_area"
            ],
            "type": "string",
            "description": "Choose how results are ordered.",
            "default": "relevance"
          },
          "agencyIds": {
            "title": "Agency IDs (Agency Directory mode)",
            "type": "array",
            "description": "Optional. In 'Agency Directory' mode, paste specific imobiliária IDs to collect (for example: 231067, 233859). Leave empty and use the range option below to discover agencies. Ignored in 'Property Listings' mode.",
            "items": {
              "type": "string"
            }
          },
          "agencyIdRangeStart": {
            "title": "Agency ID range — start (Agency Directory mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. In 'Agency Directory' mode, set the first ID of a range to sweep for agency profiles. Leave 0 to disable.",
            "default": 0
          },
          "agencyIdRangeEnd": {
            "title": "Agency ID range — end (Agency Directory mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. In 'Agency Directory' mode, set the last ID of the range (must be greater than the start). Leave 0 to disable.",
            "default": 0
          },
          "fetchAgencyListings": {
            "title": "Also collect each agency's listings",
            "type": "boolean",
            "description": "In 'Agency Directory' mode, turn on to also pull every agency's active listings portfolio (slower). When off, only the agency profile is saved.",
            "default": false
          },
          "maxListings": {
            "title": "Maximum results",
            "minimum": 0,
            "type": "integer",
            "description": "Cap the total number of records collected across the whole run. Set 0 for unlimited.",
            "default": 100
          },
          "maxPages": {
            "title": "Maximum pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "How many result pages to page through for each search (each page returns up to 24 listings). Set 0 for unlimited.",
            "default": 20
          },
          "pageSize": {
            "title": "Results per request",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many listings to fetch per API call. The site default is 24; up to 36 is recommended.",
            "default": 24
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Brazilian residential proxy is strongly recommended for reliable results. The default uses Apify Proxy with the RESIDENTIAL group in Brazil. You can also supply your own Brazilian residential proxies."
          },
          "requestDelay": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 15000,
            "type": "integer",
            "description": "Pause between requests, in milliseconds. Increase this if results start coming back incomplete.",
            "default": 800
          },
          "maxConcurrency": {
            "title": "Parallel searches",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many searches to run at once. Keeping this low (1-2) gives the most reliable results.",
            "default": 1
          },
          "maxRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry a failed request before giving up.",
            "default": 3
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}