{
  "openapi": "3.0.1",
  "info": {
    "title": "VivaReal Scraper | Brazil Real Estate BRL Pricing",
    "description": "VivaReal scraper & API for Brazilian real estate: search property for sale and rent and export address, price, condo fee, beds, baths, parking, area, type, amenities, photos and coordinates. Brazil property market data and real-estate lead generation — fast, no login.",
    "version": "1.0",
    "x-build-id": "sxnRT89EVKgIJt2gD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/haketa~vivareal-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-haketa-vivareal-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~vivareal-scraper/runs": {
      "post": {
        "operationId": "runs-sync-haketa-vivareal-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~vivareal-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-haketa-vivareal-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 to scrape",
            "enum": [
              "listings",
              "agencies"
            ],
            "type": "string",
            "description": "Property Listings = search homes, apartments, commercial units and new developments. Agency Directory = pull imobiliária (real estate agency) profiles with license, tax ID and contact details for B2B lead generation.",
            "default": "listings"
          },
          "portal": {
            "title": "Portal",
            "enum": [
              "VIVA_REAL",
              "ZAP"
            ],
            "type": "string",
            "description": "Which portal to pull from. Both share the same listings backend.",
            "default": "VIVA_REAL"
          },
          "business": {
            "title": "Deal type",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose Sale, Rental, or leave empty to get both.",
            "items": {
              "type": "string",
              "enum": [
                "SALE",
                "RENTAL"
              ],
              "enumTitles": [
                "For Sale (Venda)",
                "For Rent (Aluguel)"
              ]
            }
          },
          "listingType": {
            "title": "Listing type",
            "uniqueItems": true,
            "type": "array",
            "description": "Used = standard resale/rental inventory. Development = lançamentos, brand-new developer projects (Cyrela, EZTec, Tegra, etc). Leave empty for both.",
            "items": {
              "type": "string",
              "enum": [
                "USED",
                "DEVELOPMENT"
              ],
              "enumTitles": [
                "Used / Resale",
                "New Development (Lançamentos)"
              ]
            }
          },
          "usageTypes": {
            "title": "Usage",
            "uniqueItems": true,
            "type": "array",
            "description": "Residential (apartments, houses, penthouses) or Commercial (offices, retail, warehouses). Leave empty for both.",
            "items": {
              "type": "string",
              "enum": [
                "RESIDENTIAL",
                "COMMERCIAL"
              ],
              "enumTitles": [
                "Residential",
                "Commercial"
              ]
            }
          },
          "unitTypes": {
            "title": "Property types",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick one or more property types. 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 Condo (Casa de Condomínio)",
                "Penthouse (Cobertura)",
                "Flat",
                "Studio (Kitnet)",
                "Farm / Country (Sítio / Fazenda)",
                "Land / Lot (Lote / Terreno)",
                "Office (Sala Comercial)",
                "Commercial Building (Prédio)",
                "Commercial Unit (Conjunto Comercial)",
                "Business Point (Ponto Comercial)",
                "Warehouse (Galpão)",
                "Garage (Garagem)",
                "Hotel / Inn (Hotel / Pousada)"
              ]
            }
          },
          "states": {
            "title": "States",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose one or more Brazilian states. Leave empty to search nationwide.",
            "items": {
              "type": "string",
              "enum": [
                "SP",
                "RJ",
                "MG",
                "RS",
                "PR",
                "SC",
                "BA",
                "DF",
                "GO",
                "PE",
                "CE",
                "ES",
                "PA",
                "AM",
                "MA",
                "MT",
                "MS",
                "PB",
                "RN",
                "AL",
                "PI",
                "SE",
                "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)",
                "Amazonas (AM)",
                "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)",
                "Rondônia (RO)",
                "Tocantins (TO)",
                "Acre (AC)",
                "Amapá (AP)",
                "Roraima (RR)"
              ]
            }
          },
          "cities": {
            "title": "Cities",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose one or more major cities. Leave empty to search the whole state (or nationwide). For a city not listed here, add it in 'More cities (advanced)' below.",
            "items": {
              "type": "string",
              "enum": [
                "sao-paulo",
                "rio-de-janeiro",
                "belo-horizonte",
                "brasilia",
                "curitiba",
                "porto-alegre",
                "florianopolis",
                "salvador",
                "recife",
                "fortaleza",
                "goiania",
                "campinas",
                "guarulhos",
                "santos",
                "niteroi",
                "sorocaba",
                "ribeirao-preto",
                "sao-jose-dos-campos",
                "londrina",
                "joinville",
                "uberlandia",
                "vitoria",
                "manaus",
                "belem",
                "natal",
                "maceio",
                "campo-grande",
                "cuiaba"
              ],
              "enumTitles": [
                "São Paulo",
                "Rio de Janeiro",
                "Belo Horizonte",
                "Brasília",
                "Curitiba",
                "Porto Alegre",
                "Florianópolis",
                "Salvador",
                "Recife",
                "Fortaleza",
                "Goiânia",
                "Campinas",
                "Guarulhos",
                "Santos",
                "Niterói",
                "Sorocaba",
                "Ribeirão Preto",
                "São José dos Campos",
                "Londrina",
                "Joinville",
                "Uberlândia",
                "Vitória",
                "Manaus",
                "Belém",
                "Natal",
                "Maceió",
                "Campo Grande",
                "Cuiabá"
              ]
            }
          },
          "citiesCustom": {
            "title": "More cities (advanced)",
            "type": "array",
            "description": "Optional. Add any other city by its URL slug: lowercase, hyphenated, no accents (e.g. 'sao-bernardo-do-campo', 'foz-do-iguacu'). These are searched in addition to the cities picked above.",
            "items": {
              "type": "string"
            }
          },
          "neighborhoods": {
            "title": "Neighborhoods (advanced)",
            "type": "array",
            "description": "Optional. Narrow to specific bairros by slug: lowercase, hyphenated, no accents (e.g. 'pinheiros', 'itaim-bibi', 'copacabana'). Works best with a single city selected.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in Brazilian Reais. 0 = no minimum.",
            "default": 0
          },
          "maxPrice": {
            "title": "Max price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in Brazilian Reais. 0 = no maximum.",
            "default": 0
          },
          "minArea": {
            "title": "Min area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum usable area in square meters. 0 = no minimum.",
            "default": 0
          },
          "maxArea": {
            "title": "Max area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum usable area in square meters. 0 = no maximum.",
            "default": 0
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of bedrooms (quartos). 0 = any.",
            "default": 0
          },
          "minParkingSpaces": {
            "title": "Min parking spaces",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of parking spaces (vagas). 0 = any.",
            "default": 0
          },
          "semFiador": {
            "title": "No guarantor required (Sem Fiador)",
            "type": "boolean",
            "description": "Only show rentals that don't require a fiador (guarantor).",
            "default": false
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "newest",
              "lowest_price",
              "highest_price",
              "lowest_area",
              "highest_area"
            ],
            "type": "string",
            "description": "How to order the results.",
            "default": "relevance"
          },
          "agencyIds": {
            "title": "Agency IDs (advanced, Agency Directory mode)",
            "type": "array",
            "description": "Optional. Only used in Agency Directory mode. Provide specific imobiliária IDs to pull. Leave empty to use an ID range instead.",
            "items": {
              "type": "string"
            }
          },
          "agencyIdRangeStart": {
            "title": "Agency ID range start (advanced)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Agency Directory mode only. Start of a sequential agency ID range to discover agencies. 0 = disabled.",
            "default": 0
          },
          "agencyIdRangeEnd": {
            "title": "Agency ID range end (advanced)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Agency Directory mode only. End of the sequential agency ID range. Must be greater than the start. 0 = disabled.",
            "default": 0
          },
          "fetchAgencyListings": {
            "title": "Also fetch each agency's listings",
            "type": "boolean",
            "description": "Agency Directory mode only. When on, also pulls each agency's active property portfolio (slower). When off, saves profile details only.",
            "default": false
          },
          "maxListings": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of records to collect in total. Set 0 for unlimited.",
            "default": 100
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum pages per search combination. Each page returns up to ~24 listings. Higher = deeper coverage.",
            "default": 20
          },
          "pageSize": {
            "title": "Results per request",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many listings to fetch per request. Default 24.",
            "default": 24
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "A Brazilian residential proxy is strongly recommended for reliable results. The default uses Apify Proxy with the Residential group and Brazil country.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "BR"
            }
          },
          "requestDelay": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 15000,
            "type": "integer",
            "description": "Pause between requests in milliseconds. Increase if you hit rate limits.",
            "default": 800
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Number of searches to run in parallel. Keep low (1-2) for best reliability.",
            "default": 1
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Retry attempts per failed request.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}