Ganhe 1 TB de dados residenciais, um iPhone 18 Pro Max + mais 33 prémiosRecarga de $50 = 1 bilheteParticipe
Empresas

Scraper do Zillow: como extrair dados de imóveis com Python

Mo

06 de novembro de 2026

Scraping e automação

Scraper do Zillow: como extrair dados de imóveis com Python

Resuma este artigo com IA:

Comparar anúncios de uma cidade inteira fica cansativo quando os preços mudam e a planilha de ontem já está desatualizada. Um Zillow scraper coleta informações dos imóveis nas páginas de anúncios e as organiza em registros que você pode comparar, atualizar e exportar sem refazer a planilha manualmente.

TL;DR

  • Verifique o acesso primeiro: os termos publicados pelo Zillow proíbem consultas automatizadas, incluindo scraping. Antes de planejar uma extração em tempo real, escolha um programa de dados aprovado ou outra fonte que você esteja autorizado a coletar e reutilizar.

  • Teste uma amostra pequena. Compare preços, endereços e detalhes dos imóveis extraídos com as fontes originais.

  • Trate os resultados adicionais com cuidado. Siga a paginação, remova duplicatas e investigue valores ausentes.

  • Ajuste as configurações de proxy à tarefa. Considere proxies residenciais rotativos para controle de localização e de sessão, ou proxies móveis para tráfego ilimitado. Nenhum dos dois garante acesso ao Zillow.

  • Valide antes de exportar. Mantenha os preços pedidos separados das estimativas e guarde as datas de coleta.

💡

Prévia das colunas do CSV
zpid,address,listing_status,asking_price,bedrooms,bathrooms,source_url,collected_at

O que um Zillow scraper pode extrair

Um Zillow data scraper pode coletar informações diferentes dos resultados de busca, das páginas de cada imóvel e dos perfis de profissionais. Os resultados de busca podem trazer resumos dos anúncios, enquanto as páginas dos imóveis podem acrescentar descrições, estimativas ou histórico. Os campos de contato exigem verificação separada, porque o contato de um corretor ou de uma imobiliária é diferente das informações de um proprietário.

Antes de fazer scraping de dados do Zillow, defina o resultado esperado. O exemplo em Python abaixo usa este esquema, restrito a vendas:

Campo

Formato

Significado neste exemplo

zpid

String obrigatória

Identificador do imóvel, preservado como texto e usado para remover duplicatas.

address

String obrigatória

Texto do endereço fornecido pelo registro da busca.

listing_status

String obrigatória

FOR_SALE; o exemplo exclui os demais status de anúncio.

asking_price

Número ou null

Preço pedido de venda, presumido em USD neste exemplo.

bedrooms

Número ou null

Número de quartos informado; zero continua sendo um valor válido.

bathrooms

Número ou null

Número de banheiros informado, incluindo valores fracionários quando fornecidos.

zestimate

Número ou null

Valor estimado do imóvel, na premissa de USD do exemplo, mantido separado do preço pedido.

description

String ou null

Descrição extraída do documento de detalhes do imóvel selecionado.

source_url

String obrigatória

URL do imóvel associada ao registro da busca.

search_source_url

String obrigatória

URL que identifica o documento de busca que forneceu o registro.

collected_at

Timestamp com fuso horário

Momento da observação do documento de busca.

detail_collected_at

Timestamp ou null

Momento separado da observação do documento de detalhes; null quando nenhum documento de detalhes foi processado.

synthetic

Booleano

Marca registros derivados de entradas declaradas como sintéticas. Um valor false não é, por si só, prova de autenticidade.

Para documentos salvos, os momentos de observação vêm do manifesto de entrada; o fetcher opcional em tempo real registra os momentos de conclusão da requisição. A demonstração fornecida usa timestamps fictícios.

Valores opcionais ausentes permanecem null no JSON e em branco no CSV. Campos obrigatórios ausentes ou valores numéricos malformados interrompem o exemplo, em vez de gerar valores presumidos.

Aluguel, último preço de venda, área, histórico e campos de contato profissional exigem mapeamentos adicionais verificados. Este exemplo não os exporta. Ao ampliar o esquema, mantenha separados preços pedidos, preços de venda, valores de aluguel e estimativas.

Escolha entre Python, ferramentas de scraping e acesso aos dados do Zillow

Escolha o caminho de acordo com o conjunto de dados de que você precisa e com a manutenção que consegue assumir. Uma exportação única para planilha pode ser atendida por uma ferramenta hospedada, enquanto a coleta recorrente com campos personalizados exige mais controle sobre extração, validação e atualizações.

Abordagem

Mais indicada para

Principal ponto de atenção

Script Python

Extração, validação e armazenamento personalizados

Você mantém o código e verifica o acesso à fonte.

Yozh Scraper

Extração reutilizável pelo navegador por meio de um serviço local

Exige implantação e um preset de extração testado nas páginas desejadas.

Extensão de navegador ou scraper hospedado

Exportações sem manter o coletor

Verifique os campos disponíveis, os limites de coleta, a privacidade e o custo total.

API de scraping gerenciada

Terceirização da obtenção ou da extração das páginas

Confirme se a resposta contém HTML ou registros estruturados de imóveis.

Programa oficial de dados ou download de pesquisa

Integrações aprovadas ou análise do mercado regional

Verifique a cobertura do conjunto de dados, as condições de acesso e os usos permitidos.

Antes de se comprometer com uma ferramenta, teste uma amostra pequena que contenha os campos necessários. Verifique se ela obtém os detalhes dos imóveis ou apenas os resumos da busca, como trata valores ausentes e se a exportação preserva identificadores e datas.

Um produto de terceiros vendido como “Zillow API” não é necessariamente um serviço oficial do Zillow. Ele pode coletar o conteúdo do site e entregá-lo por meio de um endpoint próprio; o nome, por si só, não comprova afiliação, licenciamento nem permissão de coleta.

Zillow Research fornece indicadores regionais do mercado imobiliário, incluindo valores de imóveis, aluguéis e estoque. Os programas para desenvolvedores do Zillow Group abrangem produtos específicos, cada um com suas condições de acesso. Essas opções têm finalidades diferentes e não devem ser tratadas como acesso irrestrito a todos os anúncios ou campos de contato.

💡

Saiba mais sobre No-Code Web Scraper. 

Como fazer scraping do Zillow com Python

Este exemplo transforma documentos salvos de busca e de imóveis em registros CSV e JSON. Ele foi testado com amostras HTML sintéticas e respostas HTTP simuladas, sem obter nenhuma página real do Zillow durante a validação.

O script lê um documento de busca, mantém até cinco imóveis FOR_SALE únicos e pode enriquecer um imóvel selecionado a partir de um documento de detalhes correspondente. O limite de cinco registros é uma característica deste exemplo, e não um limite de resultados de busca do Zillow.

💡

Ambiente de teste: Linux x86_64, Python 3.12.14, Requests 2.34.2 e Beautiful Soup 4.15.0. As dependências estão fixadas em requirements.txt. O exemplo foi testado em 4 de novembro de 2026 e verificado novamente em 5 de novembro de 2026. Baixe o exemplo em Python, as dependências fixadas, o exemplo testado, os testes automatizados e as exportações CSV e JSON correspondentes.

Configure o Python e defina a saída

Extraia os arquivos de exemplo que acompanham o guia, abra o diretório e crie um ambiente Python:

python
python3 -m venv .venv

source .venv/bin/activate

python -m pip install -r requirements.txt

A saída contém identificadores dos imóveis, endereços, status do anúncio, preços pedidos, quartos, banheiros, URLs de origem e timestamps de observação. Os detalhes opcionais do imóvel incluem um Zestimate e a descrição.

Mantenha as credenciais fora do script. A configuração de proxy HTTP opcional lê ZILLOW_PROXY_URL das variáveis de ambiente; se ela não estiver definida, a conexão é direta. Este cliente Python não herda as configurações de proxy do Chrome para desktop.

O arquivo sample.json fornecido identifica dois arquivos HTML sintéticos e seus horários de captura de exemplo. O processamento de páginas salvas preserva esses timestamps, em vez de apresentar a data da análise como data de coleta.

Inspecione uma página de busca e uma página de imóvel

Antes de decidir como fazer scraping de dados do Zillow, inspecione as páginas cobertas pela sua autorização. Compare a resposta HTML original com a página renderizada pelo navegador para descobrir onde as informações necessárias aparecem.

O parser de exemplo procura JSON incorporado em:

html
<script id="__NEXT_DATA__" type="application/json">

Em seguida, ele verifica estas estruturas específicas:

bash
Search records:

props.pageProps.searchPageState.cat1.searchResults.listResults




Property details:

props.pageProps.componentProps.gdpClientCache

Essas são premissas testadas pelas amostras fornecidas, e não interfaces permanentes do Zillow. Verifique-as nos documentos de origem permitidos antes de usar o parser.

Se os campos só aparecem depois da execução de JavaScript, uma requisição HTTP com um parser de HTML não reproduzirá essa renderização. Pode ser necessário usar automação de navegador, mas a renderização, por si só, não comprova permissão nem garante acesso.

Obtenha e valide a resposta

A função fetch_html() do script completo verifica o status HTTP, a URL final e o tipo de conteúdo antes de devolver o HTML:

python
defp fetch_html(url):

    url = source_url(url)

    proxy = os.getenv("ZILLOW_PROXY_URL")




    if proxy and urlsplit(proxy).scheme != "http":

        raise ValueError("This example supports an HTTP proxy endpoint only")




    with requests.Session() as session:

        session.trust_env = False




        if proxy:

            session.proxies = {"https": proxy}




        with session.get(

            url,

            timeout=(5, 20),

            allow_redirects=False,

        ) as response:

            if response.status_code != 200:

                raise ValueError(

                    f"Stopped: HTTP {response.status_code}; no automatic retry"

                )




            if response.url != response.request.url:

                raise ValueError("Unexpected final URL")




            source_url(response.url)

            media_type = (

                response.headers.get("Content-Type", "")

                .split(";")[0]

                .lower()

               .strip()

             )




            if media_type not in {"text/html", "application/xhtml+xml"}:

                raise ValueError("Expected an HTML response")




            return response.text

Os valores de timeout reservam cinco segundos para estabelecer a conexão e vinte segundos de inatividade na leitura; eles não são um prazo total de execução. A documentação do Requests explica essa distinção em suas orientações sobre timeout.

Uma resposta HTTP 200 ainda precisa de validação do conteúdo. Uma página de desafio, um documento inesperado ou uma estrutura de dados alterada não podem virar uma exportação bem-sucedida com zero registros. A próxima função verifica a presença do contêiner JSON esperado:

python
def page_props(html):

    soup = BeautifulSoup(html, "html.parser")

    node = soup.find("script", id="__NEXT_DATA__")




    if node is None:

        raise ValueError(

            "Expected JSON block absent: inspect the returned page"

        )




    try:

        props = json.loads(node.get_text())["props"]["pageProps"]

    except (KeyError, TypeError, json.JSONDecodeError) as exc:

        raise ValueError("Invalid or changed page-data structure") from exc




    if not isinstance(props, dict):

        raise ValueError("Expected a pageProps object")




    return props

Extraia os registros dos anúncios e os detalhes do imóvel selecionado

O exemplo mantém os registros marcados explicitamente como FOR_SALE, exige identificador e endereço e remove ZPIDs duplicados antes de aplicar o limite de cinco registros. Registros de aluguel e de imóveis vendidos são excluídos para que seus preços não sejam rotulados como preços pedidos.

Os campos numéricos opcionais permanecem None quando ausentes. Strings inesperadas, valores negativos e números inválidos interrompem o processamento, em vez de serem convertidos silenciosamente:

python
def number(value, positive=False):

    if value is None:

        return None




    if (

        isinstance(value, bool)

        or not isinstance(value, (int, float))

        or not math.isfinite(value)

        or value < 0

        or (positive and value == 0)

    ):

        raise ValueError(

            "Unexpected numeric value; review the field mapping"

        )




    return value

Inclua a página opcional de detalhes apenas quando forem necessários campos adicionais. A URL e o identificador do imóvel precisam corresponder a um registro de busca selecionado. O parser armazena o Zestimate separado do preço pedido e registra um timestamp distinto para a página de detalhes.

Isso é essencial para aprender a fazer scraping de dados do Zillow com precisão: preserve o significado de cada campo e nunca fabrique valores ausentes.

Execute uma amostra pequena e inspecione o resultado

Execute o script completo com as páginas sintéticas fornecidas:

shell
python zillow_sample.py sample.json --output run-01

O diretório de saída precisa ser novo. A amostra testada produz:

bash
Saved 2 unique listings to run-01

Um dos registros resultantes tem esta aparência. Todas as informações do imóvel abaixo são fictícias:

json
{

  "zpid": "9000000001",

  "address": "100 Example Lane, Sample City, TX 00000",

  "listing_status": "FOR_SALE",

  "asking_price": 395000,

  "bedrooms": 3,

  "bathrooms": 2,

  "source_url": "https://www.zillow.com/homedetails/example-property/9000000001_zpid/",

  "search_source_url": "https://www.zillow.com/synthetic-test-city/",

  "collected_at": "2026-11-04T10:00:00+00:00",

  "zestimate": 400000,

  "description": "Synthetic property description for parser testing only.",

  "detail_collected_at": "2026-11-04T10:01:00+00:00",

  "synthetic": true

}

Colunas selecionadas da exportação CSV mostram como os valores ausentes são preservados:

bash
zpid,listing_status,asking_price,bedrooms,bathrooms,zestimate

9000000001,FOR_SALE,395000,3,2,400000

9000000002,FOR_SALE,,0,1,

Compare identificadores, preços, campos ausentes e contagens de duplicatas com as entradas. O segundo registro preserva de propósito um preço ausente e mantém zero quartos.

Para a coleta real autorizada, forneça um manifesto separado com URLs verificadas e use --live; nesse modo, o script rejeita entradas sintéticas. Os testes incluídos podem ser executados novamente com:

shell
python -m unittest -v

A aprovação nesses testes confirma o comportamento demonstrado, não o acesso atual ao Zillow. Valide a estrutura real das páginas e uma amostra permitida antes de ampliar a coleta.

Nota de validação

Todos os 13 testes automatizados passaram em 4 de novembro de 2026 e passaram novamente em 5 de novembro. As verificações usaram amostras HTML sintéticas e respostas HTTP simuladas.

Verificação

Resultado

Escopo da amostra

Um documento de busca e um documento de detalhes correspondente.

Entradas brutas

Três entradas de busca antes da remoção de duplicatas.

Registros exportados

Dois imóveis únicos após a remoção de uma duplicata.

Registros rejeitados

Nenhum na amostra de demonstração fornecida.

Registros incompletos

Um registro mantido contém valores opcionais ausentes.

Valores ausentes

asking_price, zestimate, description e detail_collected_at são null nesse registro.

Comparação das exportações

Os CSV e JSON regenerados coincidiram com os arquivos de amostra fornecidos.

A ausência do timestamp de detalhes significa que nenhum documento de detalhes foi processado para aquele imóvel; ela não indica uma falha na requisição de detalhes.

Testes separados verificaram falhas esperadas, incluindo respostas negadas, URLs ou tipos de conteúdo inesperados, identificadores ausentes, JSON malformado e estruturas alteradas. A compatibilidade com o Zillow real, a paginação e as conexões por meio de um provedor de proxy não foram validadas.

Use o Yozh Scraper para extração reutilizável

Yozh Scraper no GitHub oferece um serviço auto-hospedado para renderização em navegador, extração de campos e tarefas assíncronas. Você pode reutilizar as regras de extração entre requisições e deixar o Python responsável pela validação e pelo armazenamento.

O Yozh Scraper oferece renderização em navegador, regras de extração e presets reutilizáveis para montar uma configuração personalizada. Este guia não inclui um preset do Zillow verificado em páginas reais. Valide os campos necessários em documentos de origem permitidos antes de usar um preset personalizado para a coleta recorrente de imóveis, ao utilizá-lo como Zillow web scraper.

  1. Inicie o serviço e verifique seu estado. Depois de clonar o repositório, copie .env.example para .env e execute docker compose up --build. Em outro terminal, acesse http://localhost:8000/api/v1/health. Uma resposta saudável confirma a disponibilidade do serviço, não o sucesso da extração dos imóveis.

  2. Crie e verifique um preset personalizado. Abra http://localhost:8000/docs e crie um preset com regras CSS ou XPath verificadas. Dê a ele um nome que comece com user_, como user_zillow_property. Teste-o por meio de POST /api/v1/presets/{name}/test com uma amostra permitida. Confira outra página de imóvel antes de reutilizar as regras.

  3. Execute uma tarefa pequena. Envie a URL de um único imóvel por meio de POST /api/v1/scrape/preset/page, usando a configuração do preset salvo. Guarde o job_id retornado; ele identifica a tarefa em segundo plano, e não confirma que a extração teve êxito.

  4. Valide os campos do imóvel. Mapeie os resultados para o mesmo esquema usado no exemplo em Python: identificador do imóvel, endereço, status do anúncio, preço pedido, quartos, banheiros e URL de origem. Adicione o timestamp da coleta, verifique os tipos numéricos e preserve os valores opcionais ausentes. Compare a saída com a fonte antes de aumentar o volume.

  5. Recupere os resultados pelo Python. Consulte GET /api/v1/scrape/{job_id} com um intervalo e um timeout global, tratando tarefas com falha ou canceladas. Após a conclusão, solicite GET /api/v1/scrape/{job_id}/results, inspecione erros e avisos e valide os registros antes de exportá-los.

💡

Para instruções de instalação mais amplas e para o testador visual opcional, siga o guia de screen scraping.

Trate a paginação e os resultados de busca incompletos

Uma busca no Zillow deve ser tratada como uma amostra definida, e não como o estoque regional completo. Limites geográficos, filtros de anúncios, paginação e falhas de coleta podem afetar quais registros aparecem, mesmo quando a busca exibe um total maior.

Antes de ampliar a coleta, defina o que um registro representa: um imóvel, uma unidade individual, um edifício ou um anúncio. Um edifício de apartamentos e suas unidades disponíveis não devem ser unificados apenas porque compartilham o mesmo endereço.

O exemplo em Python acima lê uma página de busca e não implementa paginação. Para estendê-lo, inspecione a interface de busca permitida e verifique como a próxima página é solicitada. Preserve os limites geográficos, os filtros e a ordenação originais durante toda a execução e registre-os junto com o conjunto de dados.

Pare quando uma página se repetir, não retornar novos identificadores ou atingir o limite configurado de páginas, registros ou tempo de execução. Registre o motivo da parada, para que uma amostra limitada de propósito possa ser distinguida de uma coleta que falhou.

Remova as duplicatas de resultados sobrepostos usando o ZPID, quando ele identificar a entidade desejada, ou outro identificador verificado de imóvel, unidade ou anúncio. Evite depender apenas do endereço.

Em cada execução, registre:

  • Registros brutos: entradas retornadas antes da remoção de duplicatas e da validação.

  • Registros únicos: entradas mantidas após a remoção de duplicatas.

  • Registros rejeitados: entradas excluídas, com os motivos.

  • Registros incompletos: entradas mantidas com campos opcionais ausentes; elas também contam como únicas.

Informe a cobertura demonstrada pelo método testado. Os guias analisados descrevem limites de busca e abordagens diferentes; por isso, evite apresentar um número fixo como limite universal de resultados do Zillow.

Limpe os dados do Zillow e exporte em CSV ou JSON

Os registros extraídos se tornam úteis quando seu significado sobrevive à ordenação, à filtragem e à comparação. Antes de exportar, normalize cada campo de forma consistente e confira alguns registros com a fonte.

  • Preserve os CEPs como strings. Zeros à esquerda importam; por isso, ao abrir um CSV no Excel, importe a coluna como texto.

  • Separe os componentes do preço. Armazene o valor, a moeda, o tipo de preço e o período do aluguel de forma independente. Preço pedido, último preço de venda e Zestimate pertencem a campos separados ou a registros claramente rotulados.

  • Mantenha as unidades de área. Salve a medida junto com sua unidade, como pés quadrados, para que os cálculos posteriores usem valores comparáveis.

  • Diferencie valores ausentes de zero. Use null no JSON ou uma célula vazia no CSV para informações indisponíveis. Zero quartos pode descrever um studio; isso não deve virar automaticamente um valor ausente.

  • Preserve a proveniência. Inclua a URL de origem e o timestamp da coleta, para que cada observação possa ser rastreada e verificada.

O CSV funciona bem para registros planos de imóveis. Mantenha históricos aninhados de preços ou anúncios em JSON ou exporte-os para uma tabela separada, vinculada pelo identificador do imóvel.

No monitoramento, guarde observações datadas em vez de sobrescrever os valores anteriores. O desaparecimento de um anúncio em uma execução posterior não prova que o imóvel foi vendido: filtros alterados, coleta incompleta ou remoção do anúncio podem explicar a ausência.

Exemplo de registro JSON dos arquivos de teste fornecidos

Este é o segundo registro gerado pelo exemplo em Python. O identificador do imóvel, o endereço, as URLs e o timestamp da observação são fictícios. O preço pedido ausente permanece null, enquanto zero quartos continua sendo o número zero.

Em seguida, insira este JSON:

json
{

  "zpid": "9000000002",

  "address": "200 Example Lane, Sample City, TX 00000",

  "listing_status": "FOR_SALE",

  "asking_price": null,

  "bedrooms": 0,

  "bathrooms": 1,

  "source_url": "https://www.zillow.com/homedetails/second-example/9000000002_zpid/",

  "search_source_url": "https://www.zillow.com/synthetic-test-city/",

  "collected_at": "2026-11-04T10:00:00+00:00",

  "zestimate": null,

  "description": null,

  "detail_collected_at": null,

  "synthetic": true

}

As verificações abaixo também abrangem campos que você pode adicionar depois; o script fornecido usa o esquema mais restrito, voltado apenas a vendas, definido anteriormente.

Escolha proxies e configurações de sessão para a tarefa

Um proxy controla a rota de rede e o IP de saída usados pelo seu scraper. Escolha a conexão de acordo com o volume de tráfego, a localização e a continuidade da sessão; nenhum tipo de proxy garante acesso ao Zillow.

Conexão

Adequação à carga de trabalho

Preço

Residencial rotativo

Segmentação por localização, com sticky sessions de até 24 horas para etapas conectadas; ideal para web scraping, coleta de dados para IA, automação, SEO e pesquisa de mercado.

Pool padrão: $2/GB com geotargeting gratuito

Móvel

IPs limpos com tráfego ilimitado ajudam a controlar os custos de banda ao renderizar repetidamente downloads, scripts e imagens; ideal para web scraping, automação, SEO e pesquisa de mercado. 

LTE/5G $1.7/dia  com suporte aos protocolos HTTP, SOCKS5 e UDP.   

ISP estático

Um endereço fixo é adequado para observações repetidas que exigem roteamento consistente, com largura de banda ilimitada; ideal para web scraping, testes de QA, automação e acesso específico por região. 

$5.29/mês com 99,9% de uptime. 

Datacenter

Proxies de datacenter dedicados e de alta velocidade, IPv4/IPv6, com largura de banda ilimitada; ideais para web scraping, automação, monitoramento, integração de APIs e coleta de dados em grande escala. 

$2.18/mês com suporte aos protocolos HTTP e SOCKS5.  

Para um coletor baseado em navegador, uma configuração documentada é Ubuntu 24.04, Playwright Chromium e um proxy HTTP com autenticação por usuário e senha. Defina servidor, usuário e senha por meio de browser.new_context(proxy=...), carregando as credenciais de variáveis de ambiente. O Playwright documenta as credenciais de proxy HTTP separadamente do suporte a SOCKSv5; portanto, não presuma que o SOCKS5 autenticado funcione de forma idêntica.

Abra uma página de verificação de IP dentro desse mesmo contexto de navegador e confirme o IP de saída e a localização. Em seguida, teste uma extração representativa e permitida e inspecione os registros retornados antes de aumentar a carga.

🔥

Use a verificação de IP do CyberYozh App, com avaliação real feita pelos principais sistemas antifraude.

Como fazer scraping do Zillow com números de telefone

A disponibilidade dos campos de contato depende do anúncio, da fonte e do método de extração. Antes de adicionar números de telefone a um Zillow scraper, verifique se a fonte permitida expõe o campo de contato e indica a quem ele pertence.

Contatos de corretores e imobiliárias são diferentes dos dados do proprietário. Um número exibido ao lado de um anúncio não deve virar automaticamente owner_phone no seu conjunto de dados. Inspecione o nome e o rótulo que o acompanham e preserve a relação indicada, em vez de presumir quem atende.

Para cada contato profissional permitido, guarde:

  • Número de telefone: armazenado como texto, incluindo qualquer ramal exibido.

  • Nome e função: exatamente como identificados pela fonte.

  • URL de origem: a página que contém essa informação de contato.

  • Timestamp da coleta: quando a informação foi observada.

Mantenha os contatos separados, para que o número de um corretor não seja associado ao nome da imobiliária. Números ausentes devem permanecer null no JSON ou em branco no CSV; registre os erros de extração separadamente, em vez de preencher lacunas com dados presumidos.

A exibição pública não estabelece permissão para toda finalidade de coleta, reutilização ou contato. Revise as condições de acesso da fonte e os requisitos de privacidade aplicáveis antes de coletar ou usar contatos profissionais.

🔥

Alugue um número móvel virtual ou um número residencial compatível com serviços online populares.

Resolva problemas comuns no scraping do Zillow

Identifique a etapa que falhou antes de alterar a configuração. Problemas de conexão envolvem roteamento, autenticação ou transporte; restrições de acesso negam ou limitam requisições; erros de extração ocorrem quando o coletor não consegue interpretar corretamente o conteúdo retornado.

Sintoma

Causa provável

Próxima verificação

Resposta 403 ou página de desafio

Recusa de acesso ou verificação de tráfego automatizado

Inspecione o corpo da resposta e identifique qual serviço a retornou. Pause as tentativas repetidas e verifique o método de acesso permitido.

Resposta 429

Limite de taxa de requisições

Respeite o Retry-After quando presente. Reduza a frequência e a concorrência das requisições, use intervalos crescentes entre as tentativas e limite o número delas.

HTTP 200, sem registros

Conteúdo inesperado ou incompatibilidade na extração

Verifique a URL final, o tipo de conteúdo e o documento salvo. Confirme que os campos esperados existem antes de alterar os seletores.

Cobertura incompleta dos anúncios

Filtros, paginação, limites de coleta ou requisições com falha

Compare os limites geográficos e os filtros; revise a contagem de páginas, os registros rejeitados e o motivo da parada.

Imóveis duplicados

Buscas sobrepostas ou páginas repetidas

Remova as duplicatas com um identificador verificado, preservando unidades distintas e observações datadas.

Números de telefone ausentes

Campo indisponível ou mapeado incorretamente

Inspecione a fonte e o rótulo do contato. Preserve os valores ausentes em vez de presumi-los.

Preços incorretos ou ausentes

Campo de preço errado ou erro de conversão

Verifique separadamente o preço pedido, o aluguel, o preço de venda e o Zestimate. Confira a moeda e o período do aluguel.

O parser parou após uma mudança na página

Estrutura de HTML ou de JSON incorporado alterada

Compare com as amostras salvas, atualize os seletores ou caminhos afetados e valide novamente uma amostra pequena.

Em caso de falhas de conexão, verifique o endpoint, a autenticação e o roteamento efetivo no cliente que faz as requisições. Depois de qualquer correção, compare os valores extraídos com a fonte antes de reiniciar uma execução maior.

Monte um conjunto de dados que você possa verificar

Escolha uma fonte permitida, valide uma amostra pequena e preserve o significado de cada campo ao exportar. Amplie a coleta somente depois de comparar a saída com a fonte. Teste suas regras de extração verificadas no Yozh Scraper antes de configurar a coleta recorrente.

🦔

Se a coleta exigir uma localização de saída específica ou um IP consistente, escolha uma conexão adequada no catálogo de proxies e teste-a com sua configuração de extração verificada.

Útil?

Compartilhar artigo

Perguntas frequentes sobre o Zillow Scraper