// docs

VivaReal PLP

Extrai resultados de busca do VivaReal para venda, aluguel e lançamentos, com paginação, filtros imobiliários, anunciante, preços, mídia e atributos normalizados.

Nota importante: alguns campos podem retornar null em produção, dependendo da página de origem. Nesta documentação, os exemplos de output são preenchidos intencionalmente com valores não nulos para facilitar integração.

Quando a entidade consultada não existe na origem, o extract e a tool MCP retornam 200 com data: null e notFound: true. Esse caso é tratado como resposta concluída, não como erro de servidor.

Chamada HTTP

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "target": "vivareal.com.br",
  "type": "plp",
  "businessType": "sale",
  "state": "SP",
  "city": "São Paulo",
  "neighborhood": "Vila Mariana",
  "propertyTypes": [
    "apartment",
    "penthouse"
  ],
  "amenities": [
    "pool",
    "balcony"
  ],
  "bedrooms": [
    2,
    3
  ],
  "bathrooms": [
    2
  ],
  "parkingSpots": [
    1,
    2
  ],
  "priceMin": 500000,
  "priceMax": 1200000,
  "areaMin": 70,
  "areaMax": 180,
  "sort": "biggest_area",
  "page": 1
}'

Chamada MCP

A mesma seam também aparece no MCP hospedado como uma tool dedicada. Os argumentos reaproveitam os campos do extract, mas target e type já ficam fixos pela tool.

Ver guia completo do MCP

Endpoint

POST /v1/mcp

Tool name

vivareal_com_br_plp

Auth

Bearer ou X-API-Key

vivareal_com_br_plp tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "vivareal_com_br_plp",
    "arguments": {
      "businessType": "sale",
      "state": "SP",
      "city": "São Paulo",
      "neighborhood": "Vila Mariana",
      "propertyTypes": [
        "apartment",
        "penthouse"
      ],
      "amenities": [
        "pool",
        "balcony"
      ],
      "bedrooms": [
        2,
        3
      ],
      "bathrooms": [
        2
      ],
      "parkingSpots": [
        1,
        2
      ],
      "priceMin": 500000,
      "priceMax": 1200000,
      "areaMin": 70,
      "areaMax": 180,
      "sort": "biggest_area",
      "page": 1,
      "executionId": "exec_example_123"
    }
  }
}

Possibilidades de input

Campos suportados nesta API do POST /v1/extract, com regras específicas de obrigatoriedade e condicionais.

Campo Tipo Status Regra Default Exemplo
url
URL alvo da extração. Para alguns PLPs pode ser omitida quando a API monta a URL a partir de outros campos.
string (URL) Condicional Envie uma URL pública de resultados do domínio vivareal.com.br ou use businessType para a busca estruturada. No modo URL, todos os parâmetros são preservados, incluindo precoMinimoCondo/precoMaximoCondo, proximoMetro, stamps=Datazap e filtros de construção como tipo=Na planta. - https://www.mercadolivre.com.br/p/MLB123456
latitude
Latitude da area de busca. Deve ser enviada junto com longitude. Suportada em Airbnb PLP, Zap Imóveis PLP, VivaReal PLP, Chaves na Mão PLP e Webmotors PLP.
number Opcional Coordenada opcional da busca estruturada. Deve ser enviada junto com longitude. - -25.4284
longitude
Longitude da area de busca. Deve ser enviada junto com latitude. Suportada em Airbnb PLP, Zap Imóveis PLP, VivaReal PLP, Chaves na Mão PLP e Webmotors PLP.
number Opcional Coordenada opcional da busca estruturada. Deve ser enviada junto com latitude. - -49.2733
city
Cidade usada em buscas estruturadas de imóveis e veículos e opcionalmente em Catho PLP. Em VivaReal, requer state.
string Opcional Cidade da busca estruturada. Quando enviada, state também é obrigatório. - Sao Paulo
neighborhood
Bairro usado na Chaves na Mão PLP e VivaReal PLP. Requer city + state quando enviado.
string Opcional Bairro da busca estruturada. Requer city e state. - Centro
state
UF usada em buscas estruturadas de imóveis e veículos e opcionalmente em Catho PLP.
string (UF 2 letras) Opcional UF brasileira com 2 letras. Obrigatória quando city é enviada. - SP
businessType
Tipo de negócio usado no Zapimoveis, VivaReal e Chaves na Mão PLP para escolher entre venda (sale) e aluguel (rent).
"sale" | "rent" Condicional Obrigatório quando url não é enviada. Aceita sale/rent e os aliases venda/aluguel. - sale
bedrooms
Filtro de quartos em buscas imobiliárias PLP. Aceita lista de inteiros (ex: [2,3,4]).
integer[] Opcional Lista de quantidades de quartos, com inteiros de 0 a 20. - [2,3,4]
bathrooms
Filtro de banheiros em buscas imobiliárias PLP. Aceita lista de inteiros (ex: [2,3,4]).
integer[] Opcional Lista de quantidades de banheiros, com inteiros de 0 a 20. - [2,3,4]
parkingSpots
Filtro de vagas em buscas imobiliárias PLP. Aceita lista de inteiros (ex: [2,3,4]).
integer[] Opcional Lista de quantidades de vagas, com inteiros de 0 a 20. - [2,3,4]
propertyTypes
Tipos de imóvel para Chaves na Mão e VivaReal PLP. Aceita aliases amigáveis como apartment, house, penthouse, land, commercial_room e loft.
array<string | integer> Opcional Tipos de imóvel da busca estruturada. Aliases suportados incluem apartment, house, two_story_house, condominium, penthouse, kitnet, flat, land, farm, warehouse, commercial_point e commercial_room. - ["apartment", "house"]
amenities
Amenidades para Chaves na Mão e VivaReal PLP. Aliases comuns: pool, balcony, garden, furnished e backyard.
array<string | integer> Opcional Amenidades da busca estruturada. Aceita nomes como pool, balcony, furnished e pets_allowed, normalizados para o upstream. - ["pool", "balcony"]
directOwner
Filtro de anunciante direto/particular na Chaves na Mão e VivaReal PLP.
boolean Opcional Quando true, limita a busca estruturada a anúncios com contractType OWNER. false true
condominium
Filtro para imóveis em condomínio na Chaves na Mão e VivaReal PLP.
boolean Opcional Quando true, inclui o tipo de unidade condomínio na busca estruturada. false true
includeLaunches
Controla a inclusão de lançamentos em buscas imobiliárias PLP. No VivaReal, combina listagens usadas e empreendimentos quando true.
boolean Opcional Quando false, a busca estruturada restringe listingType a USED; quando true, permite também lançamentos e empreendimentos. false false
priceMin
Preço mínimo para buscas PLP de imóveis e veículos.
integer Opcional Preço mínimo, inteiro maior ou igual a zero. - 1000
priceMax
Preço máximo para buscas PLP de imóveis e veículos.
integer Opcional Preço máximo, inteiro maior ou igual a priceMin. - 2000
areaMin
Área mínima (m²) para buscas imobiliárias PLP.
integer Opcional Área útil mínima em m², inteira e maior ou igual a zero. - 80
areaMax
Área máxima (m²) para buscas imobiliárias PLP.
integer Opcional Área útil máxima em m², inteira e maior ou igual a areaMin. - 220
sort
Ordenacao para VivaReal, Chaves na Mão, OLX e Webmotors PLP, Booking Review e Hoteis Review. VivaReal: relevance/date/price/biggest_price/biggest_area. Webmotors: relevance/price/biggest_price/year_desc/mileage_asc. OLX: relevance/date/price/biggest_price/price_relevance. Booking/Hoteis Review: most_relevant/newest_first/oldest_first/score_desc/score_asc.
"relevance" | "date" | "price" | "biggest_price" | "biggest_area" | "price_relevance" | "most_relevant" | "newest_first" | "oldest_first" | "score_desc" | "score_asc" | "year_desc" | "mileage_asc" Opcional Ordenação da busca estruturada: relevance, date, price, biggest_price ou biggest_area. relevance date
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatório e deve ser vivareal.com.br. - mercadolivre.com.br
type
Tipo da extração: pdp, idp, plp, ilp, quote, review ou places.
enum Obrigatório Sempre obrigatório e deve ser plp. - pdp
page
Paginacao. Em PLP, inclusive Trivago, e no Reclame AQUI ILP inicia em 1; em review (MercadoLivre, Booking e Hoteis) inicia em 0. O Reclame AQUI ILP aceita ate a pagina 100.
integer Opcional Página 1-based, entre 1 e 500. No modo URL, sobrescreve o parâmetro pagina. 1 2

Exemplos de request

Busca estruturada com filtros

Fluxo recomendado: envie businessType e os filtros desejados. Localização é opcional; city requer state e neighborhood requer city + state.

Busca estruturada com filtros
{
  "target": "vivareal.com.br",
  "type": "plp",
  "businessType": "sale",
  "state": "SP",
  "city": "São Paulo",
  "neighborhood": "Vila Mariana",
  "propertyTypes": [
    "apartment",
    "penthouse"
  ],
  "amenities": [
    "pool",
    "balcony"
  ],
  "bedrooms": [
    2,
    3
  ],
  "bathrooms": [
    2
  ],
  "parkingSpots": [
    1,
    2
  ],
  "priceMin": 500000,
  "priceMax": 1200000,
  "areaMin": 70,
  "areaMax": 180,
  "sort": "biggest_area",
  "page": 1
}

Busca por URL pública

Envie uma URL de resultados para preservar a navegação e os filtros expostos pelo VivaReal. page pode sobrescrever pagina da URL.

Busca por URL pública
{
  "target": "vivareal.com.br",
  "type": "plp",
  "url": "https://www.vivareal.com.br/venda/sp/sao-paulo/casa_residencial/?precoMaximo=1200000&proximoMetro=true&stamps=Datazap",
  "page": 2
}

Lançamentos com filtros avançados da URL

A URL é a forma de preservar filtros avançados da interface, como condomínio, proximidade do metrô, selo abaixo do mercado e estágio da obra.

Lançamentos com filtros avançados da URL
{
  "target": "vivareal.com.br",
  "type": "plp",
  "url": "https://www.vivareal.com.br/imoveis-lancamento/sao-paulo/apartamento_residencial/status-na-planta/?precoMinimo=300000&precoMaximo=1200000&precoMinimoCondo=100&precoMaximoCondo=1500&proximoMetro=true&stamps=Datazap&tipo=Na+planta",
  "page": 1
}

Schema de response (leaf paths)

Mapa de paths de saída com tipo esperado para esta API.

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "notFound": "boolean (optional; true only when upstream reports a missing entity and data is null)",
  "data.source": "\"vivareal.com.br\"",
  "data.type": "\"plp\"",
  "data.parser": "\"glue_api\" | \"next_flight\" | \"jsonld\"",
  "data.url": "string (URL pública normalizada)",
  "data.responseUrl": "string (URL final após redirects)",
  "data.apiUrl": "string | null",
  "data.extractedAt": "string (ISO datetime)",
  "data.searchId": "string | null",
  "data.meta": "object | null",
  "data.meta.title": "string | null",
  "data.meta.description": "string | null",
  "data.meta.robots": "string | null",
  "data.meta.primaryHeading": "string | null",
  "data.filters": "object",
  "data.filters.businessType": "\"sale\" | \"rent\"",
  "data.filters.state": "string | null",
  "data.filters.stateName": "string | null",
  "data.filters.city": "string | null",
  "data.filters.neighborhood": "string | null",
  "data.filters.propertyTypes[]": "string",
  "data.filters.amenities[]": "string",
  "data.filters.bedrooms[]": "integer",
  "data.filters.bathrooms[]": "integer",
  "data.filters.parkingSpots[]": "integer",
  "data.filters.priceMin": "integer | null",
  "data.filters.priceMax": "integer | null",
  "data.filters.areaMin": "integer | null",
  "data.filters.areaMax": "integer | null",
  "data.filters.sort": "string",
  "data.filters.directOwner": "boolean",
  "data.filters.condominium": "boolean",
  "data.filters.includeLaunches": "boolean",
  "data.filters.latitude": "number | null",
  "data.filters.longitude": "number | null",
  "data.filters.page": "integer",
  "data.totalResults": "integer",
  "data.primaryResults": "integer",
  "data.page": "integer",
  "data.resultsPerPage": "integer",
  "data.offset": "integer",
  "data.nextPage": "integer | null",
  "data.nextPageUrl": "string | null",
  "data.facets": "array<object>",
  "data.items[].position": "integer | null",
  "data.items[].id": "string | null",
  "data.items[].sourceId": "string | null",
  "data.items[].externalId": "string | null",
  "data.items[].legacyId": "string | null",
  "data.items[].title": "string | null",
  "data.items[].description": "string | null",
  "data.items[].url": "string | null",
  "data.items[].businessType": "string | null",
  "data.items[].listingType": "string | null",
  "data.items[].propertyType": "string | null",
  "data.items[].unitTypes[]": "string",
  "data.items[].unitSubTypes[]": "string",
  "data.items[].usageTypes[]": "string",
  "data.items[].contractType": "string | null",
  "data.items[].publicationType": "string | null",
  "data.items[].status": "string | null",
  "data.items[].nonActivationReason": "string | null",
  "data.items[].constructionStatus": "string | null",
  "data.items[].condominiumName": "string | null",
  "data.items[].createdAt": "string | null",
  "data.items[].updatedAt": "string | null",
  "data.items[].prices[].businessType": "string | null",
  "data.items[].prices[].value": "number | null",
  "data.items[].prices[].condominium": "number | null",
  "data.items[].prices[].iptu": "number | null",
  "data.items[].prices[].iptuPeriod": "string | null",
  "data.items[].prices[].rentalPeriod": "string | null",
  "data.items[].prices[].multiple": "boolean | null",
  "data.items[].attributes.usableAreas[]": "number",
  "data.items[].attributes.totalAreas[]": "number",
  "data.items[].attributes.bedrooms[]": "number",
  "data.items[].attributes.bathrooms[]": "number",
  "data.items[].attributes.suites[]": "number",
  "data.items[].attributes.parkingSpaces[]": "number",
  "data.items[].attributes.floors[]": "number",
  "data.items[].attributes.unitFloor": "integer | null",
  "data.items[].attributes.unitsOnTheFloor": "integer | null",
  "data.items[].attributes.ceilingHeights[]": "number",
  "data.items[].attributes.capacityLimits[]": "number",
  "data.items[].address": "object | null",
  "data.items[].address.country": "string | null",
  "data.items[].address.state": "string | null",
  "data.items[].address.stateAcronym": "string | null",
  "data.items[].address.city": "string | null",
  "data.items[].address.zone": "string | null",
  "data.items[].address.neighborhood": "string | null",
  "data.items[].address.street": "string | null",
  "data.items[].address.streetNumber": "string | null",
  "data.items[].address.zipCode": "string | null",
  "data.items[].address.fullAddress": "string | null",
  "data.items[].address.locationId": "string | null",
  "data.items[].address.displayType": "string | null",
  "data.items[].address.approximate": "boolean | null",
  "data.items[].address.coordinates.latitude": "number",
  "data.items[].address.coordinates.longitude": "number",
  "data.items[].address.nearby": "object | null",
  "data.items[].amenities[]": "string",
  "data.items[].mergedAmenities[]": "string",
  "data.items[].aiAmenities[]": "string",
  "data.items[].stamps[]": "string",
  "data.items[].flags": "record<string, string>",
  "data.items[].advertiser.id": "string | null",
  "data.items[].advertiser.legacyId": "string | null",
  "data.items[].advertiser.name": "string | null",
  "data.items[].advertiser.url": "string | null",
  "data.items[].advertiser.tier": "string | null",
  "data.items[].advertiser.license": "string | null",
  "data.items[].advertiser.createdAt": "string | null",
  "data.items[].advertiser.verified": "boolean | null",
  "data.items[].advertiser.listingsCount": "integer | null",
  "data.items[].advertiser.rating": "number | null",
  "data.items[].advertiser.imageUrl": "string | null",
  "data.items[].advertiser.websiteUrl": "string | null",
  "data.items[].advertiser.phoneNumbers[]": "string",
  "data.items[].advertiser.whatsappNumber": "string | null",
  "data.items[].advertiser.addresses": "object | null",
  "data.items[].media[].id": "string | null",
  "data.items[].media[].type": "string | null",
  "data.items[].media[].url": "string | null",
  "data.items[].media[].alt": "string | null",
  "data.items[].media[].seo": "boolean | null",
  "data.items[].videos": "array<media>",
  "data.items[].floorPlans": "array<media>",
  "data.items[].propertyDevelopers": "array<developer>",
  "data.items[].children": "array<VivaRealListing>",
  "data.items[].showPrice": "boolean | null",
  "data.items[].acceptExchange": "boolean | null",
  "data.items[].resale": "boolean | null",
  "data.items[].transacted": "boolean | null",
  "data.items[].uniqueUnit": "boolean | null",
  "data.items[].noWarrantorRent": "boolean | null",
  "data.items[].enhancedDevelopment": "boolean | null",
  "data.items[].tripleBundle": "boolean | null",
  "data.items[].videoTourUrl": "string | null",
  "data.items[].whatsappNumber": "string | null",
  "data.items[].decoratedVisitCalendar": "array<object>",
  "data.items[].constructionStatusCalendar": "array<object>"
}

Exemplo de response

responseExample
{
  "requestId": "4c22d970-a1d0-4d3f-a688-c128e2f97301",
  "executionId": "4c22d970-a1d0-4d3f-a688-c128e2f97302",
  "data": {
    "source": "vivareal.com.br",
    "type": "plp",
    "parser": "glue_api",
    "url": "https://www.vivareal.com.br/venda/sp/sao-paulo/vila-mariana/apartamento_residencial/?quartos=2%2C3&precoMinimo=500000&precoMaximo=1200000&areaMinima=70&areaMaxima=180&ordem=BIGGEST_AREA",
    "responseUrl": "https://glue-api.vivareal.com/v2/listings?business=SALE&addressCity=Sao+Paulo&page=1&size=30",
    "apiUrl": "https://glue-api.vivareal.com/v2/listings?business=SALE&addressCity=Sao+Paulo&addressState=Sao+Paulo&unitTypes=APARTMENT&page=1&size=30",
    "extractedAt": "2026-07-12T15:40:00.000Z",
    "searchId": "vr-search-7b8f2b",
    "meta": {
      "title": "Apartamentos à venda em Vila Mariana, São Paulo",
      "description": "Apartamentos à venda em Vila Mariana com fotos, preços e detalhes.",
      "robots": "index,follow",
      "primaryHeading": "Apartamentos à venda em Vila Mariana"
    },
    "filters": {
      "businessType": "sale",
      "state": "SP",
      "stateName": "São Paulo",
      "city": "São Paulo",
      "neighborhood": "Vila Mariana",
      "propertyTypes": [
        "apartment"
      ],
      "amenities": [
        "POOL",
        "BALCONY"
      ],
      "bedrooms": [
        2,
        3
      ],
      "bathrooms": [
        2
      ],
      "parkingSpots": [
        1,
        2
      ],
      "priceMin": 500000,
      "priceMax": 1200000,
      "areaMin": 70,
      "areaMax": 180,
      "sort": "biggest_area",
      "directOwner": false,
      "condominium": false,
      "includeLaunches": false,
      "latitude": -23.5892,
      "longitude": -46.6344,
      "page": 1
    },
    "totalResults": 1842,
    "primaryResults": 30,
    "page": 1,
    "resultsPerPage": 30,
    "offset": 0,
    "nextPage": 2,
    "nextPageUrl": "https://www.vivareal.com.br/venda/sp/sao-paulo/vila-mariana/apartamento_residencial/?pagina=2",
    "facets": [
      {
        "name": "unitTypes",
        "value": [
          "APARTMENT",
          "PENTHOUSE"
        ]
      }
    ],
    "items": [
      {
        "position": 1,
        "id": "2787552284",
        "sourceId": "VR-SP-2787552284",
        "externalId": "CA12345",
        "legacyId": "987654321",
        "title": "Apartamento com 3 quartos e varanda na Vila Mariana",
        "description": "Apartamento bem iluminado, com lazer completo e duas vagas.",
        "url": "https://www.vivareal.com.br/imovel/apartamento-3-quartos-vila-mariana-sao-paulo-com-garagem-112m2-venda-RS980000-id-2787552284/",
        "businessType": "SALE",
        "listingType": "USED",
        "propertyType": "UNIT",
        "unitTypes": [
          "APARTMENT"
        ],
        "unitSubTypes": [
          "STANDARD"
        ],
        "usageTypes": [
          "RESIDENTIAL"
        ],
        "contractType": "BROKER",
        "publicationType": "PREMIUM",
        "status": "ACTIVE",
        "nonActivationReason": "NONE",
        "constructionStatus": "BUILT",
        "condominiumName": "Residencial Vila Verde",
        "createdAt": "2026-05-10T12:30:00.000Z",
        "updatedAt": "2026-07-11T18:45:00.000Z",
        "prices": [
          {
            "businessType": "SALE",
            "value": 980000,
            "condominium": 780,
            "iptu": 2650,
            "iptuPeriod": "YEARLY",
            "rentalPeriod": "MONTHLY",
            "multiple": false
          }
        ],
        "attributes": {
          "usableAreas": [
            112
          ],
          "totalAreas": [
            145
          ],
          "bedrooms": [
            3
          ],
          "bathrooms": [
            2
          ],
          "suites": [
            1
          ],
          "parkingSpaces": [
            2
          ],
          "floors": [
            14
          ],
          "unitFloor": 8,
          "unitsOnTheFloor": 4,
          "ceilingHeights": [
            2.7
          ],
          "capacityLimits": [
            6
          ]
        },
        "address": {
          "country": "Brasil",
          "state": "São Paulo",
          "stateAcronym": "SP",
          "city": "São Paulo",
          "zone": "Zona Sul",
          "neighborhood": "Vila Mariana",
          "street": "Rua Domingos de Morais",
          "streetNumber": "1200",
          "zipCode": "04010000",
          "fullAddress": "Rua Domingos de Morais, Vila Mariana, São Paulo - SP",
          "locationId": "BR-SAO-PAULO-VILA-MARIANA",
          "displayType": "ALL",
          "approximate": false,
          "coordinates": {
            "latitude": -23.5892,
            "longitude": -46.6344
          },
          "nearby": {
            "subway": "Vila Mariana",
            "distanceMeters": 450
          }
        },
        "amenities": [
          "POOL",
          "BALCONY",
          "ELEVATOR"
        ],
        "mergedAmenities": [
          "POOL",
          "BALCONY",
          "GYM"
        ],
        "aiAmenities": [
          "NATURAL_LIGHT",
          "OPEN_VIEW"
        ],
        "stamps": [
          "Datazap"
        ],
        "flags": {
          "FEATURED": "true"
        },
        "advertiser": {
          "id": "55123",
          "legacyId": "179386",
          "name": "Imobiliária Exemplo",
          "url": "https://www.vivareal.com.br/imobiliaria/imobiliaria-exemplo-55123/",
          "tier": "PREMIUM",
          "license": "CRECI J-12345-SP",
          "createdAt": "2018-03-09T10:00:00.000Z",
          "verified": true,
          "listingsCount": 169,
          "rating": 4.7,
          "imageUrl": "https://resizedimgs.vivareal.com/fit-in/900x900/vr.images.sp/logo.webp",
          "websiteUrl": "https://www.imobiliaria-exemplo.com.br/",
          "phoneNumbers": [
            "1130001000"
          ],
          "whatsappNumber": "11987654321",
          "addresses": {
            "city": "São Paulo",
            "state": "SP"
          }
        },
        "media": [
          {
            "id": "image-1",
            "type": "IMAGE",
            "url": "https://resizedimgs.vivareal.com/fit-in/900x900/vr.images.sp/imovel-1.webp",
            "alt": "Sala do apartamento",
            "seo": true
          }
        ],
        "videos": [],
        "floorPlans": [],
        "propertyDevelopers": [],
        "children": [],
        "showPrice": true,
        "acceptExchange": false,
        "resale": true,
        "transacted": false,
        "uniqueUnit": true,
        "noWarrantorRent": false,
        "enhancedDevelopment": false,
        "tripleBundle": false,
        "videoTourUrl": "https://tour.example.com/2787552284",
        "whatsappNumber": "11987654321",
        "decoratedVisitCalendar": [],
        "constructionStatusCalendar": []
      }
    ]
  }
}

Referência completa de campos

Path Tipo Descrição Exemplo
data.apiUrl string | null URL da API interna quando a busca estruturada usa Glue; pode ser null nos modos de página. https://glue-api.vivareal.com/v2/listings?business=SALE&addressCity=Sao+Paulo&addressState=Sao+Paulo&unitTypes=APARTMENT&page=1&size=30
data.extractedAt string (ISO datetime) Timestamp UTC da extração. 2026-07-12T15:40:00.000Z
data.facets array<object> Facetas dinâmicas retornadas pela API interna, quando disponíveis. [{"name":"unitTypes","value":["APARTMENT","PENTHOUSE"]}]
data.filters object Filtros normalizados da busca estruturada ou fragmentos de URI retornados pelo VivaReal no modo URL. {"businessType":"sale","state":"SP","stateName":"São Paulo","city":"São Paulo","neighborhood":"Vila Mariana","propertyTypes":["apartment"],"amenities":["POOL","BALCONY"],"bedrooms":[2,3],"bathrooms":[2],"parkingSpots":[1,2],"priceMin":500000,"priceMax":1200000,"areaMin":70,"areaMax":180,"sort":"biggest_area","directOwner":false,"condominium":false,"includeLaunches":false,"latitude":-23.5892,"longitude":-46.6344,"page":1}
data.filters.amenities[] string Amenidades aplicadas. POOL
data.filters.areaMax integer | null Área útil máxima aplicada. 180
data.filters.areaMin integer | null Área útil mínima aplicada. 70
data.filters.bathrooms[] integer Quantidades de banheiros selecionadas. 2
data.filters.bedrooms[] integer Quantidades de quartos selecionadas. 2
data.filters.businessType "sale" | "rent" Tipo de negócio normalizado. sale
data.filters.city string | null Cidade da busca. São Paulo
data.filters.condominium boolean Indica inclusão do tipo condomínio. false
data.filters.directOwner boolean Indica filtro por anunciante direto. false
data.filters.includeLaunches boolean Indica se lançamentos podem aparecer. false
data.filters.latitude number | null Latitude usada na busca por ponto. -23.5892
data.filters.longitude number | null Longitude usada na busca por ponto. -46.6344
data.filters.neighborhood string | null Bairro da busca. Vila Mariana
data.filters.page integer Página solicitada. 1
data.filters.parkingSpots[] integer Quantidades de vagas selecionadas. 1
data.filters.priceMax integer | null Preço máximo aplicado. 1200000
data.filters.priceMin integer | null Preço mínimo aplicado. 500000
data.filters.propertyTypes[] string Tipos de imóvel normalizados. apartment
data.filters.sort string Ordenação normalizada. biggest_area
data.filters.state string | null UF da busca. SP
data.filters.stateName string | null Nome completo do estado. São Paulo
data.items[].acceptExchange boolean | null Indica aceite de permuta. false
data.items[].address object | null Endereço e geolocalização normalizados. {"country":"Brasil","state":"São Paulo","stateAcronym":"SP","city":"São Paulo","zone":"Zona Sul","neighborhood":"Vila Mariana","street":"Rua Domingos de Morais","streetNumber":"1200","zipCode":"04010000","fullAddress":"Rua Domingos de Morais, Vila Mariana, São Paulo - SP","locationId":"BR-SAO-PAULO-VILA-MARIANA","displayType":"ALL","approximate":false,"coordinates":{"latitude":-23.5892,"longitude":-46.6344},"nearby":{"subway":"Vila Mariana","distanceMeters":450}}
data.items[].address.approximate boolean | null Indica localização aproximada. false
data.items[].address.city string | null Cidade do imóvel. São Paulo
data.items[].address.coordinates.latitude number Latitude publicada. -23.5892
data.items[].address.coordinates.longitude number Longitude publicada. -46.6344
data.items[].address.country string | null País do imóvel. Brasil
data.items[].address.displayType string | null Política de exibição do endereço. ALL
data.items[].address.fullAddress string | null Endereço formatado. Rua Domingos de Morais, Vila Mariana, São Paulo - SP
data.items[].address.locationId string | null Identificador geográfico interno. BR-SAO-PAULO-VILA-MARIANA
data.items[].address.nearby object | null Pontos e informações de proximidade disponíveis. {"subway":"Vila Mariana","distanceMeters":450}
data.items[].address.neighborhood string | null Bairro do imóvel. Vila Mariana
data.items[].address.state string | null Estado do imóvel. São Paulo
data.items[].address.stateAcronym string | null UF do imóvel. SP
data.items[].address.street string | null Logradouro quando o anúncio o divulga. Rua Domingos de Morais
data.items[].address.streetNumber string | null Número quando divulgado. 1200
data.items[].address.zipCode string | null CEP do imóvel. 04010000
data.items[].address.zone string | null Zona da cidade. Zona Sul
data.items[].advertiser.addresses object | null Endereços comerciais do anunciante. {"city":"São Paulo","state":"SP"}
data.items[].advertiser.createdAt string | null Data de cadastro do anunciante. 2018-03-09T10:00:00.000Z
data.items[].advertiser.id string | null Identificador do anunciante. 55123
data.items[].advertiser.imageUrl string | null Logo ou imagem do anunciante. https://resizedimgs.vivareal.com/fit-in/900x900/vr.images.sp/logo.webp
data.items[].advertiser.legacyId string | null Identificador legado do anunciante. 179386
data.items[].advertiser.license string | null Registro profissional, como CRECI. CRECI J-12345-SP
data.items[].advertiser.listingsCount integer | null Quantidade de anúncios do anunciante. 169
data.items[].advertiser.name string | null Nome do anunciante. Imobiliária Exemplo
data.items[].advertiser.phoneNumbers[] string Telefones publicados. 1130001000
data.items[].advertiser.rating number | null Nota do anunciante quando exposta. 4.7
data.items[].advertiser.tier string | null Tier comercial do anunciante. PREMIUM
data.items[].advertiser.url string | null Página pública do anunciante. https://www.vivareal.com.br/imobiliaria/imobiliaria-exemplo-55123/
data.items[].advertiser.verified boolean | null Indica anunciante verificado. true
data.items[].advertiser.websiteUrl string | null Website externo publicado. https://www.imobiliaria-exemplo.com.br/
data.items[].advertiser.whatsappNumber string | null WhatsApp publicado. 11987654321
data.items[].aiAmenities[] string Características inferidas no payload estruturado. NATURAL_LIGHT
data.items[].amenities[] string Amenidades declaradas no anúncio. POOL
data.items[].attributes.bathrooms[] number Quantidades de banheiros. 2
data.items[].attributes.bedrooms[] number Quantidades de quartos. 3
data.items[].attributes.capacityLimits[] number Limites de ocupação quando informados. 6
data.items[].attributes.ceilingHeights[] number Pés-direitos disponíveis. 2.7
data.items[].attributes.floors[] number Quantidades de pavimentos. 14
data.items[].attributes.parkingSpaces[] number Quantidades de vagas. 2
data.items[].attributes.suites[] number Quantidades de suítes. 1
data.items[].attributes.totalAreas[] number Áreas totais disponíveis em m². 145
data.items[].attributes.unitFloor integer | null Andar da unidade. 8
data.items[].attributes.unitsOnTheFloor integer | null Unidades por andar. 4
data.items[].attributes.usableAreas[] number Áreas úteis disponíveis em m². 112
data.items[].businessType string | null Negócio informado no item, como SALE ou RENTAL. SALE
data.items[].children array<VivaRealListing> Unidades ou variações filhas, especialmente em empreendimentos. []
data.items[].condominiumName string | null Nome do condomínio. Residencial Vila Verde
data.items[].constructionStatus string | null Estágio da obra para lançamentos. BUILT
data.items[].constructionStatusCalendar array<object> Cronograma de estágios da construção. []
data.items[].contractType string | null Tipo de anunciante/contrato, como OWNER, BROKER ou PROPERTY_DEVELOPER. BROKER
data.items[].createdAt string | null Data de criação do anúncio. 2026-05-10T12:30:00.000Z
data.items[].decoratedVisitCalendar array<object> Agenda de visita ao decorado quando disponível. []
data.items[].description string | null Descrição textual sem HTML. Apartamento bem iluminado, com lazer completo e duas vagas.
data.items[].enhancedDevelopment boolean | null Indica empreendimento enriquecido. false
data.items[].externalId string | null Identificador definido pelo anunciante ou integração. CA12345
data.items[].flags record<string, string> Flags dinâmicas relevantes do anúncio. {"FEATURED":"true"}
data.items[].floorPlans array<media> Plantas do imóvel ou empreendimento. []
data.items[].id string | null Identificador principal do anúncio. 2787552284
data.items[].legacyId string | null Identificador legado quando disponível. 987654321
data.items[].listingType string | null Tipo de listagem, como USED ou DEVELOPMENT. USED
data.items[].media[].alt string | null Texto alternativo. Sala do apartamento
data.items[].media[].id string | null Identificador da mídia. image-1
data.items[].media[].seo boolean | null Indica mídia marcada para SEO. true
data.items[].media[].type string | null Tipo da mídia. IMAGE
data.items[].media[].url string | null URL materializada da imagem. https://resizedimgs.vivareal.com/fit-in/900x900/vr.images.sp/imovel-1.webp
data.items[].mergedAmenities[] string Amenidades consolidadas pelo VivaReal. POOL
data.items[].nonActivationReason string | null Motivo de inativação quando aplicável. NONE
data.items[].noWarrantorRent boolean | null Indica aluguel sem fiador. false
data.items[].position integer | null Posição absoluta do anúncio nos resultados. 1
data.items[].prices[].businessType string | null Negócio associado ao preço. SALE
data.items[].prices[].condominium number | null Taxa de condomínio. 780
data.items[].prices[].iptu number | null Valor de IPTU. 2650
data.items[].prices[].iptuPeriod string | null Periodicidade do IPTU. YEARLY
data.items[].prices[].multiple boolean | null Indica se o anúncio representa múltiplas faixas de valor. false
data.items[].prices[].rentalPeriod string | null Periodicidade do aluguel. MONTHLY
data.items[].prices[].value number | null Valor principal. 980000
data.items[].propertyDevelopers array<developer> Incorporadoras associadas. []
data.items[].propertyType string | null Categoria ampla do imóvel. UNIT
data.items[].publicationType string | null Nível de publicação do anúncio. PREMIUM
data.items[].resale boolean | null Indica imóvel de revenda. true
data.items[].showPrice boolean | null Indica se o preço deve ser exibido. true
data.items[].sourceId string | null Identificador da fonte do anúncio. VR-SP-2787552284
data.items[].stamps[] string Selos do anúncio, incluindo Datazap quando presente. Datazap
data.items[].status string | null Status atual do anúncio. ACTIVE
data.items[].title string | null Título do anúncio. Apartamento com 3 quartos e varanda na Vila Mariana
data.items[].transacted boolean | null Indica imóvel já transacionado. false
data.items[].tripleBundle boolean | null Flag comercial triple bundle. false
data.items[].uniqueUnit boolean | null Indica unidade única. true
data.items[].unitSubTypes[] string Subtipos de unidade. STANDARD
data.items[].unitTypes[] string Tipos de unidade, como APARTMENT ou HOME. APARTMENT
data.items[].updatedAt string | null Data de atualização do anúncio. 2026-07-11T18:45:00.000Z
data.items[].url string | null URL pública absoluta do anúncio ou empreendimento. https://www.vivareal.com.br/imovel/apartamento-3-quartos-vila-mariana-sao-paulo-com-garagem-112m2-venda-RS980000-id-2787552284/
data.items[].usageTypes[] string Usos residencial ou comercial. RESIDENTIAL
data.items[].videos array<media> Vídeos associados ao anúncio. []
data.items[].videoTourUrl string | null URL de tour em vídeo. https://tour.example.com/2787552284
data.items[].whatsappNumber string | null WhatsApp associado diretamente ao anúncio. 11987654321
data.meta object | null Metadados SEO e heading da página de resultados. {"title":"Apartamentos à venda em Vila Mariana, São Paulo","description":"Apartamentos à venda em Vila Mariana com fotos, preços e detalhes.","robots":"index,follow","primaryHeading":"Apartamentos à venda em Vila Mariana"}
data.meta.description string | null Descrição SEO da busca. Apartamentos à venda em Vila Mariana com fotos, preços e detalhes.
data.meta.primaryHeading string | null Heading principal da página de resultados. Apartamentos à venda em Vila Mariana
data.meta.robots string | null Diretiva robots da página. index,follow
data.meta.title string | null Título SEO da busca. Apartamentos à venda em Vila Mariana, São Paulo
data.nextPage integer | null Número da próxima página ou null quando terminou. 2
data.nextPageUrl string | null URL pública da próxima página ou null quando terminou. https://www.vivareal.com.br/venda/sp/sao-paulo/vila-mariana/apartamento_residencial/?pagina=2
data.offset integer Offset do primeiro item da página. 0
data.page integer Página atual, 1-based. 1
data.parser "glue_api" | "next_flight" | "jsonld" Fonte estruturada usada: API interna Glue, payload Next Flight ou fallback JSON-LD. glue_api
data.primaryResults integer Quantidade de itens primários retornados nesta página. 30
data.responseUrl string (URL final após redirects) URL final respondida pelo upstream, após redirects. https://glue-api.vivareal.com/v2/listings?business=SALE&addressCity=Sao+Paulo&page=1&size=30
data.resultsPerPage integer Tamanho da página. 30
data.searchId string | null Identificador de busca exposto pelo payload da página quando disponível. vr-search-7b8f2b
data.source "vivareal.com.br" Fonte normalizada da extração. vivareal.com.br
data.totalResults integer Total de resultados informado pelo VivaReal. 1842
data.type "plp" Seam PLP de listagem e busca. plp
data.url string (URL pública normalizada) URL pública correspondente à busca executada. https://www.vivareal.com.br/venda/sp/sao-paulo/vila-mariana/apartamento_residencial/?quartos=2%2C3&precoMinimo=500000&precoMaximo=1200000&areaMinima=70&areaMaxima=180&ordem=BIGGEST_AREA
executionId string (uuid) Identificador da execução assíncrona que produziu o resultado. 4c22d970-a1d0-4d3f-a688-c128e2f97302
notFound boolean (optional; true only when upstream reports a missing entity and data is null) Presente e true quando o upstream informa que a entidade não existe; nesse caso data é null. N/A
requestId string (uuid) Identificador único da requisição na GeckoAPI. 4c22d970-a1d0-4d3f-a688-c128e2f97301

Erros comuns

Respostas com notFound: true não entram nesta tabela, porque retornam sucesso HTTP 200.

Status errorCode Quando acontece
400 INVALID_PAYLOAD JSON inválido ou violação das regras de validação do payload.
401 UNAUTHORIZED Header Authorization ausente ou token/chave inválida.
402 INSUFFICIENT_CREDITS Saldo de créditos insuficiente para a API solicitada.
403 FORBIDDEN Usuário sem acesso ou API temporariamente desabilitada.
409 EXECUTION_CONFLICT executionId conflita com uma execução em estado incompatível.
429 RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS Limite de taxa ou limite de requisições em voo excedido.
5xx UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente.