{
  "openapi": "3.0.1",
  "info": {
    "title": "Brazil Real Estate Scraper — OLX, QuintoAndar, Airbnb",
    "description": "Scrape Brazilian real estate from 4 platforms: OLX Imoveis, QuintoAndar, ImovelWeb, and Airbnb. Extract houses, apartments, prices, condo fees, and IPTU. Filter by city, price, and rooms. Sale, rent, or vacation — for investors, lead generation, and market analysis.",
    "version": "2.5",
    "x-build-id": "nPpDkZwphJc7iHqUk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/viralanalyzer~brazil-real-estate-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-viralanalyzer-brazil-real-estate-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/viralanalyzer~brazil-real-estate-scraper/runs": {
      "post": {
        "operationId": "runs-sync-viralanalyzer-brazil-real-estate-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/viralanalyzer~brazil-real-estate-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-viralanalyzer-brazil-real-estate-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": [
          "state"
        ],
        "properties": {
          "transactionType": {
            "title": "Transaction Type",
            "enum": [
              "sale",
              "rent",
              "vacation"
            ],
            "type": "string",
            "description": "Type of transaction to search for.",
            "default": "sale"
          },
          "propertyType": {
            "title": "Property Type",
            "enum": [
              "all",
              "apartments",
              "houses",
              "land",
              "commercial"
            ],
            "type": "string",
            "description": "Type of property to search for. Leave 'all' for all types.",
            "default": "all"
          },
          "state": {
            "title": "State (UF)",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Brazilian state code (2 letters). Example: sp, rj, mg, ba, pr, rs, etc.",
            "default": "sp"
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City name or URL slug (optional). OLX results are strictly post-filtered by municipality. Examples: 'brasilia', 'sao-paulo', 'rio-de-janeiro'. Leave empty for the entire state."
          },
          "region": {
            "title": "Region / Neighborhood",
            "type": "string",
            "description": "For OLX, an administrative region or neighborhood to match strictly after extraction. Use a human name or slug, for example 'Taguatinga', 'aguas-claras', or 'Vicente Pires'. Legacy OLX metropolitan URL segments such as 'grande-sao-paulo' remain supported."
          },
          "priceMin": {
            "title": "Minimum Price (R$)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price filter in BRL. Example: 200000 for R$ 200.000"
          },
          "priceMax": {
            "title": "Maximum Price (R$)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price filter in BRL. Example: 500000 for R$ 500.000"
          },
          "bedroomsMin": {
            "title": "Minimum Bedrooms",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Minimum number of bedrooms."
          },
          "bathroomsMin": {
            "title": "Minimum Bathrooms",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Minimum number of bathrooms."
          },
          "areaMin": {
            "title": "Minimum Area (m²)",
            "minimum": 1,
            "type": "integer",
            "description": "Minimum property area in square meters."
          },
          "maxListings": {
            "title": "Max Listings",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of listings to extract. Paying Apify users are recognized automatically and can request the full limit; no separate Actor subscription is required. Free-plan evaluation runs are limited to 20 listings.",
            "default": 100
          },
          "includeDescription": {
            "title": "Include Full Description",
            "type": "boolean",
            "description": "For OLX, fetch each public listing detail page to return the full description plus available public seller fields. Hidden phone numbers are never revealed. Slower but more complete. When OFF, only search-page data is extracted.",
            "default": false
          },
          "sources": {
            "title": "Data Sources",
            "enum": [
              "all",
              "olx",
              "quintoandar",
              "imovelweb",
              "airbnb"
            ],
            "type": "string",
            "description": "Which real estate platforms to scrape. Vacation mode only uses Airbnb.",
            "default": "all"
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Optional. OLX works on a direct connection. ImovelWeb, QuintoAndar and Airbnb require RESIDENTIAL proxies — the actor automatically uses Apify RESIDENTIAL (Brazil) for those sources when you leave this empty. Provide your own RESIDENTIAL proxy here to override."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}