# Leilão Imóvel Scraper — Brazil Property Auctions (Caixa) (`haketa/leilaoimovel-scraper`) Actor

Scrape Brazilian real-estate auctions from Leilao Imovel: Caixa direct-sale, judicial and extrajudicial foreclosures from 800+ auctioneers and banks. Get price, appraised value, discount %, closing date, address, CEP, auction type and bank by state. No login or API key. Export JSON, CSV, Excel.

- **URL**: https://apify.com/haketa/leilaoimovel-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Leilão Imóvel Scraper 🇧🇷🏠⚖️

Extract **property auctions from all over Brazil** — foreclosures, judicial and extrajudicial auctions, bank repossessions and **Caixa** direct sales — from **Leilão Imóvel**, which aggregates 800+ auctioneers and banks in one place. Scrape by state and export clean JSON, CSV or Excel with **price, appraised value, discount %, closing date, full address, CEP, auction type and bank.**

Perfect for **real-estate investors hunting below-market deals, foreclosure research, buy-to-flip sourcing, market analysis and property data products.**

***

### 🔑 What this scraper does

- 🗺️ **Scrape by state (UF)** — São Paulo, Rio de Janeiro, Minas Gerais and every other Brazilian state.
- 💰 **Price + appraised value** — the current auction price *and* the official appraised value, side by side.
- 🔻 **Discount %** — how far below appraisal each property is priced (the key number for deal-hunters).
- ⏰ **Closing date & time** — when the auction ends, so you never miss a bid.
- 📍 **Location** — full street address, neighbourhood, city, state and CEP (ZIP).
- ⚖️ **Auction type** — judicial, extrajudicial, Caixa direct sale, online sale and more.
- 🏦 **Bank / seller** — Caixa, Banco do Brasil, Bradesco, Itaú, Santander, BTG and others.
- 🏡 **Property basics** — type (house, apartment, land…), bedrooms and parking spaces.
- 📄 **Official documents** — a direct link to the Caixa property record (matrícula/edital) where available.

No login, no cookies to paste, no API key. Choose a state, press start, export.

***

### 📋 Example output

```json
{
  "id": "2839979",
  "url": "https://www.leilaoimovel.com.br/imovel/sp/lins/residencial-cond-res-duque-de-caixa-3-quartos-2-vagas-na-garagem-area-de-servico-2-wc-imovel-caixa-economica-federal-cef-2839979-1444418612229-venda-direta-caixa",
  "propertyType": "casa",
  "auctionType": "venda-direta-caixa",
  "bank": "Caixa Econômica Federal",
  "uf": "SP",
  "city": "Lins",
  "state": "SAO PAULO",
  "address": "AVENIDA DUQUE DE CAXIAS,N. 126 CS 01, CENTRO",
  "cep": "16400-115",
  "priceNow": 286791.44,
  "priceOld": 450000.00,
  "discountPct": 36,
  "bedrooms": 3,
  "parkingSpaces": 2,
  "closingDate": "15/09/2026 18:00",
  "closingDateISO": "2026-09-15T18:00:00-03:00",
  "categories": ["Financiamento", "Venda Online"],
  "imageUrl": "https://image.leilaoimovel.com.br/images/79/casa-caixa-em-lins-sp-2839979-imovel-2839979-...-m.webp",
  "matriculaPdfUrl": "https://venda-imoveis.caixa.gov.br/editais/matricula/SP/1444418612229.pdf",
  "scrapedAt": "2026-09-14T10:00:00.000Z"
}
```

That single record says it all: a 3-bedroom house in Lins/SP, appraised at **R$ 450,000**, on sale for **R$ 286,791 — a 36% discount** — closing 15 Sep, sold directly by Caixa, with a link to the official property record.

***

### 🗂️ Fields you get

| Field | Description |
|---|---|
| `id` | Property ID on Leilão Imóvel |
| `url` | Link to the property detail page |
| `propertyType` | House, apartment, land, commercial, etc. |
| `auctionType` | `judicial`, `extrajudicial`, `venda-direta-caixa`, `venda-online-caixa`, … |
| `bank` | Selling bank / institution (Caixa, Bradesco, Itaú, Santander…); empty for judicial court auctions, which have no bank seller |
| `uf` | State code (SP, RJ, MG…) |
| `city` | City name |
| `state` | Full state name |
| `address` | Street address and neighbourhood |
| `cep` | Postal code (ZIP), where published |
| `priceNow` | Current auction / sale price (R$) |
| `priceOld` | Official appraised value (R$), where published |
| `discountPct` | Discount vs. appraised value (%) |
| `bedrooms` | Number of bedrooms, where stated |
| `parkingSpaces` | Number of parking spaces, where stated |
| `closingDate` | Auction closing date & time (as shown) |
| `closingDateISO` | Closing date in ISO 8601 |
| `categories` | Tags such as Financiamento, FGTS, Venda Online |
| `imageUrl` | Cover photo |
| `matriculaPdfUrl` | Direct link to the official Caixa property record (PDF), for Caixa lots |
| `scrapedAt` | Scrape timestamp |

> Price, discount, address, closing date and auction type come on every listing. **Bank** is filled for Caixa and bank-specific auctions but is empty for judicial court sales (which have no bank seller). Appraised value, bedrooms, parking and CEP are included when the site states them; otherwise the field is `null`.

***

### 🚀 How to use

1. Click **Try for free**.
2. Enter one or more **state codes** in **States** — e.g. `sp`, `rj`, `mg`.
3. (Optional) Paste **advanced filter URLs** to target a property type, auction type or bank (see below).
4. Set **Max Items** and **Max Pages per List**, then click **Start**.
5. Export as **JSON, CSV, Excel, HTML, RSS**, or pull via the **Apify API**.

***

### 📝 Example inputs

#### 1. All auctions in São Paulo state

```json
{ "states": ["sp"], "maxItems": 500 }
```

#### 2. Several states at once

```json
{
  "states": ["sp", "rj", "mg"],
  "maxItems": 3000,
  "maxPagesPerList": 50
}
```

#### 3. Only houses (advanced filter URL)

```json
{ "startUrls": ["https://www.leilaoimovel.com.br/leilao-de-imoveis-tipo/casa"], "maxItems": 500 }
```

#### 4. Only judicial auctions

```json
{ "startUrls": ["https://www.leilaoimovel.com.br/leilao/judicial"], "maxItems": 500 }
```

#### 5. Caixa properties in a specific state

```json
{ "startUrls": ["https://www.leilaoimovel.com.br/caixa/imoveis-caixa-em-sp"], "maxItems": 500 }
```

#### 6. Properties from a specific bank

```json
{ "startUrls": ["https://www.leilaoimovel.com.br/banco_leilao_de_imoveis/bradesco"], "maxItems": 500 }
```

> **Tip:** browse the site, apply any filters you like, copy the URL from your address bar, and paste it into **Start URLs**. The scraper follows that filter and paginates through every result page.

***

### 💡 Popular use cases

#### 🔻 Find below-market deals

Sort by `discountPct` to instantly surface the properties priced furthest below their appraised value — the bread and butter of auction investing.

#### 🏗️ Buy-to-flip sourcing

Pull every house/apartment in your target cities with price, appraised value and discount, then filter for the margins that make a flip worthwhile.

#### ⚖️ Foreclosure & judicial research

Track judicial and extrajudicial auctions across states, with closing dates and links to the official property records.

#### 🏦 Bank & Caixa portfolio monitoring

Watch new Caixa, Bradesco, Itaú or Santander listings as they appear, by state or bank, and feed them into your pipeline.

#### 📊 Real-estate market analysis

Aggregate auction prices vs. appraised values by city and state to map discount trends and distressed-inventory volumes.

#### 🤖 AI, LLM & data products

Feed clean, structured Brazilian auction data into your own models, dashboards, alerts or property products.

***

### 👥 Who uses this

- **Real-estate investors & flippers** hunting properties priced below appraisal.
- **Buyer's agents & brokers** sourcing auction inventory for clients.
- **Analysts & researchers** studying foreclosure and distressed-property trends.
- **Proptech & data teams** enriching real-estate databases and building alerts.
- **Developers & AI builders** who need Brazilian auction data via API.

***

### 🎛️ Options

- **States (UF)** — one or more Brazilian state codes; each is scraped across its result pages.
- **Start URLs** — optional advanced filter URLs (type, auction type, bank, Caixa-by-state).
- **Max Items** — cap total properties (`0` = unlimited).
- **Max Pages per List** — pages per state/list (`0` = all available; about 19 properties per page).
- **Proxy** — Apify Proxy is enabled by default and just works.

***

### ❓ FAQ

**Do I need an account or API key?**
No. Pick a state and run — no login, no cookies, no key.

**What is the difference between the auction types?**

- **Venda direta Caixa** — Caixa sells the property directly, often below appraisal.
- **Judicial** — a court-ordered auction (debt/legal proceedings).
- **Extrajudicial** — a bank repossession sold out of court.
- **Venda online** — an online-only sale process.

**What does `discountPct` mean?**
It is how far the current price sits below the official appraised value (`priceOld`). A `discountPct` of 36 means the property is priced 36% under appraisal.

**Which states can I scrape?**
Any Brazilian state by its two-letter code: `sp`, `rj`, `mg`, `ba`, `pr`, `sc`, `rs`, `go`, `pe`, `ce`, and so on.

**How many properties can I get?**
As many as each state/list has — often thousands per state. Use `maxItems` and `maxPagesPerList` to control volume, or set them to `0` for everything.

**Can I filter by property type, bank or auction type?**
Yes — apply the filter on the website, copy the URL, and paste it into **Start URLs**. See the examples above.

**Do I get the auctioneer's phone number?**
No. Contacting the auctioneer on the source site happens through a redirect/lead form, so a direct phone number isn't part of the public listing. This scraper returns the public property data (price, discount, location, dates, documents) rather than private contact details.

**Is there a link to the official documents?**
For Caixa lots, yes — `matriculaPdfUrl` points to the official Caixa property record (matrícula/edital) PDF.

**What export formats are supported?**
JSON, CSV, Excel, HTML table, RSS, and the Apify API. Connect to Make, Zapier, Google Sheets, Slack, webhooks or an MCP server.

**Is the data structured and clean?**
Yes. Each property is a flat, typed JSON object, de-duplicated by ID, with prices parsed to numbers and dates normalised to ISO.

***

### 🔌 Integrations

- Export to **JSON, CSV, Excel, HTML, RSS**.
- Pull via the **Apify API** or client libraries (JavaScript, Python).
- Connect to **Make, Zapier, Google Sheets, Slack, webhooks** and more.
- Use from an **MCP server** in your AI agent / LLM workflow.
- Schedule recurring runs with the **Apify Scheduler** to catch new auctions daily.

***

### ⚖️ Legal & responsible use

This scraper collects **publicly available** auction listing information only — the same data any visitor can see on the website without logging in. It does not access private messages, user accounts, or anything behind authentication.

You are responsible for how you use the collected data. Please:

- Respect the source website's Terms of Service and all applicable laws.
- Use any personal or company data lawfully and only for legitimate purposes.
- Always verify prices, dates and conditions in the official auction notice (edital) before bidding — auction terms are legally binding.
- Avoid excessive request rates and scrape responsibly.

This tool is provided for lawful purposes such as market research, investment analysis and business intelligence. It is not affiliated with, endorsed by, or connected to Leilão Imóvel, Caixa Econômica Federal, or any auctioneer or bank.

# Actor input Schema

## `states` (type: `array`):

Brazilian state codes to scrape, e.g. sp, rj, mg, ba, pr, sc, rs. Each state is scraped across its auction result pages.

## `startUrls` (type: `array`):

Optional. Paste any leilaoimovel.com.br listing URL to use its filters — by property type (/leilao-de-imoveis-tipo/casa), auction type (/leilao/judicial), bank (/banco\_leilao\_de\_imoveis/bradesco) or Caixa by state (/caixa/imoveis-caixa-em-sp). Added on top of States.

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

Maximum number of properties to collect across all lists. 0 = unlimited.

## `maxPagesPerList` (type: `integer`):

How many result pages to scrape per state/list (each page has about 19 properties). 0 = all available pages.

## `proxyConfiguration` (type: `object`):

Datacenter proxy works out of the box; residential-BR is used automatically as a fallback when a page is challenged.

## Actor input object example

```json
{
  "states": [
    "sp"
  ],
  "startUrls": [],
  "maxItems": 200,
  "maxPagesPerList": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Open to view and export all scraped auction listings (JSON, CSV, Excel).

# 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 = {
    "states": [
        "sp"
    ],
    "startUrls": [],
    "maxItems": 200,
    "maxPagesPerList": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/leilaoimovel-scraper").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 = {
    "states": ["sp"],
    "startUrls": [],
    "maxItems": 200,
    "maxPagesPerList": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/leilaoimovel-scraper").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 '{
  "states": [
    "sp"
  ],
  "startUrls": [],
  "maxItems": 200,
  "maxPagesPerList": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/leilaoimovel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/leilaoimovel-scraper"
        }
    }
}
```

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/l2FoPDaV0bletAbAq/builds/u6BCkUrpPSDAS2cFe/openapi.json
