# Brazil Economic Calendar: IBGE IPCA, GDP & Jobs Release Dates (`yadroo/ibge-release-calendar`) Actor

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.

- **URL**: https://apify.com/yadroo/ibge-release-calendar.md
- **Developed by:** [Samat Makatov](https://apify.com/yadroo) (community)
- **Categories:** Business, News, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 calendar entry returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Brazil Economic Calendar: IBGE IPCA, GDP & Jobs Release Dates

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.

### 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; `withinDays` and `releaseTypes` decide 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, with `daysUntil` and `releaseAtUtc`, so a model never has to read a calendar page.
- **Event studies and backtests** — a fixed `dateFrom`/`dateTo` window 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: true` writes 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](#modes) |
| `indicators` | string\[] | empty = every product | Short codes from the [indicator table](#indicator-codes), 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](#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. Used only when both dates are empty: today up to N days ahead |
| `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 the previous run of the same filter set |
| `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. A code you mistype is corrected when the intent is obvious (`ipca15` → `ipca-15`) and the correction is logged in the run status; a code nobody can map ends the run with an error instead of quietly returning 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 |

The code, the English name, the Portuguese title and the numeric product id are all accepted as input values.

**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"`), then read `productId` from the row; that id is accepted in `indicators` on the next run and turns the search into a single cheap request.

#### 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. Dates are the Brasília calendar dates the source prints; `releaseAtUtc` converts the printed moment from UTC−03:00.

### Examples

**Inflation dates for the eight months ahead** — the FX and rates desk view.

```json
{ "mode": "calendar", "indicators": ["ipca", "ipca-15", "inpc", "ipp"], "withinDays": 240, "maxItems": 20 }
```

**When is the next one?** — one row per indicator, nothing else.

```json
{ "mode": "nextRelease", "indicators": ["ipca", "gdp", "unemployment-monthly", "unemployment-quarterly"] }
```

**GDP release-date history of 2025** — for event studies and backtests.

```json
{ "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.**

```json
{ "mode": "calendar", "releaseTypes": ["indicators"], "withinDays": 30, "maxItems": 25 }
```

**The activity block for the year ahead** — retail, services and industrial output.

```json
{ "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.

```json
{ "mode": "calendar", "query": "pesquisa", "withinDays": 365, "maxItems": 25 }
```

**A daily watch task** — only what changed since yesterday, four fields per row.

```json
{ "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 `ZqKRp3Af1KnQw5Ywc`, 16 rows in 5 seconds):

```json
{
  "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": "12:00:00",
  "releaseAtUtc": "2026-09-30T15: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:03:23.447Z"
}
```

| 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](#indicator-codes); `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 as printed (`12: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

```bash
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"]}'
```

```js
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();
```

```python
from apify_client import ApifyClient
client = 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`); `query` searches Portuguese and English text and ignores accents, so `"indice"` finds `Índice`.
- **The clock time.** The feed prints a scheduled publication hour — we saw only 11:00, 12:00 and 13:00 — which we convert from UTC−03:00 into `releaseAtUtc`. Treat it as the institute's scheduled hour, not a market timestamp: trust `releaseDate` first. Brazil abolished summer time in 2019, so rows dated before that may be an hour off.
- **Schedules move.** A release can be postponed; that is exactly what `onlyNew` reports, 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 `url` only when the calendar itself links to it, and otherwise `url` points at the calendar endpoint of the product, which always resolves.
- **Empty is never silent.** An unknown indicator code ends the run with a message naming the valid codes; an indicator with nothing scheduled comes back as a `found: false` row in `nextRelease` and is listed in the run status and `SUMMARY` in `calendar` mode.
- **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 `sortOrder` asks for, and stops as soon as `maxItems` rows are in.

***

Made by **Yadroo**. Sibling actors: [bls-release-calendar](https://apify.com/yadroo/bls-release-calendar), [ons-release-calendar](https://apify.com/yadroo/ons-release-calendar), [statcan-release-calendar](https://apify.com/yadroo/statcan-release-calendar), [fed-fomc-calendar](https://apify.com/yadroo/fed-fomc-calendar), [world-bank-indicators](https://apify.com/yadroo/world-bank-indicators).

# Actor input Schema

## `mode` (type: `string`):

`calendar` walks the published schedule inside the date window and writes a row per release, filtered by the fields below. `nextRelease` answers the single question "when is the next one": one row for each indicator picked below, carrying the earliest date that has not passed yet, or `found: false` when the institute has not scheduled it yet. An indicator you select costs one request in both modes.

## `indicators` (type: `array`):

Pick the statistical products you follow, by short code. Each code is one product of the source, so the actor asks the calendar for exactly that product — fewer rows, fewer requests, no keyword guessing. Empty = the whole calendar of the window, including geoscience products and one-off studies. Required in `nextRelease`, optional in `calendar`. The full code table with the Portuguese product names is in README → Reference dictionaries.

## `query` (type: `string`):

Keep only releases whose Portuguese title, product name or English indicator name contains this text, case-insensitive, e.g. "pesquisa", "índice", "contas nacionais". This is how you reach the products that have no short code above — the source titles are Portuguese, so search in Portuguese for the widest hit. Empty = no keyword filter.

## `releaseTypes` (type: `array`):

Keep only these kinds of release. The recurring market movers (prices, GDP, labour force, retail, industry) are all `indicators`; the yearly surveys and reports are `studies`. In a 21-month window the source carried 284 indicator releases against 130 studies, 10 geoscience products and 1 experimental item, so this filter is what separates a trading calendar from a publication list. Empty = every type.

## `dateFrom` (type: `string`):

Earliest release date, YYYY-MM-DD. Set `dateFrom` and `dateTo` together to read a fixed window — the way to pull a release-date history, e.g. every consumer price index date of 2025. The archive starts in 2015; an earlier range returns nothing and the run says so. Leave both empty to use `withinDays`.

## `dateTo` (type: `string`):

Latest release date, YYYY-MM-DD. How far ahead the calendar reaches is whatever the institute has already published — about two quarters for the recurring indicators. A window beyond that returns the rows that exist, and the run reports the last date it saw.

## `withinDays` (type: `integer`):

Used only when `dateFrom` and `dateTo` are both empty: releases from today up to N days ahead. 30 gives the month ahead, 90 the quarter, 365 everything the institute has published for the year.

## `onlyUpcoming` (type: `boolean`):

Drop releases whose moment has already passed, also inside an explicit date range. `nextRelease` always applies it. Useful when a range that starts today would otherwise include this morning's release.

## `onlyNew` (type: `boolean`):

Remember the release id and its date in this actor's key-value store and write only entries that were absent or dated differently on the previous run. A postponed release counts as new, so a daily task emits exactly the changes to the schedule — the reason to watch a statistics calendar at all. The first run writes everything it finds.

## `includeProductDescription` (type: `boolean`):

Add `productDescriptionHtml` and `productDescriptionText` — the institute's own description of the survey behind the release (method, periodicity, geographic coverage), in Portuguese. It arrives in the same response, so it costs no extra request; it is off by default because it makes rows several kilobytes larger.

## `sortOrder` (type: `string`):

Order of the rows before *Max rows* cuts the list. `latest` first is the one to use on a history window, so the newest dates survive the cut.

## `maxItems` (type: `integer`):

Stop after this many rows. The whole calendar holds about 20 releases a month, so a quarter ahead is roughly 60 rows and a full year of one monthly indicator is 12.

## `fields` (type: `array`):

Keep only these fields, in this order, e.g. \["indicatorCode", "releaseDate", "releaseAtUtc", "referencePeriod"]. Empty = every field of the mode.

## Actor input object example

```json
{
  "mode": "calendar",
  "indicators": [
    "ipca",
    "ipca-15",
    "gdp"
  ],
  "withinDays": 90,
  "onlyUpcoming": false,
  "onlyNew": false,
  "includeProductDescription": false,
  "sortOrder": "soonest",
  "maxItems": 50
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "indicators": [
        "ipca",
        "ipca-15",
        "gdp"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("yadroo/ibge-release-calendar").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "indicators": [
        "ipca",
        "ipca-15",
        "gdp",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("yadroo/ibge-release-calendar").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "indicators": [
    "ipca",
    "ipca-15",
    "gdp"
  ]
}' |
apify call yadroo/ibge-release-calendar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yadroo/ibge-release-calendar"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ULmkovF4nZ897RBaW/builds/ZYETpGkdjqhtHdXli/openapi.json
