{
  "openapi": "3.0.1",
  "info": {
    "title": "Zap Imóveis & VivaReal Scraper | Brazil Property Listings API",
    "description": "$1 per 1,000 listings | Scrape Zap Imóveis and VivaReal (Brazil): price, condo fee, IPTU, area, bedrooms, parking, address with lat/long, neighborhood, created date, agency and CRECI. Sale or rent, any city, newest first, only-new mode for daily feeds. No login, no proxy.",
    "version": "0.1",
    "x-build-id": "XmvVVBfTH4W2NbZY1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data_daemon~zap-imoveis-vivareal-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data_daemon-zap-imoveis-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/data_daemon~zap-imoveis-vivareal-scraper/runs": {
      "post": {
        "operationId": "runs-sync-data_daemon-zap-imoveis-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/data_daemon~zap-imoveis-vivareal-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-data_daemon-zap-imoveis-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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "One per line: \"City, UF\" (e.g. `São Paulo, SP`, `Curitiba, PR`, `Belo Horizonte, MG`) or a state code alone (`SC`) for the whole state. Capitals and large cities also work without the state. Each location is its own search. City names are matched as the portals spell them, accents included.",
            "default": [
              "São Paulo, SP"
            ],
            "items": {
              "type": "string"
            }
          },
          "business": {
            "title": "Sale or rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Listings for sale (`sale`) or for rent (`rent`; `priceBrl` is the rent per `rentalPeriod`, monthly by default).",
            "default": "sale"
          },
          "includeShortStays": {
            "title": "Include short-stay rentals",
            "type": "boolean",
            "description": "Rentals only: also return listings priced per day (temporada / short stays). Off by default, so every rent is monthly.",
            "default": false
          },
          "portals": {
            "title": "Portals",
            "type": "array",
            "description": "`zap` (zapimoveis.com.br), `vivareal` (vivareal.com.br) or both. Both portals belong to OLX Brasil and read one listing database (1,610 of 1,612 listings were on both in a 31 Oct 2026 test), so one portal is enough; with both selected a listing id is delivered once.",
            "items": {
              "type": "string",
              "enum": [
                "zap",
                "vivareal"
              ],
              "enumTitles": [
                "Zap Imóveis",
                "VivaReal"
              ]
            },
            "default": [
              "zap"
            ]
          },
          "listingType": {
            "title": "Listing type",
            "enum": [
              "used",
              "development",
              "both"
            ],
            "type": "string",
            "description": "`used`: properties listed by owners and agencies (resale and rentals). `development`: new launches (lançamentos) from developers. `both`: run both.",
            "default": "used"
          },
          "neighborhoods": {
            "title": "Neighborhoods (optional)",
            "type": "array",
            "description": "Bairro names as the portals spell them, e.g. `Pinheiros`, `Moema`, `Copacabana`. Each neighborhood is searched in every location.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "propertyTypes": {
            "title": "Property types (optional)",
            "type": "array",
            "description": "Keep only these types: `apartment`, `house`, `condominium` (casa de condomínio), `penthouse`, `flat`, `studio`, `land`, `commercial`, `office`, `warehouse`, `farm`, `parking`, or a raw code such as `APARTMENT`. Checked on each listing; others are not charged.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Sale price, or monthly rent for rentals. Leave empty for no limit."
          },
          "maxPrice": {
            "title": "Maximum price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Sale price, or monthly rent for rentals. Leave empty for no limit."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings with at least this many bedrooms."
          },
          "minArea": {
            "title": "Minimum usable area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings with at least this usable area."
          },
          "postedWithinDays": {
            "title": "Listed within the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings created in the last N days (by the portal's `createdAt`). With the default newest-first order the run stops reading a search once it reaches older listings."
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "newest",
              "relevance"
            ],
            "type": "string",
            "description": "`newest` (created date, newest first) or `relevance` (the portal's default order).",
            "default": "newest"
          },
          "includeImages": {
            "title": "Include image URLs",
            "type": "boolean",
            "description": "Up to 10 photo URLs per listing in `imageUrls`.",
            "default": true
          },
          "maxResultsPerSearch": {
            "title": "Max listings per search",
            "minimum": 0,
            "type": "integer",
            "description": "Cap per location (and neighborhood). 0 = no cap. Searches with more than ~1,000 listings are split into price bands automatically.",
            "default": 0
          },
          "maxResults": {
            "title": "Max listings in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many saved listings (default 50, about $0.05). 0 = no cap (the run's maximum cost still applies).",
            "default": 50
          },
          "onlyNewSinceLastRun": {
            "title": "Only new listings since the last run",
            "type": "boolean",
            "description": "Remember delivered listing ids in a key-value store named `zap-vivareal-state` in your account and skip them next time (not charged). Use with a schedule for a daily new-listings feed.",
            "default": false
          },
          "stateName": {
            "title": "Memory name for only-new mode",
            "type": "string",
            "description": "Name of the only-new memory. By default it follows portals, sale/rent, locations and neighborhoods, so different feeds don't mix."
          },
          "skipIds": {
            "title": "Listing ids to skip",
            "type": "array",
            "description": "Listing ids you already have. They are neither saved nor charged.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed: the listings service answers Apify's servers directly.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}