IBGE SIDRA Statistics
Pricing
from $25.30 / 1,000 catalogue entries
IBGE SIDRA Statistics
Get public IBGE SIDRA catalogue entries, aggregate metadata, available periods, territorial references, and source-linked observations. Choose a focused workflow and download the records for research, reporting, or data pipelines.
Pricing
from $25.30 / 1,000 catalogue entries
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
📊 Explore IBGE SIDRA statistics
Researchers, analysts, journalists, and developers can use IBGE SIDRA to collect public Brazilian statistics in a structured way. Choose a target and get source-linked catalogue entries, territorial references, aggregate metadata, available periods, or observations in a downloadable Apify dataset. This keeps official IDs, labels, values, periods, and source links together for research, reporting, and data pipelines.
- Pull public data for a SIDRA IBGE project and keep the source link with each row.
- Build a place lookup with IBGE Cidades and use official territory names and IDs.
- Collect a Censo IBGE view for a population or territorial research task.
- Compare state-level public statistics with IBGE Estados in a structured dataset.
- Organize source-linked rows for IBGE Datasets and downstream analysis.
- Look up official IDs with IBGE Code when you need to join Brazilian geography data.
📚 Browse IBGE SIDRA records
Each saved row has a recordType, an official sourceUrl, and a collectedAt time. The other fields depend on the target. IBGE source modification time appears as sourceModifiedAt when the source publishes it.
Catalogue entry
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as catalogueEntry. |
aggregate.id | string | Official SIDRA aggregate ID. |
aggregate.name | string | Name of the aggregate when published. |
aggregate.subject | string | Subject covered by the aggregate when published. |
sourceUrl | string (URL) | Official IBGE source page for the entry. |
sourceModifiedAt | string (date-time, optional) | Time the source last changed when IBGE publishes it. |
collectedAt | string (date-time) | Time this row was collected. |
Territorial reference
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as territorialReference. |
territory.id | string | Official IBGE territory ID. |
territory.name | string | Official territory name. |
territory.level | string | Territory level: state, municipality, region, mesoregion, or microregion. |
territory.abbreviation | string (optional) | Official abbreviation when IBGE publishes one. |
territory.regionalContext.stateId | string (optional) | ID of the related state. |
territory.regionalContext.stateName | string (optional) | Name of the related state. |
territory.regionalContext.regionId | string (optional) | ID of the related region. |
territory.regionalContext.regionName | string (optional) | Name of the related region. |
territory.regionalContext.mesoregionId | string (optional) | ID of the related mesoregion. |
territory.regionalContext.mesoregionName | string (optional) | Name of the related mesoregion. |
territory.regionalContext.microregionId | string (optional) | ID of the related microregion. |
territory.regionalContext.microregionName | string (optional) | Name of the related microregion. |
sourceUrl | string (URL) | Official IBGE source page for the territory. |
sourceModifiedAt | string (date-time, optional) | Time the source last changed when IBGE publishes it. |
collectedAt | string (date-time) | Time this row was collected. |
Example row
{"recordType": "territorialReference","territory": {"id": "1101","name": "Madeira-Guaporé","level": "mesoregion","regionalContext": {"mesoregionId": "1101","mesoregionName": "Madeira-Guaporé","stateId": "11","stateName": "Rondônia","regionId": "1","regionName": "Norte"}},"sourceUrl": "https://servicodados.ibge.gov.br/api/v1/localidades/mesorregioes","collectedAt": "2026-08-12T18:51:46.496Z"}
Aggregate metadata
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as aggregateMetadata. |
aggregate.id | string | Official SIDRA aggregate ID. |
aggregate.name | string | Name of the aggregate when published. |
aggregate.subject | string | Subject covered by the aggregate when published. |
variables | object[] | Variables published for the aggregate. |
variables[].id | string | Official variable ID. |
variables[].name | string | Variable label. |
variables[].unit | string | Unit used by the variable. |
classifications | object[] | Classifications published for the aggregate. |
classifications[].id | string | Official classification ID. |
classifications[].name | string | Classification label. |
supportedTerritorialLevels | string[] | Territorial levels supported by the aggregate. |
frequency | string | Publication frequency when available. |
sourceUrl | string (URL) | Official IBGE source page for the metadata. |
sourceModifiedAt | string (date-time, optional) | Time the source last changed when IBGE publishes it. |
collectedAt | string (date-time) | Time this row was collected. |
Example row
{"recordType": "aggregateMetadata","aggregate": {"id": "4714","name": "População Residente, Área territorial e Densidade demográfica","subject": "Território"},"variables": [{"id": "93","name": "População residente","unit": "Pessoas"},{"id": "6318","name": "Área da unidade territorial","unit": "Quilômetros quadrados"},{"id": "614","name": "Densidade demográfica","unit": "Habitante por quilômetro quadrado"}],"classifications": [],"supportedTerritorialLevels": ["region","municipality","state"],"frequency": "anual","sourceUrl": "https://sidra.ibge.gov.br/tabela/4714","collectedAt": "2026-08-12T18:51:45.775Z"}
Available period
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as availablePeriod. |
aggregate.id | string | Official SIDRA aggregate ID. |
aggregate.name | string | Name of the aggregate when published. |
aggregate.subject | string | Subject covered by the aggregate when published. |
period | string | Period available for the aggregate. |
sourceUrl | string (URL) | Official IBGE source page for the period. |
sourceModifiedAt | string (date-time, optional) | Time the source last changed when IBGE publishes it. |
collectedAt | string (date-time) | Time this row was collected. |
Example row
{"recordType": "availablePeriod","aggregate": {"id": "4714","name": "População Residente, Área territorial e Densidade demográfica","subject": "Território"},"period": "2022","sourceUrl": "https://sidra.ibge.gov.br/tabela/4714","sourceModifiedAt": "2026-05-07T00:00:00.000Z","collectedAt": "2026-08-12T18:51:45.342Z"}
Observation
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as observation. |
aggregate.id | string | Official SIDRA aggregate ID. |
aggregate.name | string | Name of the aggregate when published. |
aggregate.subject | string | Subject covered by the aggregate when published. |
variable.id | string | Official variable ID. |
variable.name | string | Variable label. |
variable.unit | string | Unit used for the value. |
territory.id | string | Official territory ID. |
territory.name | string | Territory name. |
territory.level | string | Territory level. |
territory.abbreviation | string (optional) | Official abbreviation when IBGE publishes one. |
territory.regionalContext.stateId | string (optional) | ID of the related state. |
territory.regionalContext.stateName | string (optional) | Name of the related state. |
territory.regionalContext.regionId | string (optional) | ID of the related region. |
territory.regionalContext.regionName | string (optional) | Name of the related region. |
territory.regionalContext.mesoregionId | string (optional) | ID of the related mesoregion. |
territory.regionalContext.mesoregionName | string (optional) | Name of the related mesoregion. |
territory.regionalContext.microregionId | string (optional) | ID of the related microregion. |
territory.regionalContext.microregionName | string (optional) | Name of the related microregion. |
period | string | Period for the observation. |
value | number | Numeric value published by IBGE. |
valueOriginal | string (optional) | Original source representation of the value when available. |
sourceUrl | string (URL) | Official IBGE source page for the observation. |
sourceModifiedAt | string (date-time, optional) | Time the source last changed when IBGE publishes it. |
collectedAt | string (date-time) | Time this row was collected. |
Example row
{"recordType": "observation","aggregate": {"id": "4714","name": "População Residente, Área territorial e Densidade demográfica","subject": "Território"},"variable": {"id": "93","name": "População residente","unit": "Pessoas"},"territory": {"id": "11","name": "Rondônia","level": "state"},"period": "2022","value": 1581196,"valueOriginal": "1581196","sourceUrl": "https://sidra.ibge.gov.br/tabela/4714","sourceModifiedAt": "2026-05-07T00:00:00.000Z","collectedAt": "2026-08-12T18:48:26.213Z"}
▶️ Run an IBGE SIDRA lookup
Run steps
- Pick one target in the input form.
- Add aggregate IDs for metadata, periods, or observations. You can send up to 100 IDs for these targets.
- Add periods, variable IDs, or territorial levels when you want a narrower observation scope.
- Start the run and open the returned dataset after it finishes.
What the run does
One run covers one coherent target. An aggregate ID list is a same-kind batch for supported targets, not several separate workflows. The Actor reads public IBGE data and saves eligible rows with a source URL and collection time. Fields for another target stay visible in the form but are ignored.
Access
You do not need to provide a source credential. The successful run dataset stays available through the datasetUrl output link.
⚙️ Input
Fields for another target stay visible but are ignored. Leave periods, variableIds, or territorialLevels empty to use all available values for the selected target. A broad empty scope can return all available results until the source is exhausted.
Input fields
| Field | Type | What it does |
|---|---|---|
target | string | Required. Choose catalogue, territorialReference, aggregateMetadata, availablePeriods, or observations. |
periods | string[] | For observations, select one or more published periods. Leave empty to use all available periods. Other targets ignore this field. |
variableIds | string[] | For observations, select one or more variable IDs. Leave empty to use all available variables. Other targets ignore this field. |
aggregateIds | string[] | For aggregate metadata, available periods, or observations, enter one or more numeric SIDRA IDs. Up to 100 IDs are allowed. Other targets ignore this field. |
territorialLevels | string[] | For territorial references or observations, choose states, municipalities, regions, mesoregions, or microregions. Leave empty to use all available levels for the selected target. Other targets ignore this field. |
Example input
{"target": "observations","aggregateIds": ["4714"],"periods": ["2022"],"variableIds": ["93"],"territorialLevels": ["states"]}
🧾 Output
Run output
| Field | Type | What it does |
|---|---|---|
datasetUrl | string (URL) | Link to the successful IBGE SIDRA records from this run. |
The dataset contains one row for each returned source item. The tables above describe the complete fields for each row shape, including nested fields such as aggregate.id and territory.regionalContext.regionName.
💳 Pricing
Pay per saved shape
This Actor uses pay-per-event pricing. Successful saved rows use the buyer-facing event for their shape:
| Event | Charged for |
|---|---|
| Catalogue entry | One successful catalogue entry with its ID, name, subject, and source link. |
| Observation | One successful observation for its aggregate, period, variable, and territorial level. |
| Territory | One successful territory with its ID, name, level, and regional context when available. |
| Aggregate metadata | One successful aggregate metadata entry with its variables and units. |
| Available period | One successful available period for an aggregate. |
The Store Pricing panel shows the current tier prices. This page does not state a charge for setup, diagnostic, empty, or no-result work.
🔌 Integrations
Dataset workflow
Download the run dataset from Apify and pass the structured rows to your research, reporting, or data pipeline after the run.
Video guide
❓ FAQ
Which target returns measured values?
Choose observations when you need a value for an aggregate, period, variable, and territorial level. The row includes the numeric value and its original source representation when available.
Which target tells me what an aggregate contains?
Choose aggregateMetadata to get its variables and units. The row can also include classifications, supported territorial levels, and frequency when published.
Can I see available periods before collecting observations?
Yes. Choose availablePeriods and provide the aggregate IDs. The result lists periods with a source modification time when IBGE publishes one.
What happens when I leave a scope list empty?
An empty periods, variableIds, or territorialLevels list uses all values available for the selected target. The run continues until the source is exhausted.
Can one run combine several targets?
No. One run covers one target. You can send a simple list of up to 100 aggregate IDs for the supported aggregate-oriented targets, but you cannot combine catalogue, territory, metadata, periods, and observations in one run.
Do I need an IBGE API key?
No source credential is required in the input. The Actor uses the supported public IBGE workflows.
Can I verify a returned value?
Yes. Each returned row includes an official sourceUrl, and it can include sourceModifiedAt when IBGE publishes that time. collectedAt tells you when the Actor fetched the row.
Does the Actor calculate forecasts or custom statistics?
No. It returns published IBGE catalogue, territorial, metadata, period, and observation records. It does not add forecasts, custom calculations, or interpretations.
📝 Changelog
0.0: Initial release
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- IBGE Brazil Official Statistics Scraper helps when you need a broader IBGE public API workflow with states, municipalities, catalogue data, metadata, or observations.
- INE Portugal Statistics Scraper helps you collect official Portuguese indicator metadata or data series for comparison.
- INE Spain (Instituto Nacional de Estadistica) Scraper helps you browse Spanish statistical operations and pull labelled observations.
- Statistics Canada Web Data Service Scraper helps you explore Canadian catalogue metadata, geography, frequencies, and time-series observations.
- ONS UK Statistics Beta API Scraper helps you collect UK dataset catalogues, metadata, editions, versions, and observations.
Made with ❤️ by Maxime Dupré
