Brazil Economic Calendar: IBGE IPCA, GDP & Jobs Release Dates
Under maintenancePricing
from $1.40 / 1,000 calendar entry returneds
Brazil Economic Calendar: IBGE IPCA, GDP & Jobs Release Dates
Under maintenanceBrazil's official statistics release schedule from the IBGE calendar service: IPCA, IPCA-15, INPC, GDP, unemployment, retail, services and industry releases with date, UTC moment, reference period, English indicator name and release type. A next-release mode answers when the next one lands.
Pricing
from $1.40 / 1,000 calendar entry returneds
Rating
0.0
(0)
Developer
Samat Makatov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Brazil's official statistics release schedule from the IBGE calendar service: IPCA, IPCA-15, INPC, GDP, unemployment, retail, services and industry releases with date, UTC moment, reference period, English indicator name and release type. A next-release mode answers when the next one lands.
The actor reads the keyless JSON calendar service of Brazil's national statistics institute and writes one row per scheduled or already published release: what is published, on which Brasília date, at which moment in UTC, for which reference month or quarter. It answers the scheduling question ("when does the next inflation number print?"), not the number itself. No API key, no proxy and no browser are needed.
Need it tailored to your workflow? Missing a field, a filter, another source or a different output format? Open an issue and describe what you need — we read every request and adapt the actor.
Use cases
- A Brazilian macro calendar in a trading dashboard — pull the coming quarter of price, activity and labour releases with their UTC moments and render them next to your US and European events;
withinDaysandreleaseTypesdecide how far ahead and how noisy the list is. - An agent that answers "when is the next IPCA?" —
mode: "nextRelease"returns exactly one row per indicator you watch, withdaysUntilandreleaseAtUtc, so a model never has to read a calendar page. - Event studies and backtests — a fixed
dateFrom/dateTowindow gives the dates on which a number actually hit the market, back to 2015; that is the timestamp an event study aligns its returns on. - Sector and agribusiness teams — the activity block (retail, services, industrial output) and the agricultural block (crop survey, harvest forecast, livestock, stocks) each have their own codes, so a team follows only its own surveys.
- A daily "what changed in the schedule" feed — a scheduled task with
onlyNew: truewrites rows only when an entry is new or has been moved, which is the whole reason to watch a statistics calendar. - Building a bilingual release table — every mapped product carries an English indicator name next to the Portuguese title, so a non-Portuguese desk can label the rows without a translation step.
Input
Nothing is required: with no input at all the actor returns the next 90 days of the whole calendar.
| Field | Type | Default | Allowed values / notes |
|---|---|---|---|
mode | string | calendar | calendar = one row per release in the window; nextRelease = one row per indicator with the next date still ahead. See Modes |
indicators | string[] | empty = every product | Short codes from the indicator table, e.g. ["ipca", "gdp"]. Required in nextRelease |
query | string | empty | Keyword filter on the Portuguese title, the product name and the English indicator name, case- and accent-insensitive |
releaseTypes | string[] | empty = every type | indicators, studies, geosciences, experimental. See Release types |
dateFrom | string | empty | Earliest release date, YYYY-MM-DD. The archive starts on 2015-01-01 |
dateTo | string | empty | Latest release date, YYYY-MM-DD |
withinDays | integer | 90 | 1–1825. Window length when dateTo is empty: today up to N days ahead, or N days from dateFrom when only that is set. See Dates and the window |
onlyUpcoming | boolean | false | Drop releases whose moment has already passed. Always on in nextRelease |
onlyNew | boolean | false | Write only entries that were absent or dated differently in earlier runs of the same filter set. Entries already delivered do not count towards maxItems, and entries not written (cut by maxItems, your cost limit or the timeout) are not remembered, so the next run returns them |
includeProductDescription | boolean | false | Add productDescriptionHtml and productDescriptionText (the institute's own survey description, Portuguese) |
sortOrder | string | soonest | soonest = earliest release moment first; latest = newest first (use it on a history window) |
maxItems | integer | 50 | 1–1000 rows |
fields | string[] | all | Keep only these output fields, in this order |
Filters combine with AND. indicators and releaseTypes are choice fields: they take exactly the short codes listed below, and any other value (a typo, a Portuguese title, a numeric product id) is rejected by the input validation before the run starts. For everything outside the code table, use query — the run never quietly widens to the whole calendar.
Reference
Modes
| Mode | What one run returns | Requests |
|---|---|---|
calendar | Every release inside the date window that passes the filters, sorted by sortOrder, cut at maxItems | One per selected indicator (one for the whole calendar when none is selected), plus a page more when the window is larger than 100 entries |
nextRelease | One row per selected indicator: the earliest release whose moment is still ahead, or a row with found: false when nothing is scheduled yet | One per indicator |
Indicator codes
The calendar is organised by statistical product. These 18 products are the recurring releases markets watch; the English names are ours, the Portuguese titles are the source's.
| Code | Indicator | Portuguese product | Product id |
|---|---|---|---|
ipca | Consumer price index, headline | Índice Nacional de Preços ao Consumidor Amplo | 9256 |
ipca-15 | Consumer price index, mid-month preview | Índice Nacional de Preços ao Consumidor Amplo 15 | 9260 |
ipca-e | Consumer price index, special series | Índice Nacional de Preços ao Consumidor Amplo Especial | 9262 |
inpc | Consumer price index for lower incomes | Índice Nacional de Preços ao Consumidor | 9258 |
ipp | Producer price index, mining and manufacturing | Índice de Preços ao Produtor - Indústrias Extrativas e de Transformação | 9282 |
gdp | GDP, quarterly national accounts | Sistema de Contas Nacionais Trimestrais | 9300 |
unemployment-monthly | Labour force survey, monthly | Pesquisa Nacional por Amostra de Domicílios Contínua Mensal | 9171 |
unemployment-quarterly | Labour force survey, quarterly | Pesquisa Nacional por Amostra de Domicílios Contínua Trimestral | 9173 |
retail | Retail trade survey, monthly | Pesquisa Mensal de Comércio | 9227 |
services | Services survey, monthly | Pesquisa Mensal de Serviços | 9229 |
industry | Industrial output, Brazil | Pesquisa Industrial Mensal: Produção Física - Brasil | 9294 |
industry-regional | Industrial output, by region | Pesquisa Industrial Mensal: Produção Física - Regional | 9296 |
construction-costs | Construction costs and indices | Sistema Nacional de Pesquisa de Custos e Índices da Construção Civil | 9270 |
crops | Agricultural production survey, monthly | Levantamento Sistemático da Produção Agrícola | 9201 |
harvest-forecast | Harvest forecast | Prognóstico da Safra | 19068 |
livestock | Livestock, milk, leather and eggs, quarterly | Pesquisas Trimestrais do Abate de Animais, do Leite, do Couro e da Produção de Ovos de Galinha | 19111 |
livestock-first | Livestock, milk, leather and eggs, first results | Pesquisas Trimestrais do Abate de Animais… (first results; same title as 19111, slug primeiros-resultados-…) | 19120 |
stocks | Stocks survey | Pesquisa de Estoques | 9199 |
Only the short code is accepted in indicators. The English name and the Portuguese title are what query searches.
A product that has no code. The calendar also carries annual surveys, census products, atlases and one-off studies. Reach them with query (search in Portuguese — "censo", "contas nacionais", "atlas"); each row carries the product's productId for your own bookkeeping.
Release types
| Code | Source label | What it is |
|---|---|---|
indicators | Divulgação de Indicadores | The recurring monthly and quarterly numbers — everything a market calendar needs |
studies | Estudos e Pesquisas Estruturais e Especiais | Annual surveys, structural studies, special publications |
geosciences | Produtos da Geociências | Maps, relief, territory and environment products |
experimental | Investigações Experimentais | Experimental statistics the institute publishes outside its regular programme |
Dates and the window
dateFrom/dateTo beat withinDays: set both to read a fixed window, leave both empty to read from today up to withinDays ahead. Set only dateFrom and the window ends withinDays later; set only dateTo and it starts at 2015-01-01, the first date the archive carries. The service prints each moment in UTC: releaseAtUtc is that moment, and releaseDate / releaseLocalTime are the same moment on the Brasília clock (UTC−03:00), so IPCA at 09:00 in Brasília reads releaseLocalTime: "09:00:00", releaseAtUtc: "…T12:00:00.000Z".
Examples
Inflation dates for the eight months ahead — the FX and rates desk view.
{ "mode": "calendar", "indicators": ["ipca", "ipca-15", "inpc", "ipp"], "withinDays": 240, "maxItems": 20 }
When is the next one? — one row per indicator, nothing else.
{ "mode": "nextRelease", "indicators": ["ipca", "gdp", "unemployment-monthly", "unemployment-quarterly"] }
GDP release-date history of 2025 — for event studies and backtests.
{ "mode": "calendar", "indicators": ["gdp"], "dateFrom": "2025-01-01", "dateTo": "2025-12-31", "sortOrder": "latest", "maxItems": 20 }
Everything scheduled in the next 30 days, recurring numbers only.
{ "mode": "calendar", "releaseTypes": ["indicators"], "withinDays": 30, "maxItems": 25 }
The activity block for the year ahead — retail, services and industrial output.
{ "mode": "calendar", "indicators": ["retail", "services", "industry", "industry-regional"], "withinDays": 365, "maxItems": 25 }
Keyword search over the whole calendar — the way to reach products without a short code.
{ "mode": "calendar", "query": "pesquisa", "withinDays": 365, "maxItems": 25 }
A daily watch task — only what changed since yesterday, four fields per row.
{ "mode": "calendar", "indicators": ["ipca", "gdp"], "withinDays": 365, "onlyNew": true, "fields": ["indicatorCode", "releaseDate", "releaseAtUtc", "referencePeriod"] }
Output
One row per release. A real row from the cloud run of the first example above (run MyRDcBJXvwAc2CsTm, 16 rows in 5 seconds):
{"releaseId": 4305,"title": "Índice de Preços ao Produtor - Indústrias Extrativas e de Transformação","titleEn": "Producer price index, mining and manufacturing","indicatorCode": "ipp","productId": 9282,"productName": "Índice de Preços ao Produtor - Indústrias Extrativas e de Transformação","productAlias": "indice-de-precos-ao-produtor-industrias-extrativas-e-de-transformacao","releaseTypeCode": "indicators","releaseType": "Divulgação de Indicadores","releaseDate": "2026-09-30","releaseLocalTime": "09:00:00","releaseAtUtc": "2026-09-30T12:00:00.000Z","daysUntil": 2,"isUpcoming": true,"referenceStart": "2026-08","referenceEnd": null,"referencePeriod": "August 2026","description": null,"sourceLink": null,"url": "https://servicodados.ibge.gov.br/api/v3/calendario/9282","fetchedAt": "2026-09-28T21:05:24.970Z"}
| Field | Type | Meaning |
|---|---|---|
releaseId | number | The source's own id of the calendar entry |
title | string | Release title as published, Portuguese |
titleEn | string | null | Our English name of the indicator; null for products outside the code table |
indicatorCode | string | null | Short code from the indicator table; null outside it |
productId | number | The statistical product the release belongs to |
productName | string | Product name of the source, internal suffix removed |
productAlias | string | The source's slug for the product |
releaseTypeCode | string | indicators, studies, geosciences or experimental |
releaseType | string | The type as the source labels it, Portuguese |
releaseDate | string | Release date, YYYY-MM-DD, Brasília calendar |
releaseLocalTime | string | null | Scheduled hour on the Brasília clock (09:00:00); null when the entry carries none |
releaseAtUtc | string | The same moment in UTC, ISO 8601 |
daysUntil | number | Whole days from today to the release date; negative for past releases |
isUpcoming | boolean | true while the moment is still ahead |
referenceStart | string | null | First reference month, YYYY-MM (or YYYY when the source gives a year only) |
referenceEnd | string | null | Last reference month of a quarter or season; null for a single month |
referencePeriod | string | null | The same period as a phrase, e.g. October–December 2026 |
description | string | null | Free text of the entry; the source usually leaves it empty |
sourceLink | string | null | Release page the source links to, when it publishes one |
url | string | sourceLink when set, otherwise the calendar endpoint of the product |
fetchedAt | string | Fetch time, ISO 8601 UTC |
productDescriptionHtml / productDescriptionText | string | null | Only with includeProductDescription |
requestedIndicator, found | string, boolean | nextRelease only: the code asked for, and whether anything is scheduled |
Dataset views: Release calendar (the full picture), Indicator schedule (code, product, dates, reference period), Next release per indicator (the watch-list view).
The run also writes a SUMMARY record to the key-value store: window, filters, requests made, entries read, rows written, the last date the institute has published (coverageEnd) and any indicator with nothing scheduled.
Use it from code / agents
curl -X POST "https://api.apify.com/v2/acts/yadroo~ibge-release-calendar/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"nextRelease","indicators":["ipca","gdp"]}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('yadroo/ibge-release-calendar').call({mode: 'calendar',indicators: ['ipca', 'ipca-15'],withinDays: 180,fields: ['indicatorCode', 'releaseDate', 'releaseAtUtc', 'referencePeriod'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("yadroo/ibge-release-calendar").call(run_input={"mode": "calendar", "indicators": ["gdp"], "dateFrom": "2025-01-01", "dateTo": "2025-12-31"})items = client.dataset(run["defaultDatasetId"]).list_items().items
MCP: add https://mcp.apify.com to Claude / Cursor / any MCP client and call the yadroo/ibge-release-calendar tool with the same JSON input — for example "call yadroo/ibge-release-calendar with mode nextRelease and indicators ipca, gdp, and tell me which lands first".
Pricing
Pay per event: $0.001 per run start + $0.002 per dataset row. Every run is charged the start event, also a run that returns nothing.
| Run | Rows | Cost |
|---|---|---|
Next release for 4 indicators (nextRelease) | 4 | $0.001 + 4 × $0.002 = $0.009 |
| Price block for the eight months ahead | 20 | $0.001 + 20 × $0.002 = $0.041 |
| A quarter of the whole calendar | 60 | $0.001 + 60 × $0.002 = $0.121 |
A daily watch task with onlyNew usually writes 0–3 rows, so it costs the start event plus what actually changed.
Limits & FAQ
- Dates, not figures. The calendar says when something is published. It carries no actual, forecast or previous value and no market consensus — for the numbers themselves, read the institute's statistics after the release.
- How far the schedule reaches. Back to 2015 in the archive, and forward as far as the institute has published — roughly two quarters for the recurring indicators, less for irregular products. The run logs
coverageEnd, the last date it actually saw, so a window that reaches beyond it is visible rather than silently empty. - Language. Titles, product names and release types come from the source in Portuguese. Only the 18 mapped products get an English name (
titleEn);querysearches Portuguese and English text and ignores accents, so"indice"findsÍndice. - The clock time. The feed prints the scheduled publication moment in UTC;
releaseAtUtckeeps it, andreleaseLocalTimeshows it on the Brasília clock. The recurring indicator releases are printed at 12:00 or 13:00 UTC, i.e. 09:00 or 10:00 in Brasília. Until 02.10.2026 the actor read the printed time as Brasília time and placed every release 3 hours late; a scheduledonlyNewtask returns its entries once more after that correction, with the right moments. Brazil abolished summer time in 2019, so Brasília times of rows dated before that may be an hour off. - Schedules move. A release can be postponed; that is exactly what
onlyNewreports, because the memory key includes the moment. - Rate limits and blocks. The calendar service answers without a key and without throttling in normal use; requests retry with backoff on 429 and 5xx. The public portal of the institute refuses automated requests, so the actor never fetches it — a release page appears in
urlonly when the calendar itself links to it, and otherwiseurlpoints at the calendar endpoint of the product, which always resolves. - The source's certificate chain. Since 06.10.2026 the calendar host answers the TLS handshake for its own name with its certificate alone, without the intermediate authority that signed it, so a strict client cannot verify it and every request fails with "unable to verify the first certificate" (the sweep of 15.10.2026 saw it on all runs). The actor ships that one missing intermediate — read from the same server, which still sends the full chain under its other names — and adds it only after checking that an already trusted root signed it and that it is inside its validity window; certificate verification itself stays on. The run logs which certificate it supplied. If the institute replaces the certificate with one from another authority before fixing the chain, runs fail again until the actor is updated.
- Empty is never silent. An unknown indicator code is refused by the input validation before the run starts, with the list of valid codes; an indicator with nothing scheduled comes back as a
found: falserow innextReleaseand is listed in the run status andSUMMARYincalendarmode. - Your cost limit and the run timeout. The run reads your maximum cost per run before it starts, writes only the rows that limit pays for and then stops with the status "Stopped at your spending limit: N rows delivered". It also stops starting new requests shortly before the run timeout, saves what it has read and says so in the status ("Stopped before the run timeout: N rows saved"). In both cases
SUMMARYholdsstoppedByanddelivered. - Cost of a wide window. One request returns 100 entries. A window with more than that costs one request per extra page, read from the end your
sortOrderasks for, and stops as soon asmaxItemsrows are in.
Made by Yadroo. Sibling actors: bls-release-calendar, ons-release-calendar, statcan-release-calendar, fed-fomc-calendar, world-bank-indicators.