Skip to content

IBGE - Brazilian Institute of Geography and Statistics

Overview

Field Value
Institution Federal Government
Website ibge.gov.br
API SIDRA
agrobr access Via SIDRA API (JSON)

Data Origin

Source

  • API: https://sidra.ibge.gov.br/
  • Format: JSON
  • Access: Public, no authentication

Available Surveys

PAM - Municipal Agricultural Production

  • SIDRA table: 5457 (new series 2018+)
  • Coverage: All municipalities
  • Frequency: Annual

LSPA - Systematic Survey of Agricultural Production

  • SIDRA table: 6588
  • Coverage: National/state
  • Frequency: Monthly

PPM - Municipal Livestock Survey

  • SIDRA tables: 3939 (herds), 74 (animal-origin production)
  • Coverage: All municipalities
  • Frequency: Annual
  • Series: 1974-present (51 years)

Slaughter - Quarterly Animal Slaughter Survey

  • SIDRA tables: 1092 (cattle), 1093 (hogs), 1094 (chickens)
  • Coverage: Brazil + states (27 states)
  • Frequency: Quarterly
  • Series: 1997-present
  • Species: cattle, hog, chicken
  • Variables: animals slaughtered (head), carcass weight (kg)

Agricultural Census 1995/2006/2017

  • SIDRA tables 2017: 6907 (livestock numbers), 6881 (land use), 6957 (temporary crops), 6956 (permanent crops), 6855 (soil preparation), 6848 (fertilization), 6849 (liming), 6851 (pesticides), 8561 (agricultural practices), 6857 (irrigation)
  • SIDRA tables 2006: 791 (soil preparation), 1249 (fertilization), 1245 (liming), 1459 (pesticides), 837 (agricultural practices), 855 (irrigation)
  • SIDRA tables 1995: 323 (livestock numbers), 316/311 (land use), 497/492/503 (temporary crops), 509/504/510 (permanent crops)
  • Coverage: Brazil + state + municipality
  • Frequency: Decennial
  • Periods: 1995, 2006 and 2017 (by theme)
  • Themes: efetivo_rebanho, uso_terra, lavoura_temporaria, lavoura_permanente, preparo_solo, adubacao, calagem, agrotoxicos, praticas_agricolas, irrigacao
  • Format: Long format (variable/value per row)

Agricultural Census — Historical Series (1920-2006)

  • SIDRA tables: 263 (establishments/area), 264 (land use), 265 (personnel/tractors), 280 (producer status), 281 (animal numbers), 282 (animal production), 283 (crop production), 1730 (permanent crops), 1731 (temporary crops)
  • Coverage: Brazil + region + state (municipal NOT available in SIDRA)
  • Frequency: Decennial censuses (1920-2006, by table)
  • Periods: up to 10 censuses per theme (1920, 1940, 1950, 1960, 1970, 1975, 1980, 1985, 1995, 2006)
  • Themes: 9 themes with a long historical series
  • Quirks: Poultry in thousand head (tab 281), mixed units by category (tabs 282/283/1730/1731), classifications without Total (tabs 281/282/283/1730/1731)

Agricultural Census 1985 — Municipal Data (OCR PDFs)

  • Source: State PDFs from the IBGE Library
  • Format: CSVs extracted via hybrid OCR (PyMuPDF coords + OCR correction)
  • Coverage: 22 states, down to municipality (mesoregion, microregion, municipality)
  • Frequency: One-off (1985 Census)
  • Themes: 53 themes (property, land use, personnel, mechanization, livestock, crops, production)
  • Excluded states: MA, PI, CE, RN (PDFs without an OCR layer)
  • Access: Data bundled in the package (agrobr/data/censo_1985/)
  • Quality: confianca field (alta/media/baixa), 77.9% state↔national cross-validation
  • Catalog URL: https://biblioteca.ibge.gov.br/index.php/biblioteca-catalogo?view=detalhes&id=768

Agricultural Census 1995/96 — Legacy Themes (FTP)

  • Source: IBGE FTP (ftp.ibge.gov.br)
  • Format: Legacy XLS (xlrd)
  • Coverage: Brazil (mesoregions, microregions, municipalities)
  • Frequency: One-off (1995/96 Census)
  • Themes: tecnologia, pessoal_ocupado, maquinas, producao_animal, valor_producao, financeiro
  • Access: Public, no authentication

PEVS — Silviculture

  • SIDRA tables: 291 (production, classification c194) + 5930 (planted area, classification c734)
  • Coverage: All municipalities
  • Frequency: Annual
  • Series: 1986-present
  • Products: carvao, lenha, madeira_tora, madeira_celulose, acacia_negra, eucalipto_folha, resina (14 total)
  • Area species: eucalipto, pinus, outras
  • Variables: quantidade_produzida (var 142), valor_producao (var 143), area (var 6549)
  • Units: Tonnes or cubic meters (by product)

PEVS — Plant Extraction

  • SIDRA table: 289 (classification c193)
  • Coverage: All municipalities
  • Frequency: Annual
  • Series: 1986-present
  • Products: 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)
  • Variables: quantidade_produzida (var 144), valor_producao (var 145)
  • Units: Tonnes (most) or cubic meters (lenha, madeira_tora)

Quarterly Milk — Quarterly Milk Survey

  • SIDRA table: 1086
  • Coverage: Brazil + states (27 states)
  • Frequency: Quarterly
  • Series: 1997-present
  • Variables: milk acquired (var 282, thousand liters), milk industrialized (var 283, thousand liters), average price (var 2522, R$/liter)
  • Output: Wide format (3 variables as columns)

Agricultural GDP — Quarterly National Accounts

  • SIDRA tables: 1846 (current prices, var 585) + 6612 (real prices, 1995 base, var 9318)
  • Coverage: Brazil (national level)
  • Frequency: Quarterly
  • Series: 1996-present
  • Sectors: agropecuaria (90687), industria (90691), servicos (90696), pib_total (90707)
  • Classification: c11255
  • Unit: Millions of Reais

Variables

Code Name Unit
214 Planted area hectares
215 Harvested area hectares
216 Quantity produced tonnes
112 Average yield kg/ha

Usage - PAM

Basic

import asyncio
from agrobr import ibge

async def main():
    # Soybean data by state
    df = await ibge.pam('soja', ano=2023)

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

    # Filter by state
    df = await ibge.pam('soja', ano=2023, uf='MT')

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

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

asyncio.run(main())

Territorial Levels

Level Description
brasil National total
uf By Federative Unit
municipio By municipality

Usage - LSPA

Basic

# Estimates for the year
df = await ibge.lspa('soja', ano=2024)

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

# Filter by state
df = await ibge.lspa('soja', ano=2024, uf='PR')

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

Schema - PAM

Column Type Description
ano int Reference year
localidade str Locality name
produto str Product name
area_plantada float Hectares
area_colhida float Hectares
producao float Tonnes
rendimento float kg/ha
valor_producao float Thousand reais
fonte str "ibge_pam"

Schema - LSPA

Column Type Description
ano int Reference year
mes int Reference month
variavel str Variable name
valor float Variable value
produto str Product name
fonte str "ibge_lspa"

PAM Products

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

LSPA Products

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

Note: In LSPA, milho_1 and milho_2 refer to the first and second crop years.

Available States

ufs = await ibge.ufs()
# ['AC', 'AL', 'AM', 'AP', 'BA', 'CE', 'DF', ...]

Usage - PPM

Basic

import asyncio
from agrobr import ibge

async def main():
    # Cattle herd by state
    df = await ibge.ppm('bovino', ano=2023)

    # Milk production
    df = await ibge.ppm('leite', ano=2023)

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

    # Filter by state
    df = await ibge.ppm('bovino', ano=2023, uf='MT')

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

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

asyncio.run(main())

Schema - PPM

Column Type Description
ano int Reference year
localidade str Locality name
localidade_cod int IBGE code of the locality
especie str Species/product name
valor float Value (head, thousand liters, etc.)
unidade str Unit of measure
fonte str "ibge_ppm"

PPM Species/Products

Herds (table 3939)

Code Species Unit
bovino Cattle head
bubalino Buffalo head
equino Equine head
suino_total Hog (total) head
suino_matrizes Breeding sows head
caprino Goat head
ovino Sheep head
galinaceos_total Poultry (total) head
galinhas_poedeiras Laying hens head
codornas Quails head

Animal-origin production (table 74)

Code Product Unit
leite Milk thousand liters
ovos_galinha Hen eggs thousand dozens
ovos_codorna Quail eggs thousand dozens
mel Bee honey kg
casulos Silkworm cocoons kg
la Wool kg
especies = await ibge.especies_ppm()
# ['bovino', 'bubalino', 'caprino', 'casulos', 'codornas', ...]

Usage - Quarterly Slaughter

Basic

import asyncio
from agrobr import ibge

async def main():
    # Cattle slaughter by state
    df = await ibge.abate('bovino', trimestre='202303')

    # Chicken slaughter in Paraná
    df = await ibge.abate('frango', trimestre='202303', uf='PR')

    # Hog slaughter — Brazil
    df = await ibge.abate('suino', trimestre='202304')

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

asyncio.run(main())

Schema - Quarterly Slaughter

Column Type Description
trimestre str Quarter in YYYYQQ format
localidade str State
localidade_cod int IBGE code of the locality
especie str bovino, suino or frango
animais_abatidos float Quantity slaughtered (head)
peso_carcacas float Total carcass weight (kg)
fonte str "ibge_abate"

Slaughter Species

Code Species SIDRA Table
bovino Cattle 1092
suino Hog 1093
frango Chicken 1094
especies = await ibge.especies_abate()
# ['bovino', 'suino', 'frango']

Usage - Agricultural Census

Basic

import asyncio
from agrobr import ibge

async def main():
    # Livestock numbers by state
    df = await ibge.censo_agro('efetivo_rebanho')

    # Land use in Mato Grosso
    df = await ibge.censo_agro('uso_terra', uf='MT')

    # Temporary crops by municipality
    df = await ibge.censo_agro('lavoura_temporaria', nivel='municipio', uf='PR')

    # Permanent crops — Brazil
    df = await ibge.censo_agro('lavoura_permanente')

    # With metadata
    df, meta = await ibge.censo_agro('efetivo_rebanho', return_meta=True)

asyncio.run(main())

Schema - Agricultural Census

Column Type Description
ano int Reference year (1995, 2006 or 2017)
localidade str Locality name
localidade_cod int IBGE code of the locality
tema str Census theme
categoria str Category within the theme
variavel str Variable name
valor float Variable value
unidade str Unit of measure
fonte str "ibge_censo_agro"

Agricultural Census Themes

Code Theme SIDRA Table 1995 SIDRA Table 2006 SIDRA Table 2017
efetivo_rebanho Livestock numbers 323 6907
uso_terra Land use 316/311 6881
lavoura_temporaria Temporary crops 497/492/503 6957
lavoura_permanente Permanent crops 509/504/510 6956
preparo_solo Soil preparation 791 6855
adubacao Fertilization 1249 6848
calagem Liming 1245 6849
agrotoxicos Pesticide use 1459 6851
praticas_agricolas Agricultural practices 837 8561
irrigacao Irrigation 855 6857
temas = await ibge.temas_censo_agro()
# ['efetivo_rebanho', 'uso_terra', 'lavoura_temporaria', 'lavoura_permanente',
#  'preparo_solo', 'adubacao', 'calagem', 'agrotoxicos', 'praticas_agricolas', 'irrigacao']

Cache

Survey TTL Maximum stale
PAM 7 days 90 days
LSPA 24 hours 30 days
PPM 7 days 90 days
Slaughter 7 days 90 days
Agricultural Census 30 days 90 days
Legacy Agricultural Census 90 days 90 days
Silviculture (PEVS) 7 days 90 days
Plant Extraction (PEVS) 7 days 90 days
Quarterly Milk 7 days 90 days
Agricultural GDP 7 days 90 days

Update

Survey Frequency
PAM Annual (August-September)
LSPA Monthly
PPM Annual (September)
Slaughter Quarterly (T+2 months)
Agricultural Census Decennial (latest: 2017)
Silviculture (PEVS) Annual (August-September)
Plant Extraction (PEVS) Annual (August-September)
Quarterly Milk Quarterly (T+2 months)
Agricultural GDP Quarterly (T+2 months)

Usage - Silviculture (PEVS)

Basic

import asyncio
from agrobr import ibge

async def main():
    # Roundwood production by state
    df = await ibge.silvicultura('madeira_tora', ano=2023)

    # Planted area of eucalyptus
    df = await ibge.silvicultura('eucalipto', variavel='area')

    # Charcoal in MG
    df = await ibge.silvicultura('carvao', ano=2023, uf='MG')

    # With metadata
    df, meta = await ibge.silvicultura('madeira_tora', return_meta=True)

asyncio.run(main())

Schema - Silviculture

Column Type Description
ano int Reference year
localidade str Locality name
localidade_cod int IBGE code of the locality
produto str Product name
valor float Value (Tonnes, cubic meters or Hectares)
unidade str Unit of measure
fonte str "ibge_silvicultura"

Usage - Plant Extraction (PEVS)

Basic

import asyncio
from agrobr import ibge

async def main():
    # Açaí production by state
    df = await ibge.extracao_vegetal('acai', ano=2023)

    # Brazil nut in Amazonas
    df = await ibge.extracao_vegetal('castanha_para', ano=2023, uf='AM')

    # Production value
    df = await ibge.extracao_vegetal('acai', variavel='valor_producao')

    # With metadata
    df, meta = await ibge.extracao_vegetal('acai', return_meta=True)

asyncio.run(main())

Schema - Plant Extraction

Column Type Description
ano int Reference year
localidade str Locality name
localidade_cod int IBGE code of the locality
produto str Product name
valor float Value (Tonnes or cubic meters)
unidade str Unit of measure
fonte str "ibge_extracao_vegetal"

Usage - Quarterly Milk

Basic

import asyncio
from agrobr import ibge

async def main():
    # Quarterly milk by state
    df = await ibge.leite_trimestral(trimestre='202303')

    # Filter by state
    df = await ibge.leite_trimestral(trimestre='202303', uf='MG')

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

    # With metadata
    df, meta = await ibge.leite_trimestral(return_meta=True)

asyncio.run(main())

Schema - Quarterly Milk

Column Type Description
trimestre str Quarter YYYYQQ
localidade str State
localidade_cod int IBGE code of the locality
leite_adquirido float Raw milk acquired (thousand liters)
leite_industrializado float Raw milk industrialized (thousand liters)
preco_medio float Average price paid to the producer (R$/liter)
fonte str "ibge_leite_trimestral"

Usage - Agricultural GDP

Basic

import asyncio
from agrobr import ibge

async def main():
    # Agricultural GDP at current prices
    df = await ibge.pib_agro(trimestre='202501')

    # GDP at real prices (1995 base)
    df = await ibge.pib_agro(trimestre='202501', precos='real_1995')

    # Total GDP
    df = await ibge.pib_agro(trimestre='202501', setor='pib_total')

    # With metadata
    df, meta = await ibge.pib_agro(return_meta=True)

asyncio.run(main())

Schema - Agricultural GDP

Column Type Description
trimestre str Quarter YYYYQQ
valor float Value (Millions of Reais)
unidade str Unit of measure
setor str Economic sector
fonte str "ibge_pib"

Notes

  • PEVS Silviculture: 14 products, annual data since 1986. Planted area (tab 5930) with 3 species. Cache 7 days
  • PEVS Plant Extraction: 21 products, annual data since 1986. Mixed units (Tonnes vs cubic meters). Cache 7 days
  • Quarterly Milk: table 1086, 3 variables pivoted into wide columns. Series since 1997. Cache 7 days
  • Agricultural GDP: tabs 1846/6612, 4 sectors, Brazil level. Series since 1996. No contract (macro view). Cache 7 days