dadosimob
Dados públicos do mercado imobiliário brasileiro, prontos para análise. Brazilian public real estate data, ready for analysis. English below.
Prefeituras e órgãos públicos publicam dados valiosos sobre imóveis, mas cada fonte tem seu formato: planilhas com uma aba por mês, cabeçalhos que mudam de um ano para outro, números no formato brasileiro e links que trocam de endereço. O dadosimob resolve isso e entrega um pandas.DataFrame limpo e padronizado.
Instalação
pip install dadosimob
Para a versão em desenvolvimento: pip install git+https://github.com/Rafaxdz-1000/dadosimob.
Fontes disponíveis
| Módulo | Dado | Cobertura | Origem |
|---|---|---|---|
dadosimob.itbi.sp |
Transações com ITBI pago | Cidade de São Paulo, 2006 até hoje (atualização mensal) | Secretaria Municipal da Fazenda |
Os 21 arquivos anuais publicados até agora (2006 a julho de 2026, 2.736.208 transações) são lidos por inteiro: todos os meses, com valor e data preenchidos em pelo menos 99,99% das linhas de cada ano. Próximas fontes no roadmap.
Uso rápido
from dadosimob.itbi import sp
df = sp.read(2024) # baixa (com cache) e padroniza o ano inteiro
vendas = sp.clean(df, only_sales=True) # remove valores implausíveis e mantém só compra e venda
vendas.groupby("tipo_imovel")["preco_m2"].median()
Outras formas:
sp.list_files() # anos publicados e seus links atuais
sp.read(2024, months=[1, 2, 3]) # só o primeiro trimestre
sp.read("meu_arquivo.xlsx") # planilha que você já baixou
Pela linha de comando:
dadosimob itbi-sp --listar
dadosimob itbi-sp --ano 2024 --limpar --apenas-vendas -o itbi_2024.csv
Colunas
Cada linha é uma Declaração de Transação Imobiliária (DTI) paga no mês de referência. As colunas originais viram nomes padronizados (sql, logradouro, numero, bairro, cep, natureza_transacao, valor_transacao, data_transacao, valor_venal_referencia, base_calculo, tipo_financiamento, valor_financiado, area_terreno_m2, area_construida_m2, descricao_uso, descricao_padrao, entre outras), e a biblioteca acrescenta:
mes_referencia: mês em que o imposto foi pago (a aba de origem)tipo_imovel:apartamento,casa,terreno,comercial,industrial,garagemououtropreco_m2: valor da transação dividido pela área construída (ou pela área do terreno, no caso de terrenos), só quando o imóvel inteiro é transmitidocodigo_ibge: código IBGE do município
Números no formato brasileiro (1.234,56) e datas em texto ou no formato do Excel são convertidos automaticamente. cep (8 dígitos) e sql (11 dígitos) voltam como texto, com os zeros à esquerda que o Excel apaga.
Algumas abas do arquivo oficial vêm sem a linha de cabeçalho (em 2024, janeiro e outubro). Nesses casos a biblioteca usa o cabeçalho das outras abas do mesmo arquivo. Se uma aba mensal não puder ser lida, ela gera um aviso (logging.WARNING) em vez de sumir em silêncio. Nos arquivos de 2019 a 2022, a descrição do padrão vem rotulada como um segundo "ACC (IPTU)"; a biblioteca devolve cada dado na sua coluna.
Boas práticas com o dado
- A data de pagamento do ITBI (
mes_referencia) pode ser meses depois dadata_transacao. Para séries de preço, prefiradata_transacao. valor_transacaoé declarado pelo contribuinte.clean()remove extremos, mas vale olhar a distribuição antes de concluir algo.- Em 2024, quase metade das compras e vendas transmitiu só uma fração do imóvel (
proporcao_transmitidaabaixo de 100), como a unidade na planta registrada no lote-mãe, que pode aparecer comoterreno. O arquivo não traz a área da fração, entãopreco_m2fica vazio nesses casos. - A área é a área construída do cadastro do IPTU, não a área útil dos anúncios. Não compare
preco_m2direto com preço de portal. bairroé texto livre e vem vazio em boa parte das linhas. Para recortes geográficos, prefira o CEP.- Os arquivos oficiais não trazem transações de imóveis rurais nem as pagas via PPI.
- Os arquivos oficiais não contêm CPF ou CNPJ das partes.
Roadmap
- ITBI de outras capitais que publicam uma linha por transação: Porto Alegre, Recife, Belo Horizonte, Fortaleza e Rio de Janeiro
- Renda domiciliar por setor censitário (IBGE, Censo 2022)
- Base CNPJ da Receita Federal com geocodificação por bairro
- Admissões e desligamentos por município (CAGED)
Contribua
Cada cidade é um módulo independente: dá para contribuir sem conhecer o resto do código.
- Tarefas para começar
- Cidades com a fonte oficial já conferida
- Guia de contribuição, com o passo a passo para adicionar uma cidade
Conhece uma fonte pública que deveria estar aqui? Sugira.
Licença
Código sob MIT. Os dados pertencem aos órgãos que os publicam; consulte os termos de cada fonte.
English
dadosimob downloads Brazilian public real estate datasets and returns clean, standardized pandas DataFrames.
The first source is ITBI São Paulo: the property transfer tax declarations paid in the city of São Paulo since 2006, published monthly by the city's Finance Department as yearly Excel files with one sheet per month and headers that drift over time. dadosimob finds the current file links, caches downloads, detects header rows (and reuses them for sheets published without one), maps columns to stable snake_case names, parses Brazilian number and date formats, keeps the leading zeros of zip codes and property IDs, classifies property types and computes price per m² for whole-property transfers.
pip install dadosimob
from dadosimob.itbi import sp
df = sp.clean(sp.read(2024), only_sales=True)
df.groupby("tipo_imovel")["preco_m2"].median()
Column names are kept in Portuguese to match the source documentation. The area behind preco_m2 is the built area from the property tax registry, not the usable area quoted in listings, and bairro is free text that is often empty.
Each city is a self-contained module, so adding one needs no knowledge of the rest of the code. See the good first issues and the contributing guide (in Portuguese; issues and pull requests in English are welcome).
Metadata
Release files for dadosimob 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dadosimob-0.1.0.tar.gz | 21.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dadosimob-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.4 kB
Release files / dadosimob-0.1.0.tar.gz
| Download URL | dadosimob-0.1.0.tar.gz |
|---|---|
| Size | 21.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
31d3b4529f14fbda06cd88243321895b7e4aed48b93c86b575c4eb03a201f693
|
|
BLAKE2b-256 checksum How to use checksums |
19e8bbd6644bcaa2006abcc96d1f431481be211d21bcbd7fbada5713655ade05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.
Transparency logRelease files / dadosimob-0.1.0-py3-none-any.whl
| Download URL | dadosimob-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eb5f1ae03734a11f8c5961ea43362c3c4ca1547e27fb2f9de68978cbc618af52
|
|
BLAKE2b-256 checksum How to use checksums |
f8e83d435d54fd1b9cfc8e624000d3219fb6a36c28d9e8c51c15a40b723fa9fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.
Transparency log