# Leilões de Falência e Recuperação Judicial (`kman-br/leiloes-falencia`) Actor

Editais de leilão em processos de falência e recuperação judicial de empresas (PJ), direto do DJEN/Comunica do CNJ. Filtros por tribunal, período, origem, categoria do bem e valor. Cada registro traz processo CNJ, vara, link da fonte oficial, data de coleta e status.

- **URL**: https://apify.com/kman-br/leiloes-falencia.md
- **Developed by:** [Kman](https://apify.com/kman-br) (community)
- **Categories:** Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 lote retornados

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Leilões de Falência e Recuperação Judicial (Brasil)

**Português** · [English below](#english)

Encontra editais de leilão de bens de **empresas em falência ou recuperação judicial** publicados no diário da Justiça e devolve cada **lote** como uma linha estruturada: categoria do bem, município/UF (quando consta), valor de avaliação, lance mínimo, datas da 1ª e 2ª praça, CNPJ e razão social da empresa, processo CNJ e vara, leiloeiro e link da fonte.

### Fonte oficial e escopo

- **Fonte:** API pública do CNJ, **DJEN / Comunica** (`comunicaapi.pje.jus.br`). Só consultas de leitura (GET), em ritmo baixo e com identificação do Actor.
- **Escopo:** apenas processos de **falência** e **recuperação judicial** de **pessoa jurídica**. Execuções, insolvência civil e devedores pessoas físicas são descartados.
- **Tribunal:** o padrão é o **TJMG** (validado, com editais de praça futura nos últimos 60 dias); o **TJSP** também foi validado e continua disponível (`"tribunais": ["TJSP"]`). Outros tribunais podem ser informados, mas o texto das publicações varia e o Actor avisa que não foram validados.
- O Actor **não acessa sites de leiloeiros nem agregadores** e **não guarda PDF de edital**: devolve só campos extraídos e o link da fonte.

### O que o Actor entrega

Um item por lote. Campos principais:

| Campo | Descrição |
|---|---|
| `status` | `ok` (lote separado com data da 1ª praça, valor e descrição, e com pelo menos uma praça na data do run ou depois), `informativo` (lote completo, mas todas as praças já passaram) ou `parcial` (falta algum desses dados) |
| `lote_id` | Identificador estável: `<id da publicação>-<nº do lote>` |
| `tipo_processo` | `falencia` ou `recuperacao_judicial` |
| `categoria` | `imovel`, `veiculo`, `maquina`, `estoque` ou `outros` |
| `descricao` | Trecho curto do lote (até 200 caracteres), com CPF mascarado, nomes de pessoa trocados por `***` (inclusive após executado, réu, requerido, sócio, administrador judicial e leiloeiro; cidades, tribunais, empresas com marcador e marcas/modelos de veículo comuns, como FIAT UNO ou VW WORKER, ficam) e Renavam, placa, chassi e matrícula de imóvel mascarados (sobram só os 2 últimos caracteres, ex.: `PLACA ***34`) |
| `municipio`, `municipio_origem`, `uf` | Município do bem quando consta no lote (`municipio_origem: "lote"`) ou na seção "Localização dos bens" do edital (`"localizacao_bens"`; só cidade e UF, nunca endereço); se o edital lista várias cidades sem indicar o lote, fica `null` com o aviso `localizacao_bens_ambigua`; senão, o da comarca/foro da vara do processo (`"comarca"`, com o aviso `municipio_por_comarca`; **não é necessariamente onde está o bem**); senão `null`. A UF só vem quando escrita no texto |
| `valor_avaliacao`, `lance_minimo`, `desconto_pct` | Valores em R$ quando identificados |
| `data_1a_praca`, `data_2a_praca` | AAAA-MM-DD |
| `devedor_cnpj`, `devedor_razao_social` | Empresa em falência/RJ, quando consta no texto |
| `leiloeiro_nome`, `leiloeiro_matricula`, `leiloeiro_site`, `leiloeiro_validado` | Nome e matrícula só quando o leiloeiro é **empresa** com marcador explícito (LTDA, S.A., S/A, EIRELI, ME, EPP). Leiloeiro pessoa física: nome e matrícula saem `null` (warning `leiloeiro_pessoa_fisica_omitido`) e `leiloeiro_site` também sai `null` (o endereço costuma ter o nome da pessoa); o site só é mantido para leiloeiro empresa. `leiloeiro_validado` é sempre `false` nesta versão |
| `processo_cnj`, `tribunal`, `vara`, `classe_processual` | Dados do processo |
| `edital_url`, `source_url` | Link da publicação no diário e consulta à API do CNJ que a reproduz |
| `retrieved_at`, `source_name`, `warnings`, `error_message` | Data da coleta, fonte, campos não identificados/cautelas e mensagem de erro |

Campo não encontrado no texto vem `null` com um aviso em `warnings` (por exemplo `valor_avaliacao_nao_identificado`). Nunca é inventado.

#### Exemplo (resumido)

```json
{
  "status": "ok",
  "lote_id": "719019458-6",
  "tipo_processo": "falencia",
  "categoria": "veiculo",
  "descricao": "LOTE 06 - CARRETA VOLVO VM 330 ANO 2021/2022 ... AVALIAÇÃO: R$375,000.00 ...",
  "municipio": "São Paulo",
  "municipio_origem": "comarca",
  "uf": null,
  "valor_avaliacao": 375000,
  "data_1a_praca": "2026-10-01",
  "data_2a_praca": "2026-10-07",
  "devedor_cnpj": "15407217000198",
  "devedor_razao_social": "PUJANTE TRANSPORTES LTDA",
  "leiloeiro_matricula": null,
  "leiloeiro_site": null,
  "leiloeiro_validado": false,
  "tribunal": "TJSP",
  "source_url": "https://comunicaapi.pje.jus.br/api/v1/comunicacao?...",
  "warnings": ["municipio_por_comarca", "uf_nao_identificado", "leiloeiro_pessoa_fisica_omitido", "leiloeiro_nao_validado"]
}
```

### Input

| Campo | Padrão | Descrição |
|---|---|---|
| `tribunais` | `["TJMG"]` | Siglas dos tribunais. |
| `origem` | `ambos` | `falencia`, `recuperacao_judicial` ou `ambos`. |
| `categorias` | todas | `imovel`, `veiculo`, `maquina`, `estoque`, `outros`. |
| `diasAtras` | `60` | Janela de publicação, contada de hoje (ou de `dataFim`). Sem datas e sem resultado, o Actor tenta uma vez com 90 dias. |
| `dataInicio`, `dataFim` | | AAAA-MM-DD. Máximo de 180 dias. |
| `valorMax` | | Teto de avaliação em R$ (lotes sem valor identificado permanecem). |
| `apenasEditais` | `true` | Só publicações com data de leilão/praça **e** (lote ou valor). Decisões que apenas citam o leilão são descartadas e só contadas no resumo. Com `false`, elas entram como `parcial`. |
| `somenteMeioEdital` | `true` | Consulta só publicações marcadas como **Edital** no DJEN (filtro `meio=E` da API), o que reduz muito o volume baixado. Com `false`, inclui também intimações do Diário, onde às vezes aparecem lotes com praça já realizada. |
| `proxyResidencialBR` | `true` | A API do CNJ recusa IPs de fora do Brasil (como os da Apify), por isso o padrão usa o Apify Proxy residencial com saída no Brasil; o tráfego de proxy é cobrado pela Apify na sua conta. Desligue (`false`) só se rodar a partir de um IP brasileiro. |
| `maxItems` | `50` | Teto de lotes devolvidos. |
| `somenteNovidades` | `false` | Devolve só lotes novos ou alterados desde o último run com os mesmos filtros. |

Run sem input: TJMG, últimos 60 dias, falência e RJ, só editais, até 50 lotes (cerca de 1 minuto).

#### `somenteNovidades` (uso agendado)

Com `true`, o Actor guarda no seu *key-value store* (`leiloes-falencia-estado`) apenas ids de lote e um hash, sem texto. Um segundo run com os mesmos filtros devolve **0 itens** (status `sem_novidades` no resumo) e custa só as consultas à fonte. Mudou qualquer campo de um lote? Ele volta como novidade.

### Cobrança

Cobrança por resultado, **somente para itens com `status: "ok"`**, ou seja, lotes com praça futura. Itens `informativo` (praças já realizadas), `parcial`, registros informativos (`sem_resultado`, `fonte_indisponivel`, `erro`) e runs sem novidades **não são cobrados**. Se o teto de gasto do usuário for atingido, o Actor para.

### Resumo do run

O registro `RESUMO` do key-value store traz: publicações lidas, itens por status, descartes por motivo (inclui `nao_edital`), consultas feitas, falhas e avisos. Falha da fonte nunca vira dataset vazio silencioso: gera registro com `status` e mensagem, e o run falha se nada foi entregue.

### Limites

- Os dados vêm de texto livre de publicações do diário; extração por regras pode errar ou deixar campos vazios. **Confira sempre o edital.**
- Muitas publicações de falência/RJ são decisões que apenas citam o leilão. Com `apenasEditais=true` o volume é pequeno (no TJSP, da ordem de uma dezena de lotes em 60 dias), e `ok` é exigente de propósito.
- O link do TJSP aponta para a página inicial do diário; a prova verificável é `source_url` (consulta pública por processo e dia) junto com o número CNJ.
- Se o município vier da comarca da vara (`municipio_origem: "comarca"`), confirme a localização do bem no edital. A UF só aparece quando escrita no texto; não é deduzida do tribunal.
- A matrícula do leiloeiro (só de empresas) é lida do texto e **não é validada** em Junta Comercial ou tribunal. O site só é devolvido para leiloeiro empresa.
- Respeitamos o limite da API pública do CNJ (mínimo de 1,2 s entre consultas); runs maiores demoram.

### Aviso importante

Este Actor é uma ferramenta de **busca e organização de informação pública**. **Não é assessoria jurídica** nem recomendação de investimento. Antes de qualquer lance, **confira o edital completo, a matrícula/documentação do bem, as condições de venda e o andamento do processo** nos canais oficiais.

### LGPD e remoção

O Actor trata apenas processos de pessoas jurídicas e **não devolve nomes ou CPF de pessoas físicas**: CPF no texto vira `***.***.***-**`; Renavam, placa de veículo (antiga e Mercosul), chassi/VIN e matrícula de imóvel viram `***` + os 2 últimos caracteres (ex.: `Renavam ***91`), pois permitem chegar ao dono do bem; texto livre é cortado, partes, advogados e destinatários nunca são copiados e nenhum PDF é armazenado. A omissão de nomes é feita por regras e pode ser imperfeita; se você identificar dado pessoal na saída ou quiser pedir remoção, abra uma issue na aba **Issues** da página deste Actor na Apify informando o `lote_id`.

***

<a id="english"></a>

## Brazil Bankruptcy & Judicial Recovery Auctions

Finds court auction notices for assets of **companies in bankruptcy (falência) or judicial recovery (recuperação judicial)** published in the Brazilian official gazette, and returns each **lot** as a structured row: asset category, city/state (when stated), appraisal value, minimum bid, first and second auction dates, company tax ID (CNPJ) and name, CNJ case number and court, auctioneer and source link.

### Official source and scope

- **Source:** the public API of Brazil's National Council of Justice (CNJ), **DJEN / Comunica**. Read-only GET requests, at a low rate, with an identified User-Agent.
- **Scope:** only **bankruptcy** and **judicial recovery** cases of **legal entities (companies)**. Civil insolvency, enforcement against individuals and personal debtors are discarded.
- **Court:** the default is **TJMG** (Minas Gerais), validated and with upcoming-auction notices in the last 60 days; **TJSP** (São Paulo) is also validated and still available (`"tribunais": ["TJSP"]`). Other courts can be requested but are flagged as not validated.
- The Actor **does not scrape auctioneer sites or aggregators** and **does not store notice PDFs**: it returns extracted fields and the source link only.

### Output

One item per lot (fields listed in the table above; the field names are in Portuguese). Missing fields are `null` with a matching entry in `warnings`; nothing is invented. `status` is `ok` (separated lot with first auction date, a value and a description, and at least one auction date on or after the run date), `informativo` (complete lot, but all auction dates have passed) or `parcial` (some of these are missing).

### Input

`tribunais` (default `["TJMG"]`; `["TJSP"]` also validated), `origem` (`falencia` / `recuperacao_judicial` / `ambos`), `categorias`, `diasAtras` (default 60; if the default window returns nothing, one retry with 90 days), `dataInicio` / `dataFim`, `valorMax`, `maxItems` (default 50), **`apenasEditais`** (default `true`: keep only notices with an auction date **and** a lot or value; court decisions that merely mention an auction are dropped and only counted in the run summary) and **`somenteNovidades`** (default `false`: return only new or changed lots since the last run with the same filters; a second identical run returns 0 items), **`somenteMeioEdital`** (default `true`: query only publications flagged as Edital in DJEN, API filter `meio=E`, which cuts the download size sharply; `false` also includes gazette summons) and **`proxyResidencialBR`** (default `true`: the CNJ API rejects non-Brazilian IPs such as Apify's, so the default uses Apify residential proxy with a Brazilian exit, billed by Apify to your account; set `false` only when running from a Brazilian IP).

An empty input runs TJMG, last 60 days, bankruptcy and judicial recovery, notices only, up to 50 lots (about 1 minute).

### Pricing

Pay-per-result, **only for items with `status: "ok"`**, i.e. lots with an upcoming auction. `informativo` items (past auctions), `parcial` items, informational records and runs with no news are not charged.

### Limits

Data comes from free text in gazette publications; rule-based extraction can miss or misread fields, so **always check the original notice**. Volume with `apenasEditais=true` is small by design. The city comes from the lot, from the notice's asset-location section (city and state only, never the address) or, as a fallback, from the court. If `municipio_origem` is `"comarca"`, the city is the court's, not necessarily where the asset is; the state is only filled when written in the text. The auctioneer's name and registration are returned only when the auctioneer is a **company** with an explicit marker (LTDA, S.A., S/A, EIRELI, ME, EPP); for an individual both are `null` (warning `leiloeiro_pessoa_fisica_omitido`) and `leiloeiro_site` is `null` too; the website is kept only for a company auctioneer. The registration is **not validated**. The TJSP link points to the gazette home page; use `source_url` plus the CNJ case number to verify.

### Disclaimer

This Actor searches and organizes public information. It is **not legal advice** or investment advice. Before bidding, **check the full notice, the asset's registration/documents, the sale conditions and the case status** with the official channels.

### Privacy (LGPD) and takedown

Only company cases are processed. **No names or CPF numbers of individuals are returned**: CPFs are masked as `***.***.***-**`; vehicle registration (Renavam), license plates (old and Mercosul format), chassis/VIN and property registry numbers (matrícula) are masked to `***` plus the last 2 characters (e.g. `Renavam ***91`), since they can identify the owner; names of individuals in the description (including after executado, réu, requerido, sócio, administrador judicial and leiloeiro) become `***`, while cities, courts, companies with a marker and common vehicle brands/models (e.g. FIAT UNO, VW WORKER) are kept; free text is truncated, parties/lawyers/recipients are never copied and no PDF is stored. Name removal is rule-based and may be imperfect. To report personal data in the output or request removal, open an issue in the **Issues** tab of this Actor's Apify page with the `lote_id`.

# Actor input Schema

## `tribunais` (type: `array`):

Siglas dos tribunais (ex.: TJMG, TJSP). Padrão TJMG, que tem editais com praça futura na janela padrão. TJSP e TJMG foram validados; outros tribunais funcionam com aviso, pois o texto das publicações pode ter outro formato.

## `origem` (type: `string`):

Tipo do processo: falência, recuperação judicial ou ambos (padrão). Só empresas (pessoa jurídica).

## `categorias` (type: `array`):

Tipos de bem a devolver. Vazio = todos. A categoria é inferida por palavras do texto do edital.

## `diasAtras` (type: `integer`):

Quantos dias para trás buscar, contando da data final (ou de hoje). Padrão 60 (no TJMG, 17 lotes com praça futura em 60 dias, medido em 13/10/2026). Ignorado se a data inicial for informada. Sem datas e sem resultado, o Actor tenta uma vez com 90 dias.

## `dataInicio` (type: `string`):

AAAA-MM-DD, data de publicação no diário. Máximo de 180 dias até a data final.

## `dataFim` (type: `string`):

AAAA-MM-DD, data de publicação no diário. Padrão: hoje (horário de Brasília).

## `valorMax` (type: `integer`):

Teto do valor de avaliação em R$. Só exclui lotes com valor identificado acima do teto; lotes sem valor identificado permanecem.

## `apenasEditais` (type: `boolean`):

Ligado (padrão): só devolve publicações que têm data de leilão/praça E (lote ou valor), isto é, editais de verdade; decisões que apenas citam o leilão são descartadas e só contadas no resumo do run. Desligado: inclui também essas publicações como "parcial" (não cobradas).

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

Máximo de lotes devolvidos (e, portanto, cobrados). O Actor para ao atingir o teto.

## `somenteNovidades` (type: `boolean`):

Checagem barata para uso agendado: devolve só lotes ainda não entregues (ou que mudaram) desde o último run com os mesmos filtros; o segundo run igual grava 0 itens. O estado (só ids e hashes, sem texto) fica num key-value store nomeado da sua conta.

## `intervaloMs` (type: `integer`):

Mínimo 1000. Respeita a API pública do CNJ.

## `proxyResidencialBR` (type: `boolean`):

Ligado por padrão, porque a API do CNJ recusa IPs de fora do Brasil (como os da Apify). Usa o Apify Proxy residencial com saída no Brasil (grupo RESIDENTIAL, país BR). O tráfego de proxy é cobrado pela Apify na sua conta; desligue só se rodar o Actor a partir de um IP brasileiro.

## `somenteMeioEdital` (type: `boolean`):

Ligado (padrão): consulta só publicações marcadas como Edital no DJEN (filtro meio=E da API), o que reduz muito o volume baixado. Desligado: inclui também intimações do Diário, onde às vezes aparecem lotes com praça já realizada.

## Actor input object example

```json
{
  "tribunais": [
    "TJMG"
  ],
  "origem": "ambos",
  "diasAtras": 60,
  "apenasEditais": true,
  "maxItems": 50,
  "somenteNovidades": false,
  "intervaloMs": 1200,
  "proxyResidencialBR": true,
  "somenteMeioEdital": true
}
```

# Actor output Schema

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

Itens do dataset padrão.

## `resumo` (type: `string`):

Estatísticas do run: comunicações lidas, itens por status, descartes e falhas.

# 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 = {
    "tribunais": [
        "TJMG"
    ],
    "diasAtras": 60
};

// Run the Actor and wait for it to finish
const run = await client.actor("kman-br/leiloes-falencia").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 = {
    "tribunais": ["TJMG"],
    "diasAtras": 60,
}

# Run the Actor and wait for it to finish
run = client.actor("kman-br/leiloes-falencia").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 '{
  "tribunais": [
    "TJMG"
  ],
  "diasAtras": 60
}' |
apify call kman-br/leiloes-falencia --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kman-br/leiloes-falencia"
        }
    }
}
```

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/dsdZ9m5O4ERsrwRrL/builds/GtBoCykgY0wu0Vgwq/openapi.json
