Ir para o conteúdo

IBGE - Instituto Brasileiro de Geografia e Estatística

Visao Geral

Campo Valor
Instituicao Governo Federal
Website ibge.gov.br
API SIDRA
Acesso agrobr Via API SIDRA (JSON); malha municipal e áreas urbanizadas via WFS (GeoJSON)

Origem dos Dados

Fonte

  • API: https://sidra.ibge.gov.br/
  • Formato: JSON
  • Acesso: Publico, sem autenticação

Canal de acesso e fallback

Todas as consultas tabulares (PAM, LSPA, PPM, abate, PEVS, leite, PIB agropecuário e censos) passam por agrobr.ibge.client.fetch_sidra. A API SIDRA (apisidra.ibge.gov.br) e o canal principal; desde setembro de 2026 ela responde 403 com desafio Cloudflare a clientes programaticos. Quando a SIDRA falha (403, HTML, 5xx; falha de rede ou timeout não aciona a troca), a mesma tabela e consultada na API de agregados do IBGE (servicodados.ibge.gov.br/api/v3/agregados), com os mesmos seletores traduzidos (t/p/v/n/c → agregados/{tabela}/periodos/{p}/variaveis/{v}?localidades=N{n}[...]&classificacao=c[...]) e a resposta convertida para o mesmo formato de colunas da SIDRA (NC, NN, MC, MN, V, D1C…), de modo que parsers e contratos não mudam. Diferenças conhecidas do canal de fallback: MC (código da unidade) vem vazio, porque a API de agregados publica apenas o nome da unidade; allxp vira all; o nome do período (D2N) vem do endpoint /periodos da própria tabela. O canal usado fica em MetaInfo.source_details["canal"] (sidra, servicodados ou misto), source_details["consultas"] lista canal e URL de cada consulta, attempted_sources ganha ibge_servicodados e selected_source passa a ser ibge_servicodados quando o fallback foi usado (o dataset herda essa proveniencia); source_url aponta para a URL consultada; a troca de canal emite SourceFallbackWarning (detalhe abaixo). No LSPA de julho/2026 (soja), os dois canais dao os mesmos valores. O probe de saude do IBGE consulta a API de agregados.

Quando uma resposta da SIDRA exige a troca para a API de agregados, cada aquisição emite SourceFallbackWarning com o motivo. Com return_meta=True, a mensagem também aparece em meta.validation_warnings, e selected_source="ibge_servicodados" identifica o canal usado. Consultas sucessivas continuam avisando; uma resposta vazia preserva tanto o aviso de troca de canal quanto o de ausência de observações. Os datasets preservam esses metadados. Falhas de rede ou timeout mantêm o tratamento anterior e não acionam essa troca de canal.

Cada consulta também pede /agregados/{tabela}/periodos e registra a data de modificação dos períodos devolvidos, que diz de qual edição veio o número: source_details["periodos_modificacao"] sai como {tabela: {período: data ISO}} (a PAM 2024 foi revista em 17/09/2026), e cada item de consultas traz tabela e periodos_modificacao. O 01/01/0001 que o IBGE publica para período sem data sai nulo. Se o pedido de metadado falhar, a consulta segue, e o motivo vai em periodos_modificacao_erro.

Resposta sem observações ([], por exemplo período ainda não publicado), em qualquer um dos dois canais, devolve DataFrame vazio com as mesmas colunas de uma resposta com dados e emite um aviso (warnings.warn, a cada consulta, também registrado em MetaInfo.validation_warnings).

Na API 2.0, os filtros territoriais e as flags são passados por nome. PAM, LSPA, PPM, silvicultura e extração vegetal aceitam apenas produto/espécie e ano por posição; abate aceita espécie e trimestre; censos aceitam apenas tema. No PIB, apenas setor é posicional: use ibge.pib_agro(trimestre="202401"). Leite aceita apenas trimestre por posição.

Domínios fechados normalizam caixa e acentos; parâmetros inválidos levantam InvalidParameterError antes da consulta. variaveis=[], variáveis desconhecidas e listas de anos vazias são recusadas. Silvicultura e extração vegetal validam o ano entre 1974 e o ano corrente. O censo histórico aceita ano inteiro ou lista não vazia de inteiros publicados para o tema.

Cada consulta SIDRA vazia emite um aviso e registra o mesmo texto em MetaInfo.validation_warnings, inclusive quando outra consulta da mesma tabela e período já veio vazia. Colunas e dtypes são preservados no vazio: anos/códigos em Int64, medidas em float64, rótulos de trimestre em texto e texto no padrão do pandas instalado. animais_abatidos usa Int64 desde o contrato 2.0 (vigente: 2.1, que acrescenta categoria à saída e à chave); quantidade fracionária gera ParseError. A PAM preserva suas 14 colunas de saída, com medidas não solicitadas nulas.

Pesquisas Disponíveis

PAM - Produção Agrícola Municipal

  • Tabela SIDRA: 5457 (serie desde 1974)
  • Cobertura: Todos os municípios
  • Frequência: Anual

LSPA - Levantamento Sistematico da Produção Agrícola

  • Tabela SIDRA: 6588
  • Cobertura: Nacional/UF
  • Frequência: Mensal
  • Contrato: LSPA 2.0, uma linha por ano/mês/localidade/produto/variável, com unidade explícita; sem mes, preserva os meses disponíveis do ano

ibge.lspa("soja", ano=2025, mes="01", uf="MT") aceita mês inteiro ou string inteira de 1 a 12. uf=None consulta o agregado Brasil. Um período não publicado pode retornar DataFrame vazio; HTTP 200 não comprova disponibilidade de observações.

O dataset estimativa_safra 3.1 pode selecionar essa fonte com fonte="ibge_lspa" ou mes, preservando ano_lspa e mes_lspa. Seu parâmetro safra="2024/25" seleciona o ano civil final, 2025; esse rótulo de safra não é uma dimensão nativa LSPA. No dataset, sem mês seleciona-se o último período com observações, enquanto a API de fonte sem mês preserva a série mensal disponível.

O dataset agrega os componentes esperados de milho e feijão, converte hectares/toneladas para mil ha/mil toneladas e recalcula produtividade pelos totais. Componentes ausentes, duplicatas ou unidades/localidades incompatíveis são rejeitados; valores NA continuam ausentes. Não use levantamento CONAB como mês LSPA nem some estimativas mensais como fluxos de produção.

PPM - Pesquisa da Pecuaria Municipal

  • Tabelas SIDRA: 3939 (rebanhos), 74 (produção de origem animal)
  • Cobertura: Todos os municípios
  • Frequência: Anual
  • Serie: 1974-presente (51 anos)

Abate - Pesquisa Trimestral do Abate de Animais

  • Tabelas SIDRA: 1092 (bovinos), 1093 (suínos), 1094 (frangos)
  • Cobertura: 27 UFs (sem linha Brasil; para o total nacional, use a tabela da espécie no SIDRA, no nível Brasil)
  • Frequência: Trimestral
  • Serie: 1997-presente
  • Espécies: bovino, suino, frango
  • Variáveis: animais abatidos (cabecas), peso das carcacas (kg)

Censo Agropecuário 1995/2006/2017

  • Tabelas SIDRA 2017: 6907 (efetivo rebanho), 6881 (uso terra), 6957 (lavoura temporária), 6956 (lavoura permanente), 6855 (preparo solo), 6848 (adubacao), 6849 (calagem), 6851 (agrotoxicos), 8561 (praticas agrícolas), 6857 (irrigação), 6899 (despesa com adubos)
  • Tabelas SIDRA 2006: 791 (preparo solo), 1249 (adubacao), 1245 (calagem), 1459 (agrotoxicos), 837 (praticas agrícolas), 855 (irrigação)
  • Tabelas SIDRA 1995: 323 (efetivo rebanho), 316/311 (uso terra), 497/492/503 (lavoura temporária), 509/504/510 (lavoura permanente)
  • Cobertura: Brasil + UF + município
  • Frequência: Decenial
  • Períodos: 1995, 2006 e 2017 (conforme tema)
  • Temas: efetivo_rebanho, uso_terra, lavoura_temporaria, lavoura_permanente, preparo_solo, adubacao, calagem, agrotoxicos, praticas_agricolas, irrigação, despesa_adubos
  • Formato: Long format (variavel/valor por linha)
  • Linha Total: publicada como a fonte (categoria = "Total"), sem se somar às demais; estabelecimentos não soma entre categorias

Censo Agropecuário — Serie Histórica (1920-2006)

  • Tabelas SIDRA: 263 (estabelecimentos/area), 264 (uso terra), 265 (pessoal/tratores), 280 (condição produtor), 281 (efetivo animais), 282 (produção animal), 283 (produção vegetal), 1730 (lavoura permanente), 1731 (lavoura temporária)
  • Cobertura: Brasil + Região + UF (municipal NAO disponível no SIDRA)
  • Frequência: Censos decenais (1920-2006, conforme tabela)
  • Períodos: até 10 censos por tema (1920, 1940, 1950, 1960, 1970, 1975, 1980, 1985, 1995, 2006)
  • Temas: 9 temas com serie histórica longa
  • Quirks: Aves em mil cabecas (tab 281), unidades mistas por categoria (tabs 282/283/1730/1731), classificacoes sem Total (tabs 281/282/283/1730/1731)

Censo Agropecuário 1985 — Dados Municipais (PDFs do IBGE)

  • Fonte: os 28 PDFs estaduais da Biblioteca do IBGE (27 UFs; Minas Gerais em 2 volumes). MA, PI, CE e RN usam a versão que o IBGE republicou em 03/09/2018, com camada de texto.
  • Formato: pacote do agrobr em Parquet (agrobr/data/censo_1985/), 1 linha por casa do PDF, extraído pela camada de texto, com o RapidOCR como 2ª leitura; o manifesto guarda o SHA-256 de cada PDF.
  • Cobertura: 27 UFs, até município (mesorregião, microrregião, município); 85,8 % das células lidas têm coluna identificada (a lista por volume está no contrato).
  • Frequência: Unica (Censo 1985)
  • Temas: 53 temas, 1 por tabela (67 a 119), pelo título impresso
  • Confiança: valor só na casa confirmada pelas somas impressas (0 erro na precisão medida); valor_lido e o status para o resto, com a precisão medida no contrato
  • Acesso: local, sem rede
  • URL catálogo: https://biblioteca.ibge.gov.br/index.php/biblioteca-catalogo?view=detalhes&id=747

Censo Agropecuário 1995/96 — Temas Legados (FTP)

  • Fonte: FTP IBGE (ftp.ibge.gov.br)
  • Formato: ZIPs com XLS legado (BIFF5/BIFF8) ou HTML
  • Cobertura: Brasil, totais estaduais e municípios; uf distingue municípios homônimos
  • Contrato: Censo legado 2.1, com categorias, variáveis e unidades dos cabeçalhos oficiais
  • Frequência: Unica (Censo 1995/96)
  • Temas: tecnologia, pessoal_ocupado, maquinas, producao_animal, valor_producao, financeiro
  • Acesso: Publico, sem autenticação

Dos seis temas nas 27 UFs, 161 combinações têm dados e uma, máquinas no PA, é recusada: o arquivo Pará/Tab_7Mn.zip de máquinas contém os mesmos bytes da tabela de pessoal ocupado, e nenhum dos 11 Tab_*Mn do Pará traz a Tabela 7. A consulta de máquinas com uf='PA' levanta SourceUnavailableError, e a consulta sem uf devolve as outras 26 UFs, com o aviso no MetaInfo e um UserWarning; o tema não é substituído por dados de pessoal ou por uma tabela de outra granularidade.

Os cabeçalhos BIFF8 de máquinas em Sergipe distinguem plantio, colheita, caminhões e utilitários, mesmo quando as caixas de texto se sobrepõem. Os valores estaduais não são reconstruídos pela soma dos municípios.

PEVS — Silvicultura

  • Tabelas SIDRA: 291 (produção, classificação c194) + 5930 (area plantada, classificação c734)
  • Cobertura: Todos os municípios
  • Frequência: Anual
  • Serie: 1986-presente
  • Produtos: carvao, lenha, madeira_tora, madeira_celulose, acacia_negra, eucalipto_folha, resina (14 total)
  • Espécies area: eucalipto, pinus, outras
  • Variáveis: quantidade_produzida (var 142), valor_producao (var 143), area (var 6549)
  • Unidades: campo MN da resposta SIDRA, conforme variável e período; produção física em toneladas ou metros cúbicos, área em hectares e valor da produção em moeda (por exemplo, Mil Reais em 2023)

PEVS — Extração Vegetal

  • Tabela SIDRA: 289 (classificação c193)
  • Cobertura: Todos os municípios
  • Frequência: Anual
  • Serie: 1986-presente
  • Produtos: acai, castanha_caju, castanha_para, erva_mate, mangaba, palmito, pequi_fruto, pinhao, umbu, hevea_coagulado, hevea_liquido, carnauba_cera, carnauba_po, piacava, carvao, lenha, madeira_tora, babacu, copaiba, cumaru, pequi_amendoa (21 total)
  • Variáveis: quantidade_produzida (var 144), valor_producao (var 145)
  • Unidades: campo MN da resposta SIDRA; quantidade em toneladas ou metros cúbicos e valor da produção em moeda (por exemplo, Mil Reais em 2023)

Leite Trimestral — Pesquisa Trimestral do Leite

  • Tabela SIDRA: 1086
  • Cobertura: 27 UFs (sem linha Brasil; para o total nacional, use a tabela 1086 do SIDRA no nível Brasil)
  • Frequência: Trimestral
  • Serie: 1997-presente
  • Variáveis: leite adquirido (var 282, mil litros), leite industrializado (var 283, mil litros), preco médio (var 2522, R$/litro)
  • Output: Formato wide (3 variáveis como colunas)

PIB Agropecuário — Contas Nacionais Trimestrais

  • Tabelas SIDRA: 1846 (precos correntes, var 585) + 6612 (precos reais base 1995, var 9318)
  • Cobertura: Brasil (nível nacional)
  • Frequência: Trimestral
  • Serie: 1996-presente
  • Setores: agropecuária (90687), industria (90691), serviços (90696), pib_total (90707)
  • Classificação: c11255
  • Unidade: Milhoes de Reais

Variáveis

Código Nome Unidade
214 Quantidade produzida toneladas
215 Valor da produção mil R$
216 Área colhida hectares
8331 Área plantada hectares
112 Rendimento médio kg/ha

Uso - PAM

Básico

import asyncio
from agrobr import ibge

async def main():
    # Dados de soja por UF
    df = await ibge.pam('soja', ano=2023)

    # Multiplos anos
    df = await ibge.pam('milho', ano=[2020, 2021, 2022, 2023])

    # Filtrar por UF
    df = await ibge.pam('soja', ano=2023, uf='MT')

    # Nivel municipal
    df = await ibge.pam('arroz', ano=2023, nivel='municipio', uf='RS')

    # Com metadados
    df, meta = await ibge.pam('soja', ano=2023, return_meta=True)

asyncio.run(main())

Níveis Territoriais

Nível Descrição
brasil Total nacional
uf Por Unidade Federativa
municipio Por município

Uso - LSPA

Básico

# Estimativas do ano
df = await ibge.lspa('soja', ano=2024)

# Mes especifico
df = await ibge.lspa('milho_1', ano=2024, mes=6)

# Filtrar por UF
df = await ibge.lspa('soja', ano=2024, uf='PR')

# Com metadados
df, meta = await ibge.lspa('soja', ano=2024, return_meta=True)

Schema - PAM

Coluna Tipo Descrição
ano int Ano de referencia
localidade str Nome da localidade
localidade_cod int Código IBGE da localidade (D1C do SIDRA)
produto str Nome do produto
area_plantada float Hectares
area_colhida float Hectares
producao float Ver unidade_producao
rendimento float Ver unidade_rendimento
valor_producao float Ver unidade_valor_producao
fonte str "ibge_pam"
unidade_producao str ton; laranja antes de 2001, mil_frutos
unidade_rendimento str kg/ha; laranja antes de 2001, frutos/ha
unidade_valor_producao str mil_reais; antes de 1994, a moeda da época (mil_cruzeiros, mil_cruzados etc.)
condicao_produto str Café: em_coco até 2001, beneficiado desde 2002; nulo nos demais produtos

Schema - LSPA

Coluna Tipo Descrição
ano int Ano de referencia
mes int Mes de referencia
localidade str Nome da localidade
localidade_cod int Código IBGE da localidade (D1C do SIDRA)
variavel str Nome da variável
variavel_cod int Código SIDRA da variável
valor float Valor da variável
unidade str Unidade publicada pelo SIDRA
produto str Nome do produto
fonte str "ibge_lspa"

Produtos PAM

produtos = await ibge.produtos_pam()
# ['soja', 'milho', 'arroz', 'feijao', 'trigo', 'algodao', 'cafe', ...]

Produtos LSPA

produtos = await ibge.produtos_lspa()
# ['soja', 'milho_1', 'milho_2', 'arroz', 'feijao_1', 'feijao_2', ...]

Nota: No LSPA, milho_1 e milho_2 referem-se à primeira e segunda safras de milho do mesmo ano civil. O alias milho da API de fonte devolve os componentes separados; sua agregação ocorre no dataset.

UFs Disponíveis

ufs = await ibge.ufs()
# ['RO', 'AC', 'AM', 'RR', 'PA', 'AP', 'TO', ...]  (ordem do código IBGE)

Uso - PPM

Básico

import asyncio
from agrobr import ibge

async def main():
    # Rebanho bovino por UF
    df = await ibge.ppm('bovino', ano=2023)

    # Producao de leite
    df = await ibge.ppm('leite', ano=2023)

    # Multiplos anos
    df = await ibge.ppm('bovino', ano=[2020, 2021, 2022, 2023])

    # Filtrar por UF
    df = await ibge.ppm('bovino', ano=2023, uf='MT')

    # Nivel municipal
    df = await ibge.ppm('bovino', ano=2023, nivel='municipio', uf='MS')

    # Com metadados
    df, meta = await ibge.ppm('bovino', ano=2023, return_meta=True)

asyncio.run(main())

Schema - PPM

Coluna Tipo Descrição
ano int Ano de referencia
localidade str Nome da localidade
localidade_cod int Código IBGE da localidade
especie str Nome da especie/produto
valor float Valor (cabecas, mil litros, etc)
unidade str Unidade de medida
fonte str "ibge_ppm"

Especies/Produtos PPM

Rebanhos (tabela 3939)

Código Espécie Unidade
bovino Bovino cabecas
bubalino Bubalino cabecas
equino Equino cabecas
suino_total Suino (total) cabecas
suino_matrizes Suino matrizes cabecas
caprino Caprino cabecas
ovino Ovino cabecas
galinaceos_total Galinaceos (total) cabecas
galinhas Galinhas (inclui poedeiras e matrizeiras) cabecas
codornas Codornas cabecas

galinhas_poedeiras: alias depreciado de galinhas (FutureWarning).

Produção de origem animal (tabela 74)

Código Produto Unidade
leite Leite mil litros
ovos_galinha Ovos de galinha mil duzias
ovos_codorna Ovos de codorna mil duzias
mel Mel de abelha kg
casulos Casulos de bicho-da-seda kg
la La kg
especies = await ibge.especies_ppm()
# ['bovino', 'bubalino', 'caprino', 'casulos', 'codornas', ...]

Uso - Abate Trimestral

Básico

import asyncio
from agrobr import ibge

async def main():
    # Abate bovino por UF
    df = await ibge.abate('bovino', trimestre='202303')

    # Abate de frango no Parana
    df = await ibge.abate('frango', trimestre='202303', uf='PR')

    # Abate de suinos — todas as UFs
    df = await ibge.abate('suino', trimestre='202304')

    # Com metadados
    df, meta = await ibge.abate('bovino', trimestre='202303', return_meta=True)

asyncio.run(main())

Schema - Abate Trimestral

Coluna Tipo Descrição
trimestre str Trimestre no formato YYYYQQ
localidade str UF
localidade_cod int Código IBGE da localidade
especie str bovino, suino ou frango
categoria str Tipo de rebanho no bovino: total (padrão), bois, vacas, novilhos, novilhas ou vitelos; total no suíno e no frango
animais_abatidos Int64 Quantidade abatida (cabecas)
peso_carcacas float Peso total das carcacas (kg)
fonte str "ibge_abate"

Espécies Abate

Código Espécie Tabela SIDRA
bovino Bovino 1092
suino Suino 1093
frango Frango 1094
especies = await ibge.especies_abate()
# ['bovino', 'suino', 'frango']

Uso - Censo Agropecuário

Básico

import asyncio
from agrobr import ibge

async def main():
    # Efetivo de rebanho por UF
    df = await ibge.censo_agro('efetivo_rebanho')

    # Uso da terra em Mato Grosso
    df = await ibge.censo_agro('uso_terra', uf='MT')

    # Lavoura temporaria por municipio
    df = await ibge.censo_agro('lavoura_temporaria', nivel='municipio', uf='PR')

    # Lavoura permanente — Brasil
    df = await ibge.censo_agro('lavoura_permanente', nivel='brasil')

    # Com metadados
    df, meta = await ibge.censo_agro('efetivo_rebanho', return_meta=True)

asyncio.run(main())

Schema - Censo Agropecuário

Coluna Tipo Descrição
ano int Ano de referencia (1995, 2006 ou 2017)
localidade str Nome da localidade
localidade_cod int Código IBGE da localidade
tema str Tema do censo
categoria str Categoria dentro do tema
variavel str Nome da variável
valor float Valor da variável
unidade str Unidade de medida
fonte str "ibge_censo_agro"

Temas Censo Agropecuário

Código Tema Tabela SIDRA 1995 Tabela SIDRA 2006 Tabela SIDRA 2017
efetivo_rebanho Efetivo de rebanho 323 — 6907
uso_terra Uso da terra 316/311 — 6881
lavoura_temporaria Lavoura temporária 497/492/503 — 6957
lavoura_permanente Lavoura permanente 509/504/510 — 6956
preparo_solo Preparo do solo — 791 6855
adubacao Adubacao — 1249 6848
calagem Calagem — 1245 6849
agrotoxicos Uso de agrotoxicos — 1459 6851
praticas_agricolas Praticas agrícolas — 837 8561
irrigacao Irrigação — 855 6857
despesa_adubos Despesa com adubos — — 6899
temas = await ibge.temas_censo_agro()
# ['efetivo_rebanho', 'uso_terra', 'lavoura_temporaria', 'lavoura_permanente',
#  'preparo_solo', 'adubacao', 'calagem', 'agrotoxicos', 'praticas_agricolas', 'irrigacao',
#  'despesa_adubos']

Cache

Não há cache local: cada chamada consulta o IBGE, e o MetaInfo sai com from_cache=False e cache_expires_at nulo.

Atualização

Pesquisa Frequência
PAM Anual (agosto-setembro)
LSPA Mensal
PPM Anual (setembro)
Abate Trimestral (T+2 meses)
Censo Agro Decenial (ultimo: 2017)
Silvicultura (PEVS) Anual (agosto-setembro)
Extração Vegetal (PEVS) Anual (agosto-setembro)
Leite Trimestral Trimestral (T+2 meses)
PIB Agro Trimestral (T+2 meses)

Uso - Silvicultura (PEVS)

Básico

import asyncio
from agrobr import ibge

async def main():
    # Producao de madeira em tora por UF
    df = await ibge.silvicultura('madeira_tora', ano=2023)

    # Area plantada de eucalipto
    df = await ibge.silvicultura('eucalipto', variavel='area')

    # Carvao vegetal em MG
    df = await ibge.silvicultura('carvao', ano=2023, uf='MG')

    # Com metadados
    df, meta = await ibge.silvicultura('madeira_tora', return_meta=True)

asyncio.run(main())

Schema - Silvicultura

Coluna Tipo Descrição
ano int Ano de referencia
localidade str Nome da localidade
localidade_cod int Código IBGE da localidade
produto str Nome do produto
valor float Valor (Toneladas, Metros cubicos ou Hectares)
unidade str Unidade de medida
fonte str "ibge_silvicultura"

Uso - Extração Vegetal (PEVS)

Básico

import asyncio
from agrobr import ibge

async def main():
    # Producao de acai por UF
    df = await ibge.extracao_vegetal('acai', ano=2023)

    # Castanha-do-Para no Amazonas
    df = await ibge.extracao_vegetal('castanha_para', ano=2023, uf='AM')

    # Valor da producao
    df = await ibge.extracao_vegetal('acai', variavel='valor_producao')

    # Com metadados
    df, meta = await ibge.extracao_vegetal('acai', return_meta=True)

asyncio.run(main())

Schema - Extração Vegetal

Coluna Tipo Descrição
ano int Ano de referencia
localidade str Nome da localidade
localidade_cod int Código IBGE da localidade
produto str Nome do produto
valor float Valor (Toneladas ou Metros cubicos)
unidade str Unidade de medida
fonte str "ibge_extracao_vegetal"

Uso - Leite Trimestral

Básico

import asyncio
from agrobr import ibge

async def main():
    # Leite trimestral por UF
    df = await ibge.leite_trimestral(trimestre='202303')

    # Filtrar por UF
    df = await ibge.leite_trimestral(trimestre='202303', uf='MG')

    # Multiplos trimestres
    df = await ibge.leite_trimestral(trimestre=['202301', '202302', '202303'])

    # Com metadados
    df, meta = await ibge.leite_trimestral(return_meta=True)

asyncio.run(main())

Schema - Leite Trimestral

Coluna Tipo Descrição
trimestre str Trimestre YYYYQQ
localidade str UF
localidade_cod int Código IBGE da localidade
leite_adquirido float Leite cru adquirido (mil litros)
leite_industrializado float Leite cru industrializado (mil litros)
preco_medio float Preco médio pago ao produtor (R$/litro)
fonte str "ibge_leite_trimestral"

Uso - PIB Agropecuário

Básico

import asyncio
from agrobr import ibge

async def main():
    # PIB agropecuario a precos correntes
    df = await ibge.pib_agro(trimestre='202501')

    # PIB a precos reais (base 1995)
    df = await ibge.pib_agro(trimestre='202501', precos='real_1995')

    # PIB total
    df = await ibge.pib_agro(trimestre='202501', setor='pib_total')

    # Com metadados
    df, meta = await ibge.pib_agro(return_meta=True)

asyncio.run(main())

Schema - PIB Agropecuário

Coluna Tipo Descrição
trimestre str Trimestre YYYYQQ
valor float Valor (Milhoes de Reais)
unidade str Unidade de medida
setor str Setor econômico
fonte str "ibge_pib"

Malha municipal e áreas urbanizadas (geoserviços)

Fora do SIDRA, o módulo lê 2 camadas do WFS dos geoserviços do IBGE (GeoServer, WFS 2.0.0, saída em GeoJSON):

Função Camada Edição Feições
malha_municipal / malha_municipal_geo CGMAT:qg_2025_030_munic, em https://geoservicos.ibge.gov.br/geoserverIBGE/wfs malha municipal 2025 5.573: os 5.571 municípios e 2 áreas operacionais de lagoas do RS
areas_urbanizadas / areas_urbanizadas_geo CGEO:AU_2026_AreasUrbanizadas2022_Brasil, em https://geoservicos.ibge.gov.br/geoserverCGEO/wfs Áreas Urbanizadas do Brasil 2022 190.172 polígonos, sem UF nem município
  • A contagem (resultType=hits) sai antes do download; acima do teto da consulta, ResourceLimitError sem baixar nada, e o recebido é conciliado com a contagem, como no CNUC e no ICMBio.
  • Os filtros vão ao servidor só por igualdade (sigla_uf, cd_mun) e BBOX. O firewall do IBGE recusa CQL com OR ou NOT LIKE com uma página HTML "Request Rejected" e status 200, que o agrobr levanta como SourceUnavailableError.
  • A geometria sai em EPSG:4326, pedida ao servidor (srsName), na resolução original da camada.
  • A API de malhas do IBGE (servicodados.ibge.gov.br/api/v3/malhas) não é usada: a geometria dela é generalizada para web (Brasília com 840 vértices, contra 9.896 no WFS) e só traz o código da área.
  • Em arquivo, os ZIPs da malha por UF e do Brasil ficam no geoftp do IBGE, e o shapefile das áreas urbanizadas, em organizacao_do_territorio/tipologias_do_territorio/areas_urbanizadas_do_brasil/2022/Shapefile/ no mesmo servidor.
  • Licença: IBGE, livre (ver licenças).
  • Colunas, limites e exemplos: API IBGE.

Limites e erros

Rajadas de consultas ao SIDRA podem provocar uma verificação antibot do Cloudflare (challenge). Quando a resposta 403 contém cf-mitigated: challenge ou a página “Just a moment”, a consulta levanta SourceUnavailableError com a indicação Cloudflare challenge e orientação para reduzir a taxa de requisições. Aguarde antes de tentar novamente; esse 403 não é repetido automaticamente.

Notas

  • PEVS Silvicultura: 14 produtos, dados anuais desde 1986. Area plantada (tab 5930) com 3 espécies
  • PEVS Extração Vegetal: 21 produtos, dados anuais desde 1986. Unidades mistas (Toneladas vs Metros cubicos)
  • Leite Trimestral: tabela 1086, 3 variáveis pivotadas em colunas wide. Serie desde 1997
  • PIB Agropecuário: tabs 1846/6612, 4 setores, nível Brasil. Serie desde 1996. Contrato pib_agro 1.0 (dataset datasets.pib_agro)

Períodos e cobertura histórica

PAM anterior a 1988 pode não publicar área plantada. datasets.producao_anual representa a ausência por NaN na coluna float64; também mantém nulo o valor da produção quando não solicitado. As demais medidas não são preenchidas automaticamente, para não esconder mudanças na fonte.

PPM rejeita anos futuros com InvalidParameterError, também em datasets.pecuaria_municipal. Abate, leite trimestral e PIB agro aceitam 2025-4, 2025-T4, 2025T4, 2025/4 e 2025Q4, normalizados para 202504. Formatos inválidos são rejeitados antes da rede.

Unidades e quebras históricas da PAM

Os valores publicados não são convertidos implicitamente. unidade_producao, unidade_rendimento e unidade_valor_producao identificam a escala de cada linha. Laranja anterior a 2001 usa mil_frutos e frutos/ha; desde 2001, ton e kg/ha. condicao_produto distingue café em_coco até 2001 e beneficiado desde 2002. As moedas históricas permanecem identificadas, sem conversão para reais nem correção de inflação. Consulte as notas metodológicas do IBGE.

localidade_cod (contrato producao_anual 2.2) traz o código IBGE da localidade como o SIDRA publica (D1C): 7 dígitos no município, 2 na UF e 1 no Brasil. Use-o para juntar municípios entre anos, porque o nome publicado muda (e o do DF sai como "Brasília (DF)", sem o " - UF" dos demais). No producao_anual, só as linhas do IBGE trazem o código; o fallback da CONAB não.

O símbolo SIDRA - significa zero numérico e é preservado como zero; .., ... e X permanecem ausentes. Municípios com produção zero não são eliminados. O contrato producao_anual é 2.2; as quatro colunas descritivas e o localidade_cod são opcionais no contrato e entregues pela API PAM.

Coleta bruta (malhas)

agrobr.bruto.coletar("ibge", "malha_municipal", ...) e ("ibge", "areas_urbanizadas", ...) guardam as páginas GeoJSON originais das camadas CGMAT:qg_2025_030_munic (edição 2025) e CGEO:AU_2026_AreasUrbanizadas2022_Brasil (edição 2022), no CRS nativo (EPSG:4674) e com todos os atributos; ibge.malha_municipal e ibge.areas_urbanizadas (e os _geo) seguem em EPSG:4326. A chave da cobertura é cd_mun na malha e o atributo fid nas áreas urbanizadas, não o ID da feição do GeoServer (a feição AU_2026_AreasUrbanizadas2022_Brasil.43300 tem fid="45886"); as duas são texto, e as páginas têm de vir em ordem estritamente crescente. Áreas urbanizadas recusam UF. Veja a API da coleta bruta e o contrato do manifesto.

agrobr.bruto.coletar("ibge", "malha_municipal_zip", ...) e ("ibge", "areas_urbanizadas_zip", ...) guardam os ZIPs nacionais do geoftp do IBGE como o IBGE os publica, sem abrir o shapefile: BR_Municipios_2025.zip (237 MB, edição 2025) e AreasUrbanizadas2022_Brasil.zip (54 MB, edição 2022). São a mesma publicação das camadas WFS: em 04/10/2026, o DBF de cada ZIP tinha o mesmo número de registros que o numberMatched da camada (5.573 na malha e 190.172 nas áreas urbanizadas). UF e bbox são recusadas; para um recorte, use os recursos paginados.

Geometria inválida

A geometria das saídas _geo sai como a fonte publica, sem reparo; geometria inválida gera aviso e contagem no MetaInfo. Veja Geometrias publicadas.