Caixa Imóveis Leilão Scraper
Scrape Caixa's repossessed property listings across Brazil: minimum bid, appraisal, discount, auction dates, occupancy, edital and matrícula links.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
states,cities,saleMode(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0009 per property = $0.9 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Property returned | One auction property returned in the dataset. Diagnostic rows, properties dropped by your filters and the labelled sample row are not charged. | $0.0009 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
states | Two-letter Brazilian state codes, one per line: SP, RJ, MG, GO, BA and so on. Caixa holds stock in 26 of the 27 states on any given day. Leave empty only if you are pasting property pages below. | array |
cities | City names to narrow the search inside the states above, one per line. Accents and case do not matter — "sao jose do rio preto" matches. Caixa only lists cities that have property for sale today; if none of yours does, the run says so and names the cities that do. | array |
saleMode | Caixa sells the same repossessed stock four ways. Leilão SFI is the public auction with a first and second round. Licitação Aberta takes sealed competing offers on one date. Venda Online and Venda Direta Online are fixed-price sales that close on a deadline instead of a hammer. | string |
propertyType | Caixa's own three buckets. "Others" holds land, shops, sheds, rural plots and everything that is not a house or a flat. | string |
priceBand | Caixa's own bands, applied on its side before anything is fetched. For an exact ceiling use "Maximum price" further down instead. | string |
minBedrooms | Caixa records bedrooms only for houses and flats, so setting this drops land and commercial units. | string |
garageSpaces | Minimum parking spaces. | string |
acceptsFinancing | Most of this stock is cash-only. Set this to "Yes" to see just the properties Caixa will finance — on a typical day that is well under a tenth of a state's listings. | string |
minDiscountPercent | Keep only properties whose minimum bid is at least this far under Caixa's own appraisal. 0 keeps everything. Properties dropped here are not charged. | integer |
maxPriceBrl | Exact ceiling on the minimum bid, in reais. 0 means no ceiling. Properties dropped here are not charged. | integer |
includeAuctionDetails | On (recommended): opens every property's own page and returns the auction dates, the appraisal and discount, occupancy, the registry details, the accepted payment methods and links to the matrícula and edital PDFs. Off: reads the result list only — about ten times faster, but you get no auction dates, no PDFs, no occupancy, and appraisal and discount only on the fixed-price listings. | boolean |
maxItems | Hard cap on properties returned across every state and city in this run. You are charged per property returned. | integer |
propertyUrls | Paste Caixa property pages (https://venda-imoveis.caixa.gov.br/sistema/detalhe-imovel.asp?hdnimovel=8787704299058) or bare property numbers (878770429905-8), one per line. Works on its own or alongside a search. | array |
What you get
A structured dataset — each result includes fields like:
citystateneighbourhoodpropertyTypebedroomsminimumBidBrlappraisedValueBrldiscountPercentsaleModeauctionDateonlineSaleEndsAtoccupancyStatustotalAreaSqmaddressFullacceptsFinancingacceptsFgtsnoticePdfUrldeedPdfUrllistingUrlpropertyIdExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.
arXiv Scraper
Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.
Crossref Scholarly Works Scraper
Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.
Where this tool sits
- Categories
- Developer & Research Tools
Caixa Imóveis Leilão Scraper
Caixa Econômica Federal is the largest seller of repossessed property in Brazil. On any given day it has something like fifteen thousand houses, flats, plots and shops listed, spread across 26 of the 27 states, sold four different ways, with the good ones gone in a week.
The site will show you all of it. What it will not do is let you compare it. There is no export, no sort by discount, no "everything under R$ 150,000 in Goiás that takes financing". You click a state, click a city, click through ten cards at a time, and open each property to find out when the auction is and whether somebody is still living in it.
This actor does that clicking for you and hands back a table.
What you get
One row per property. Every field below comes off Caixa's own pages. Nothing is estimated, nothing is filled in from elsewhere.
Money
| Field | What it is |
|---|---|
appraisedValueBrl | Caixa's own valuation of the property |
minimumBidBrl | the least you can pay. On a Leilão SFI this is the first-round figure |
minimumBidSecondRoundBrl | the second-round figure, usually a long way below the first |
discountPercent | how far the minimum sits under the appraisal |
discountPercentSecondRound | the same for the second round |
When and how it sells
saleMode, auctionDate, secondAuctionDate, onlineSaleEndsAt, auctionNoticeNumber (the edital), itemNumber, auctioneer, auctioneerSite.
The property
propertyType, bedrooms, garageSpaces, totalAreaSqm, privateAreaSqm, landAreaSqm, description, city, neighbourhood, addressFull, postalCode, state, photoUrls.
The paperwork
registrationNumber (matrícula), judicialDistrict (comarca), registryOffice (ofício), municipalRegistration (inscrição imobiliária), negativeAuctionNote (averbação dos leilões negativos), occupancyStatus.
What you are allowed to pay with
paymentMethods as Caixa words it, plus acceptsFgts, acceptsFinancing, acceptsConsortium and cashOnly derived from it. Also condoFeeRule and propertyTaxRule: who picks up the arrears, which on an occupied flat with three years of unpaid condomínio is not a small question.
Links
listingUrl, deedPdfUrl (the matrícula), noticePdfUrl (the edital and its annexes), noticePublishedAt.
The four ways Caixa sells
You will see all four in the saleMode field, and they are not interchangeable.
- Leilão SFI - Edital Único. A public auction with two rounds on two dates. The first round
usually opens at the full appraisal, which is why so many rows show a 0% first-round discount; the second round is where the 30–50% cuts appear. Both dates and both minimums are in the row.
- Licitação Aberta. Competing offers on a single date, above a stated minimum. One date, one
minimum.
- Venda Online. A fixed price with a deadline. No hammer, no rounds.
onlineSaleEndsAtis when
it closes. This is the largest group by volume.
- Venda Direta Online. Direct purchase, also at a fixed price.
There is a fifth, *Exercício de Direito de Preferência*, which Caixa keeps in its filter list. It is almost always empty.
Input
{
"states": ["SP", "RJ"],
"cities": ["Campinas", "Niteroi"],
"saleMode": "leilao-sfi",
"propertyType": "apartamento",
"minBedrooms": "2",
"priceBand": "ate-100k",
"acceptsFinancing": "S",
"minDiscountPercent": 30,
"maxPriceBrl": 250000,
"includeAuctionDetails": true,
"maxItems": 200
}
Only states is really required, and you can drop even that if you paste specific properties into propertyUrls instead: either the full page URL or the bare property number off the listing.
City names are matched loosely: case and accents are ignored, so sao jose do rio preto finds SAO JOSE DO RIO PRETO. If a city you asked for has nothing for sale today, the run says so and names the cities in that state that do, rather than silently returning a short list.
minDiscountPercent and maxPriceBrl are applied after each listing is read, and anything they drop is not charged.
Two levels of detail
includeAuctionDetails is on by default and opens every property's own page. That is where the auction dates, the occupancy, the registry details, the payment rules and the two PDF links live. It costs the same per property either way.
Turn it off and the actor reads the result list only. Measured on a 120-property run: 21 seconds instead of 30. What you lose is real, though: no auction dates, no PDFs, no occupancy, no comarca or CEP, and the appraisal and discount only come through on the fixed-price listings, because Caixa's auction cards show the price alone. Use it when you want a fast inventory sweep and will open the interesting ones afterwards.
Sample row
{
"propertyId": "8787704299058",
"propertyNumber": "878770429905-8",
"state": "SP",
"city": "ITUPEVA",
"neighbourhood": "COND RES RESERVA MONT SERRAT",
"addressFull": "EST. MUN. VEREADOR WALDOMIRO FREGNHANI,N. 551 APTO. 01 BL 08 TIPO B, MONTE SERRAT - CEP: 13299-000, ITUPEVA - SAO PAULO",
"postalCode": "13299-000",
"propertyType": "Apartamento",
"occupancyStatus": "Ocupado",
"bedrooms": 2,
"garageSpaces": 1,
"totalAreaSqm": 105.42,
"privateAreaSqm": 45.91,
"appraisedValueBrl": 255000,
"minimumBidBrl": 255000,
"minimumBidSecondRoundBrl": 153000,
"discountPercent": 0,
"discountPercentSecondRound": 40,
"saleMode": "Leilão SFI",
"auctionNoticeNumber": "0048/0226 - CPA/RE",
"itemNumber": "473",
"auctioneer": "CIRLEI FREITAS BALBINO DA SILVA",
"auctionDate": "2026-10-14T10:00:00",
"secondAuctionDate": "2026-10-20T10:00:00",
"registrationNumber": "172088",
"judicialDistrict": "JUNDIAI-SP",
"registryOffice": "01",
"paymentMethods": ["Recursos próprios.", "Permite utilização de FGTS. Consulte condições e enquadramento."],
"acceptsFgts": true,
"acceptsFinancing": false,
"cashOnly": false,
"condoFeeRule": "Condomínio: Sob responsabilidade do comprador.",
"propertyTaxRule": "Tributos: Sob responsabilidade do comprador.",
"deedPdfUrl": "https://venda-imoveis.caixa.gov.br/editais/matricula/SP/8787704299058.pdf",
"noticePdfUrl": "https://venda-imoveis.caixa.gov.br/editais/EL00480226CPARE.PDF",
"listingUrl": "https://venda-imoveis.caixa.gov.br/sistema/detalhe-imovel.asp?hdnimovel=8787704299058"
}
That is a real row from a real run. Note the first-round minimum sitting at the full appraisal and the second round 40% below it. That pattern is the whole reason people watch this stock.
What this does not do
Read this part before you buy anything.
- It does not tell you whether the property is a good idea. It reports what Caixa published. The
matrícula and the edital are the documents that matter, and the links are in every row for exactly that reason. Occupied properties, properties with unpaid condomínio, and properties where eviction is the buyer's problem all look identical in a spreadsheet.
occupancyStatusneeds checking. Caixa still puts the value in the page but no longer shows it
to visitors. The actor reports what is there. Treat it as a hint and confirm it against the edital, because "Ocupado" versus "Desocupado" is the single biggest swing in what a lot is actually worth.
- Listings vanish without notice. Caixa removes a property the moment it sells or is pulled. An id
from last week's export can stop answering, and when that happens you get an uncharged diagnostic row saying so rather than a guess.
- Blank fields are usually blank at the source. Land and commercial units have no bedroom count.
Plenty of listings have no photo. Some descriptions are a single full stop. None of that is invented or filled in.
- Bedroom and garage filters quietly exclude land. Caixa only records those for houses and flats,
so asking for two bedrooms removes every terreno from the result.
- The two fixed-price sale types look identical on a property page. Venda Online and Venda Direta
Online carry no heading and the same rules link, so an unfiltered run reports both as Venda Online. Set saleMode if you need them told apart; then the label is exact.
- There is no square-metre filter. Caixa's own area filter does not behave consistently. One of
its bands returns the entire state, so it is not exposed here rather than offered and wrong. Filter on totalAreaSqm in your own sheet.
- It does not bid, watch or notify. It returns the state of the listings at the moment it runs.
Schedule it daily if you want to see what changed.
- It does not download the PDFs. You get the URLs; the files are large and most people only want
two or three of them.
- Prices are in reais, exactly as Caixa states them. No conversion.
A note on the numbers
discountPercent is Caixa's own figure where Caixa prints one, and is otherwise computed as (appraisal − minimum) ÷ appraisal. On a Leilão SFI, Caixa prints no discount line at all, so both round figures are computed the same way from the appraisal.
A first-round discount of 0% is normal and not a bug. It means the auction opens at the valuation.
Billing
You are charged once per property returned.
Free, every time: the sample row you get when the input is empty, every diagnostic row, and any property dropped by minDiscountPercent or maxPriceBrl. A run that finds nothing returns a diagnostic row explaining why and charges for no properties.
FAQ
How many properties does Caixa have listed? Measured on 19 September 2026: 15,739 across the country, with São Paulo at 2,132 and Rio de Janeiro at 4,554. Amapá had none at all. The total moves every day.
Does it cover the whole country? Yes. All 27 state codes are accepted, and the actor takes whichever of them currently hold stock.
Can I get only the heavily discounted ones? Set minDiscountPercent. Properties below your threshold are dropped and not charged. Bear in mind that on a Leilão SFI the discount you want is usually discountPercentSecondRound, not the first.
Does it need a login or a Caixa account? No. Everything it reads is public.
How current is the data? It reads the live listings at the moment the run starts, not a daily export, so a property added this morning is in the result.
Can I watch one property over time? Put its page URL or its property number in propertyUrls and run it on a schedule. The same row comes back each time with whatever has changed: new dates, a new minimum, or a diagnostic once it is gone.
Why do some rows have two auction dates and others have one? Sale type. Leilão SFI runs two rounds, Licitação Aberta runs one, and the online sales have a closing deadline in onlineSaleEndsAt instead of an auction date.
What is negativeAuctionNote? The averbação dos leilões negativos, Caixa's note on whether the failed-auction record has been registered against the title. You will see "Averbado", "Em tratamento" or "Não se aplica".
Can I filter by neighbourhood? Not on Caixa's side. Filter neighbourhood in your own sheet after the run.