We Scraped 60K Rows of Closed Deals on Zolo in Just 2 Days
The client came to us with a narrow, repeating request: every home on Zolo.ca that switched to "Sold" in the previous 24 hours, with the full record behind each of those sales. Not a one-off export, not a sample of the market - a dataset rebuilt and handed over again the next day, and the day after that. That request became almost 22 months of daily delivery, from September 2024 until the project closed at the end of June 2026.
Sources: zolo.ca
Coverage: Ontario listings for sale, sold and delisted, with the focus on homes marked "Sold"; full property details and the listing brokerage
Frequency: daily, weekends included, September 2024 to June 2026
Volume: about 57,000 records in the first two days, almost 50,000 of them sold properties; after that, a daily file of new and changed listings
Delivery: a daily file, first by email and from late September 2024 in the client's AWS S3 bucket, due by 7:00 a.m. Eastern time
Setup and launch: 2 working days
A moving 24-hour window is a different job than a catalog dump
Most scraping briefs are about inventory: take what is there, deliver it, done. This one was about change. The value sat in the transition - a property that was on the market and is now closed - so the scraper was not judged by how much of the site it could read, but by whether it captured that window cleanly on every single run. A day that got skipped was a permanent hole in the client's history, because running twice tomorrow does not bring yesterday back.
That shaped how the pipeline was built. After the first full collection, each day's file carried only what had changed: new listings, plus earlier ones whose status or details had been updated. The run went every day, weekends included, and had to be ready inside the day, unattended.
The sold section is open to registered users only
The public side of Zolo.ca is one thing; the sold archive is another. That part of the site is reachable only for signed-in users, so a scraper without a valid session sees nothing worth collecting there. We registered our own accounts and handled that access on our side. The client did not have to provide accounts, maintain logins, or think about how the section is reached - from their point of view, the data simply showed up. When a login change on the site broke one run in November 2025, the file still went out before that day's deadline.
Property and realtor come off the same page, in one pass
Every field in the dataset was read from the listing page itself: the property record and the listing brokerage together. Sourcing agent information separately would mean stitching two datasets together by name and trusting the match; taking both from the page that already connects them removes that guesswork. Each row left our pipeline with the sale and the brokerage behind it already joined.
The client also had their own vocabulary. Zolo shows home types such as condo townhouse or condo apartment, while the client's system expected seven fixed categories, from condo and townhouse to single-family home and lot, and three statuses: for sale, pending and recently sold. We mapped every listing into those values before delivery.
Daily Zolo files in the client's S3, due by 7 a.m. Eastern
The first file went out by email on 6 September 2024. Within three weeks the client moved delivery to their own AWS S3 bucket, and each day's file then landed in the same folder by 7:00 a.m. Eastern time, a deadline written into the agreement. When the upload path changed in March 2026, the client flagged it and we moved that week's files back the same day. The scraper ran until 30 June 2026, almost 22 months in total.
Two working days to launch, then a daily Zolo diff until June 2026
Setup and launch took two working days. After that, a fresh file arrived every day with the sales and status changes since the last run, each record carrying its full listing detail and the listing brokerage. Nobody on their team had to open the source site, chase a login, or check whether today's run happened. The scraper was ours to run and ours to keep running; the client worked with the output.
For sold-price data from Canadian listings, see our Zolo scraper, read about real estate data scraping, or contact us.
Talk to us to find out how we can help you
Let us take your work with data to the next level and outrank your competitors.
How does it Work?
1. Make a request
You tell us which website(s) to scrape, what data to capture, how often to repeat etc.
2. Analysis
An expert analyzes the specs and proposes a lowest cost solution that fits your budget.
3. Work in progress
We configure, deploy and maintain jobs in our cloud to extract data with highest quality. Then we sample the data and send it to you for review.
4. You check the sample
If you are satisfied with the quality of the dataset sample, we finish the data collection and send you the final result.