CONAB Crop Progress¶
Weekly planting and harvest progress data for the main annual crops, published by CONAB.
conab.progresso_safra()¶
Sowing and harvest percentages per crop x state x week.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
cultura |
str |
No | Crop: "Soja", "Milho 1a", "Milho 2a", "Arroz", "Algodao", "Feijao 1a", "Trigo". If None, all |
estado |
str |
No | Filter by state (e.g. "MT", "GO", "PR"). If None, all |
operacao |
str |
No | "Semeadura" or "Colheita". If None, both |
semana_url |
str |
No | URL of a specific week. If None, fetches the most recent |
as_polars |
bool |
No | If True, returns a polars.DataFrame |
return_meta |
bool |
No | If True, returns (DataFrame, MetaInfo) |
Returned Columns¶
| Column | Type | Description |
|---|---|---|
cultura |
str | Crop name (e.g. "Soja", "Milho 2a") |
safra |
str | Crop year in "YYYY/YY" format (e.g. "2025/26") |
operacao |
str | "Semeadura" or "Colheita" |
estado |
str | State code (e.g. "MT", "GO") |
semana_atual |
str | Week reference date (YYYY-MM-DD) |
pct_ano_anterior |
float | % same week of the previous year (0.0-1.0) |
pct_semana_anterior |
float | % previous week (0.0-1.0) |
pct_semana_atual |
float | % current week (0.0-1.0) |
pct_media_5_anos |
float | % average of the last 5 years (0.0-1.0) |
Available Crops¶
| Crop | States | Operations |
|---|---|---|
| Soja | 12 states (~96% area) | Semeadura, Colheita |
| Milho 1a | 9 states (~92% area) | Semeadura, Colheita |
| Milho 2a | 9 states (~91% area) | Semeadura |
| Arroz | 6 states (~88% area) | Semeadura, Colheita |
| Feijao 1a | 8 states (~91% area) | Semeadura, Colheita |
| Algodao | 7 states (~98% area) | Semeadura |
| Trigo | Variable (winter crop) | Semeadura, Colheita |
conab.semanas_disponiveis()¶
Lists the weeks available on the CONAB Crop Progress portal.
import agrobr
semanas = await agrobr.conab.semanas_disponiveis()
for s in semanas[:3]:
print(s["descricao"], s["url"])
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
max_pages |
int |
No | Maximum number of pages to fetch (default 4 = ~80 weeks) |
Returns¶
List of dicts with descricao and url for each available week.
Synchronous Usage¶
from agrobr import sync
df = sync.conab.progresso_safra(cultura="Soja")
semanas = sync.conab.semanas_disponiveis()
Examples¶
Soybean progress in Mato Grosso¶
import agrobr
df = await agrobr.conab.progresso_safra(
cultura="Soja",
estado="MT",
operacao="Colheita",
)
print(f"Colheita soja MT: {df.iloc[0]['pct_semana_atual']:.1%}")
Fetch a specific week¶
import agrobr
semanas = await agrobr.conab.semanas_disponiveis(max_pages=1)
url_semana = semanas[0]["url"]
df = await agrobr.conab.progresso_safra(semana_url=url_semana)
Compare progress across states¶
import agrobr
df = await agrobr.conab.progresso_safra(
cultura="Soja",
operacao="Colheita",
)
pivot = df[["estado", "pct_semana_atual"]].sort_values(
"pct_semana_atual", ascending=False
)
print(pivot.to_string(index=False))
Data Source¶
- Provider: CONAB — Companhia Nacional de Abastecimento
- Frequency: Weekly (published on Fridays)
- Data: % planting and harvest per crop x state
- Format: XLSX
- Series: Current crop year + previous-year comparison + 5-year average
- License: Public federal government data (livre)
- Portal: Progresso de Safra