{
  "openapi": "3.0.1",
  "info": {
    "title": "Zap Imoveis Scraper: Brazil Property Listings and Prices",
    "description": "Scrape Zap Imoveis (and VivaReal) by city, neighbourhood or search link: one row per listing with sale or rent price, condo fee, IPTU, areas, bedrooms, bathrooms, parking, full address with coordinates, amenities, description, photos, agency and dates. No login.",
    "version": "0.1",
    "x-build-id": "CifYDeBwcQMwWi4u2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/themineworks~zap-imoveis-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-themineworks-zap-imoveis-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/themineworks~zap-imoveis-scraper/runs": {
      "post": {
        "operationId": "runs-sync-themineworks-zap-imoveis-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/themineworks~zap-imoveis-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-themineworks-zap-imoveis-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": {
          "city": {
            "title": "City",
            "type": "string",
            "description": "Brazilian city as the site writes it, for example São Paulo, Rio de Janeiro, Curitiba or Belo Horizonte. Accents are optional."
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "State of the city, as the two letter code (SP, RJ, PR, MG) or the full name. Optional, but it picks the right city when two states have one with the same name."
          },
          "neighborhoods": {
            "title": "Neighbourhoods (optional)",
            "type": "array",
            "description": "Neighbourhoods (bairros) of that city, one per line, for example Pinheiros, Vila Mariana, Moema. Each one is its own search. Leave empty to search the whole city.",
            "items": {
              "type": "string"
            }
          },
          "businessType": {
            "title": "For sale or for rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Listings for sale (venda) or for rent (aluguel).",
            "default": "sale"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "all",
              "apartment",
              "house",
              "two_story_house",
              "condo_house",
              "village_house",
              "penthouse",
              "flat",
              "kitnet",
              "studio",
              "loft",
              "land",
              "farm",
              "office",
              "retail",
              "warehouse",
              "commercial_building"
            ],
            "type": "string",
            "description": "One property type, as in the site's type menu. All types by default.",
            "default": "all"
          },
          "minPrice": {
            "title": "Minimum price (R$)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in reais: the sale price, or the monthly rent for rentals. Example: 500000."
          },
          "maxPrice": {
            "title": "Maximum price (R$)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in reais: the sale price, or the monthly rent for rentals. Example: 1500000."
          },
          "bedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "At least this many bedrooms (quartos), 1 to 4. 4 means 4 or more."
          },
          "bathrooms": {
            "title": "Minimum bathrooms",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "At least this many bathrooms, 1 to 4. 4 means 4 or more."
          },
          "parkingSpaces": {
            "title": "Minimum parking spaces",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "At least this many parking spaces (vagas), 1 to 4. 4 means 4 or more."
          },
          "minArea": {
            "title": "Minimum usable area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest usable area in square metres. Example: 60."
          },
          "maxArea": {
            "title": "Maximum usable area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Largest usable area in square metres. Example: 200."
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "relevance",
              "newest",
              "lowest_price"
            ],
            "type": "string",
            "description": "Order of the results: the site's own relevance order, newest first, or lowest price first.",
            "default": "relevance"
          },
          "startUrls": {
            "title": "Search links (optional)",
            "type": "array",
            "description": "Results links copied from your browser on zapimoveis.com.br or vivareal.com.br, for example https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo+zona-oeste+pinheiros/?quartos=2,3 or https://www.vivareal.com.br/aluguel/rj/rio-de-janeiro/. Each link is its own search and keeps its own location, type and filters (bedrooms, bathrooms, parking, price and area); the form filters above apply to the city field only.",
            "items": {
              "type": "string"
            }
          },
          "source": {
            "title": "Site for the city search",
            "enum": [
              "zap",
              "vivareal"
            ],
            "type": "string",
            "description": "Zap Imoveis or VivaReal for the city and neighbourhood fields. Both sites belong to Grupo ZAP and share one listing database, so most listings appear on both; links in startUrls always use the site they come from.",
            "default": "zap"
          },
          "maxItems": {
            "title": "Max listings per search",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "The most listings to return for each search (each neighbourhood, city or link), 1 to 10,000. The site serves 1,500 per search; above 1,400 the actor reads the search in price bands to go further. Example: 500.",
            "default": 50
          },
          "includeDetails": {
            "title": "Read each listing's full text (title and description)",
            "type": "boolean",
            "description": "On: one extra small request per listing for its own title and full description, which the search pages show only for paid placements. Off: rows come from the search pages only, about twice as fast; the title is then the site's short name such as \"Apartamento com 3 Quartos à venda, 100m²\" and most rows have no description. Same price either way.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify residential proxy in Brazil by default, included in the price. The site blocks datacenter IPs after a few requests.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "BR"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}