Brazilian Property Auction Scraper
Pricing
from $0.87 / 1,000 properties
Brazilian Property Auction Scraper
Brazilian property auction scraper: judicial and extrajudicial auctions from auction houses and banks. One row per property with minimum bid, appraisal, discount, both praças with dates, auction house, occupancy, court case and edital PDF links. $0.90 per 1,000 properties.
Pricing
from $0.87 / 1,000 properties
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Pick auction types, states, cities or banks and get one row per property up for auction in Brazil: the minimum bid, the appraisal and discount, both praças with their own dates and minimum bids, the auction house, occupancy, the court case and links to the matrícula and edital PDFs.
The catch is a ceiling. The portal this reads never serves more than 969 results for one search, so a wide query has to be split by state or city to reach the rest. And the seller's own notes are never returned, because they name debtors, so only the structured facts are kept.
| Input | Auction types, states, cities, banks or filters, or pasted property pages |
| Output | One row per property: minimum bid, appraisal, discount, both praças, auction house, occupancy, court case, matrícula and edital links |
| Ceiling | 969 properties per search, 5,000 per run |
| Account needed | None |
| Price | $0.90 per 1,000 properties on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 5,500 |
🔍 What Brazilian Property Auction Scraper does
It reads one portal that carries the private auction houses and the bank portfolios in a single index. On 19 September 2026 that was about 31,000 live listings, 13,700 of them judicial or extrajudicial and about 18,700 that were not Caixa stock. For each result it opens the property page, where the rounds, the auction house, the areas and the PDFs live.
rounds is the field the rest exists for. A judicial auction runs in two praças: the first at or near the appraisal, the second a couple of weeks later at a fraction of it. minimumBidBrl at the top of the row is the price live right now, and rounds shows what each praça asks and when it opens.
The 969 ceiling is the portal's own. It serves 19 results a page and nothing past page 51, whatever total it prints at the top. Name states and each one becomes its own search with its own 969, so naming all 27 reaches far more than one national query. Name cities and they are searched together, with the state filter dropped because the cities already pin the place.
Auction notices name people: the debtor, sometimes the creditor, sometimes an owner mid-sentence. The run reads the seller's notes for the case number, court, district and registry number, then throws the prose away. Every string that does go out is checked against a personal-data pattern list first, and a field that trips it is dropped with a warning in the log.
Field names match the Caixa Imóveis Leilão Scraper wherever the meaning is the same, so the two datasets stack.
📋 What data you get from each auction property
| What you get | Field |
|---|---|
| The portal's property id and the link | propertyId, listingUrl |
| State, city, neighbourhood, street and the address as published | state, city, neighbourhood, street, addressFull |
| Property type, auction type and the auction house | propertyType, auctionCategory, auctionHouse |
| Occupancy | occupancyStatus |
| Appraisal, the minimum bid live now, and the discount | appraisedValueBrl, minimumBidBrl, discountPercent |
| Each praça with its own date and minimum bid | rounds |
| The next round's date and when the listing closes | auctionDate, auctionEndsAt |
| Areas, bedrooms and garage spaces | totalAreaSqm, privateAreaSqm, bedrooms, garageSpaces |
| Payment terms | paymentTerms |
| Court case number, court and district | courtCaseNumber, court, judicialDistrict |
| Matrícula and ofício | registrationNumber, registryOffice |
| Matrícula and edital PDF links | deedPdfUrl, noticePdfUrl |
| Photos, up to 30 | photoUrls |
| When it appeared, whether it is marked new, and how exact the map position is | listedAt, isNewListing, geoPrecision |
▶️ How to scrape Brazilian property auctions
- Open Brazilian Property Auction Scraper and click Try for free.
- Keep or change the Auction type, and put state codes into States (UF), one per line.
- Narrow it with Property type, Selling institution or the price and discount fields if you like.
- Set Maximum properties, which starts at 50, and pick an Order. The order decides which properties you get when there are more than your maximum.
- Click Start, then export the dataset as CSV, JSON or Excel.
💰 How much does it cost to scrape Brazilian property auctions?
$0.90 per 1,000 properties on the Free plan, with the property pages or without, a little less on paid plans. On the free plan, the $5 Apify gives you each month covers about 5,500 properties.
Not charged: the sample row, every diagnostic row, properties your own price or discount limits drop, and a property already delivered earlier in the same run. A run that cannot reach the portal writes a free row saying so.
📥 What you give it
{"auctionCategories": ["judicial", "extrajudicial"],"states": ["SP", "RJ"],"propertyTypes": ["apartamento", "casa"],"minDiscountPercent": 40,"maxPriceBrl": 400000,"sortBy": "discount-desc","maxItems": 200}
| Field | Default | What it is |
|---|---|---|
auctionCategories | every type | judicial, extrajudicial, venda-direta, comprei-pgfn, particular, outro, and the Caixa types caixa-leilao-sfi, caixa-licitacao-aberta, caixa-venda-online and caixa-compra-direta. The form starts with judicial and extrajudicial ticked. |
states | the whole country | Two-letter codes such as SP or MG. Each state is searched on its own. |
cities | no city filter | Municipality names. Case and accents do not matter. Setting cities drops the state filter. |
propertyTypes | every type | apartamento, casa, terreno, area-rural, comercial, galpao, area-industrial, garagem, agencia or outros. |
sellerInstitutions | every seller | caixa, banco-do-brasil, santander, itau, bradesco, banco-inter, brb, btg, bv, safra, sicoob, porto-seguro, embracon, emgea, assefaz or reverts. Setting one leaves out court auctions with no bank behind them. |
keyword | none | Free text matched against the listing, such as a condominium name, a street or "praia". |
minPriceBrl, maxPriceBrl | 0, no bound | Floor and ceiling on the minimum bid, in reais. |
minDiscountPercent | 0 | Only properties at least this far under the appraisal. |
paymentOptions | any | financiamento, parcelamento or fgts. Most of this stock is cash only. |
auctionBefore | no cut-off | Only auctions closing on or before this date, written YYYY-MM-DD. A date in any other format is ignored. |
sortBy | the portal's order | price-asc, price-desc, discount-desc, discount-asc, listed-desc, listed-asc, auction-asc or auction-desc. It decides which properties you get when a search finds more than maxItems. |
includeAuctionDetails | on | Open each property page. Off keeps the price, appraisal, discount, address, type and closing date, and loses the rounds, auction house, areas and PDFs. Same price either way. |
maxItems | 50 | Properties across the whole run, 1 to 5,000. |
propertyUrls | none | Property pages from the portal, pasted to read them again. A bare property code is not enough; paste the full URL. |
proxyConfiguration | the run's own connection | Servers of your own listed here are used as given. |
Every field is optional, but a run needs at least one filter or one pasted page. With none, it returns a free sample row.
📤 What you get back
A real judicial listing, with one photo kept:
{"propertyId": "3020681","listingUrl": "https://www.leilaoimovel.com.br/imovel/sp/sao-paulo/residencial-apartamento-desocupado-de-92-83-m-no-condominio-parque-marajoara-sol-jardim-marajoara-sao-paulo-desocupado-imovel-3020681","state": "SP","city": "São Paulo","neighbourhood": "Jardim Marajoara","street": "Av. Interlagos","addressFull": "Avenida Interlagos, 492- Apartamento nº 12","propertyType": "Apartamento","auctionCategory": "Judicial","auctionHouse": "Máximo Leilões","occupancyStatus": "Desocupado","appraisedValueBrl": 720592.07,"minimumBidBrl": 360296.03,"discountPercent": 50,"rounds": [{ "round": 1, "startsAt": "2026-09-17T16:00:00", "minimumBidBrl": 720592.07 },{ "round": 2, "startsAt": "2026-10-07T16:00:00", "minimumBidBrl": 360296.03 }],"auctionDate": "2026-10-07T16:00:00","auctionEndsAt": "2026-10-07T16:00:00","totalAreaSqm": null,"privateAreaSqm": 92.83,"bedrooms": null,"garageSpaces": 1,"paymentTerms": "Somente à vista","courtCaseNumber": "4000053-82.2015.8.26.0002","court": "1ª Vara Cível do Foro Regional de Santo Amaro","judicialDistrict": "Capital","registrationNumber": "216.352 - 216.453","registryOffice": null,"deedPdfUrl": "https://d24y7usudqxuz0.cloudfront.net/bens/0000000100/matricula-vaga-6a6bb212e3299.pdf","noticePdfUrl": "https://d24y7usudqxuz0.cloudfront.net/bens/0000000100/edital-6a70f62388f40.pdf","photoUrls": ["https://image.leilaoimovel.com.br/images/81/apartamento-em-sao-paulo-sp-3020681-imovel-3020681-906ac8f5b686be18a249c2898868d3b9b7fb4166-g.webp"],"listedAt": "2026-09-17","geoPrecision": "Localização Precisa","isNewListing": true,"scrapedAt": "2026-09-20T04:26:15.154Z"}
| Field | How to read it |
|---|---|
auctionCategory | Judicial, Extrajudicial, Venda Direta, Comprei PGFN, Particular, Outro, or one of the Caixa types. |
appraisedValueBrl, minimumBidBrl, discountPercent | The appraisal, the minimum bid live now, and the portal's own discount figure. The discount can be there even when the appraisal is not. |
rounds | One entry per praça, each with round, startsAt and its own minimumBidBrl. |
auctionDate, auctionEndsAt | The next round still ahead, falling back to the closing date, and when the listing closes. |
occupancyStatus | Desocupado or Ocupado where the notice says so, otherwise null. |
registrationNumber, registryOffice | The matrícula and ofício, where the notice prints them. |
A field the notice does not state comes back null. It is never guessed. With includeAuctionDetails off, rounds is empty and the house, areas, case details and PDFs are null.
🧾 Reading the output
| Row | How to spot it | Charged |
|---|---|---|
| A property | a propertyId, and no _sample, _diagnostic or charged field | yes |
| The sample row | _sample: true, charged: false. Only when the run had no filter and no pasted page | no |
| A diagnostic row | _diagnostic: true, charged: false, and an errorCode | no |
Real properties carry no charged field, so drop every row where charged is false and you are left with the properties.
errorCode | What happened |
|---|---|
NO_RESULTS | Nothing matches those filters in that state or those cities. |
CITY_NOT_LISTED | The portal does not list a city you named. |
UNKNOWN_STATE | Not a Brazilian state code. |
UNKNOWN_OPTION | A value that is not one of the choices for that field. The row names the field. |
NOT_A_PROPERTY_URL | A pasted value that is not a property page on the portal. |
NEED_FULL_URL | A bare property code. The portal needs the full page URL. |
NOT_FOUND | The property page is gone, usually because it sold or was withdrawn. |
NO_USABLE_EXIT, REACH_FAILED | The portal could not be reached from this run. Try again in a few minutes. |
SEARCH_FAILED, FETCH_FAILED, SHORT_PAYLOAD, DETAIL_FAILED, LOOKUP_FAILED, CITY_LIST_FAILED | One search, page or property did not come back. The rest of the run carries on. |
TIME_LIMIT | The run got close to its time limit and stopped on its own. The properties delivered before that are complete and charged. Give the run more time, or ask for fewer properties, to get the rest. The run ends as failed only when the stop came before any property did. |
💡 What people use it for
- Hunting second praças: sort by
discount-descand readroundsfor the date the price drops. - Following one bank's repossessions across the country with
sellerInstitutions. - One view of the market, with these rows stacked on the Caixa scraper's under the same field names.
- A weekly list of court auctions in one comarca, with the case number on every row.
🚧 What it does not do
- More than 969 rows from one search. Split by state or city.
- Seller prose. There is no
descriptionfield, and there will not be one. - PDF contents. You get the matrícula and edital links; reading them is up to you.
- Live bids or bid history. It returns the listed minimum, not the current high bid.
- Full detail on every judicial listing.
bedroomsandtotalAreaSqmare oftennullthere, because the notice does not state them. - Every auction house. A house that does not list on the portal will not appear.
- Fixed dates. A property can be pulled, settled or rescheduled without notice, so treat a row as true at
scrapedAt. - Advice. An edital and a current matrícula decide what you are buying, not a row in a dataset.
- It is not an official tool of any platform or company named on this page. Dami's Studio is independent and is not affiliated with or endorsed by any of them.
🧭 Which Brazilian property scraper do you need?
| If you want | Use |
|---|---|
| Homes for sale and to rent on VivaReal and ZAP Imóveis, with fees | VivaReal & ZAP Imóveis Scraper |
| Rentals and sales on QuintoAndar, with the full monthly cost | QuintoAndar Scraper |
| Caixa's own repossessed properties, with both auction rounds | Caixa Imóveis Leilão Scraper |
| Judicial and extrajudicial auctions from auction houses and banks | This one |
| Classified ads on OLX Brazil, property included | OLX Brazil Scraper |
❓ Questions people ask
What is the difference between judicial and extrajudicial?
A judicial auction is ordered by a court inside a case, and the row carries the case number, court and district. An extrajudicial one is run by a creditor, usually a bank enforcing a mortgage, outside court.
What are 1ª and 2ª praça?
The two rounds. The first opens at or near the appraisal. If nobody bids, the second opens days or weeks later at a much lower minimum, which is where the big discounts come from.
How is discountPercent worked out?
It is the portal's own figure and is not recalculated here, so it matches what a buyer sees on the page.
How long does a run take?
On 20 September 2026, 100 São Paulo properties with their pages took 94 to 113 seconds. For the same 60 properties in Minas Gerais, the list-only setting took 23.5 seconds against 40.1 with pages.
Do I need an account or an API key?
No.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/leilao-imovel-scraper. Either way the run happens on your Apify account at the same price.
Is scraping property auctions legal?
The listings are public, but auction notices name people, which is why the prose is dropped and every outgoing string is checked for personal data. Court case numbers, courts and districts do come through, and Brazil's LGPD covers what you do with them, so have a reason for collecting them. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Include the run ID and the filters you used, or the property URL.