Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Brazilian Property Auction Scraper icon

Brazilian Property Auction Scraper

Scrape Brazilian property auctions: minimum bid, appraisal, discount, 1ª and 2ª praça dates, auction house, PDFs. Judicial and extrajudicial, all 27 states.

69 runs on Apify $0.0009 per property ($0.9 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust auctionCategories, states, cities (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export 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 forWhenPrice
Property returnedOne auction property returned in the dataset. Properties dropped by your filters, diagnostics 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

FieldWhat it doesType
auctionCategoriesWhich kind of auction to pull. Judicial auctions are ordered by a court; extrajudicial ones are run by a bank or creditor outside court. Leave empty for all of them. The four Caixa categories are included for completeness, but if Caixa stock is all you want, the dedicated Caixa actor reads it from Caixa directly and returns more of its paperwork.array
statesTwo-letter Brazilian state codes, one per line: SP, RJ, MG, BA and so on. Leave empty to search the whole country. Each state is searched as its own query, which is also how you get past the portal's result ceiling — see the README.array
citiesMunicipality names, one per line. Accents and case do not matter — "sao jose do rio preto" matches. When you set cities the state filter is dropped, because the cities already pin the location. A name the portal does not list is reported back rather than silently ignored.array
propertyTypesLeave empty for every type.array
sellerInstitutionsOnly properties being sold by these banks or funds. Leave empty for all sellers, including the court-ordered auctions that have no bank behind them.array
keywordFree text matched against the listing, for example a condominium name, a street or "praia". Leave empty to skip it.string
minPriceBrlFloor on the minimum bid, in reais. 0 means no floor.integer
maxPriceBrlCeiling on the minimum bid, in reais. 0 means no ceiling.integer
minDiscountPercentKeep only properties whose minimum bid is at least this far under the appraisal. 0 keeps everything.integer
paymentOptionsMost of this stock is cash only. Set this to see just the properties that accept financing, instalments or FGTS.array
auctionBeforeOnly auctions closing on or before this date, as YYYY-MM-DD. Leave empty for no cut-off.string
sortByWhich end of the list to take first. This matters when your search finds more than the run's limit: the order decides which properties you get.string
includeAuctionDetailsOn (recommended): opens every property's own page and returns the auction rounds with their dates and minimum bids, the auction house, the areas, occupancy, the registry and case references and links to the matrícula and edital PDFs. Off: reads the results list only — far faster, but you get no auction dates, no auction house, no PDFs and no areas. Both settings charge the same per property.boolean
maxItemsHard cap on properties returned across every state and filter in this run. You are charged per property returned.integer
propertyUrlsPaste property pages from the portal, one per line. Works on its own or alongside a search.array

What you get

A structured dataset — each result includes fields like:

citystateneighbourhoodpropertyTypeauctionCategoryminimumBidBrlappraisedValueBrldiscountPercentauctionDateauctionHouseoccupancyStatusprivateAreaSqmtotalAreaSqmbedroomsgarageSpacesaddressFullcourtCaseNumbernoticePdfUrldeedPdfUrllistingUrlpropertyId

Export 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 iconDeveloper & Research Tools

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.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

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.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

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.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

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.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

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.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

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.

2 use cases

See all Developer & Research Tools →

Brazilian Property Auction Scraper: judicial and extrajudicial auctions with both praças, bids and PDFs

Pick auction types, states, cities or banks and you 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 seller's own notes are never returned, because they name debtors, so only the structured facts are kept. 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.

InputAuction types, states, cities, banks or filters, or pasted property pages
OutputOne row per property
Ceiling969 properties per search, 5,000 per run
Account neededNone
Price$0.90 per 1,000 properties, flat on every plan

🔍 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 you give it

{
  "auctionCategories": ["judicial", "extrajudicial"],
  "states": ["SP", "RJ"],
  "propertyTypes": ["apartamento", "casa"],
  "minDiscountPercent": 40,
  "maxPriceBrl": 400000,
  "sortBy": "discount-desc",
  "maxItems": 200
}
FieldIf you leave it outWhat it is
auctionCategoriesevery typejudicial, 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.
statesthe whole countryTwo-letter codes such as SP or MG. Each state is searched on its own.
citiesno city filterMunicipality names. Case and accents do not matter. Setting cities drops the state filter.
propertyTypesevery typeapartamento, casa, terreno, area-rural, comercial, galpao, area-industrial, garagem, agencia or outros.
sellerInstitutionsevery sellercaixa, 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.
keywordnoneFree text matched against the listing, such as a condominium name, a street or "praia".
minPriceBrl, maxPriceBrl0, no boundFloor and ceiling on the minimum bid, in reais.
minDiscountPercent0Only properties at least this far under the appraisal.
paymentOptionsanyfinanciamento, parcelamento or fgts. Most of this stock is cash only.
auctionBeforeno cut-offOnly auctions closing on or before this date, written YYYY-MM-DD. A date in any other format is ignored.
sortBythe portal's orderprice-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.
includeAuctionDetailsonOpen 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.
maxItems50Properties across the whole run, 1 to 5,000.
propertyUrlsnoneProperty pages from the portal, pasted to read them again. A bare property code is not enough; paste the full URL.
proxyConfigurationthe run's own connectionLeave it as it is. The run sets up its own connection, and 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 from a real run, 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"
}
FieldWhat it holds
auctionCategoryJudicial, Extrajudicial, Venda Direta, Comprei PGFN, Particular, Outro, or one of the Caixa types.
auctionHouseThe firm running the sale.
appraisedValueBrl, minimumBidBrl, discountPercentThe appraisal, the minimum bid live now, and the portal's own discount figure. The discount can be there even when the appraisal is not.
roundsOne entry per praça, each with round, startsAt and its own minimumBidBrl.
auctionDate, auctionEndsAtThe next round still ahead, falling back to the closing date, and when the listing closes.
occupancyStatusDesocupado or Ocupado where the notice says so, otherwise null.
courtCaseNumber, court, judicialDistrictThe proceeding behind a judicial auction.
registrationNumber, registryOfficeThe matrícula and ofício, where the notice prints them.
deedPdfUrl, noticePdfUrlThe matrícula and the edital, as links.
photoUrlsListing photos, up to 30.
listedAt, isNewListing, geoPrecisionWhen it appeared, whether the portal marks it new, and how exact the map position is.

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

RowHow to spot itCharged
A propertya propertyId, and no _sample, _diagnostic or charged fieldyes
The sample row_sample: true, charged: false. Only when the run had no filter and no pasted pageno
A diagnostic row_diagnostic: true, charged: false, and an errorCodeno

Real properties carry no charged field, so drop every row where charged is false and you are left with the properties.

errorCodeWhat happened
NO_RESULTSNothing matches those filters in that state or those cities.
CITY_NOT_LISTEDThe portal does not list a city you named.
UNKNOWN_STATENot a Brazilian state code.
UNKNOWN_OPTIONA value that is not one of the choices for that field. The row names the field.
NOT_A_PROPERTY_URLA pasted value that is not a property page on the portal.
NEED_FULL_URLA bare property code. The portal needs the full page URL.
NOT_FOUNDThe property page is gone, usually because it sold or was withdrawn.
NO_USABLE_EXIT, REACH_FAILEDThe 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_FAILEDOne search, page or property did not come back. The rest of the run carries on.

▶️ How to run it

1. Open Brazilian Property Auction Scraper and click Try for free. 2. Keep or change the Auction type, and put state codes into States (UF), one per line. 3. Narrow it with Property type, Selling institution or the price and discount fields if you like. 4. 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. 5. Click Start, then export the dataset as CSV, JSON or Excel.

💰 How much does it cost?

$0.90 per 1,000 properties, flat on every Apify plan, with the property pages or without.

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 returns a free row saying so.

💡 What people use it for

  • Hunting second praças: sort by discount-desc and read rounds for 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 description field, 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. bedrooms and totalAreaSqm are often null there, 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.

🧭 Which Brazilian property scraper do you need?

If you wantUse
Judicial and extrajudicial auctions from auction houses and banksThis one
Caixa's own repossessed stock, with more of its paperworkCaixa Imóveis Leilão Scraper
Homes for sale and to rent on VivaReal and ZAP ImóveisVivaReal & ZAP Imóveis Scraper
Classified ads on OLX BrazilOLX 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.

Can I get every auction in Brazil in one run? Not from one query. Name all 27 states and each gets its own search, which raises the reachable total.

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.

🆘 If something breaks

Open the Issues tab on the actor page. Include the run ID and the filters you used, or the property URL.