Our work

Apartment listing-to-Excel collector

Opening each listing and copying the details by hand is replaced by a single run: choose the complexes you follow, press start, and listing details are collected automatically into two Excel files. It runs from one executable, with no Python installation.

Checking listings by complex

Before

Opening each listing one by one

After

Choose complexes, run once · results in Excel

Control screen of the delivered listing collector. The settings panel on the left has checkboxes for six target complexes and fields for the number of listings, minimum wait and maximum wait, with a “Collecting” button below. On the right are overall progress at 48%, the current step and listing progress at 6/20, with an “Open Excel folder” button beneath. At the bottom, the run log shows six time-stamped lines, one for each completed listing.

To protect client information, these screens recreate the same features with mock data.

Client
Licensed real estate agent
Industry
Real estate brokerage
Delivered
2025
Duration
2 weeks
Area
Workflow automation
  • Browser-based control screen
  • Single executable with no installation
  • Automatic token issuance
  • Adjustable request intervals
  • Progress display
  • Full expansion of raw data
  • Automatic Excel output

Background

Some brokers follow a fixed set of complexes. With six of them chosen, they need to keep track of how many listings are up, on what terms, and what has changed since yesterday.

What we found

Checking one listing means clicking it in the list, opening the details and copying the fields by hand. With six complexes, that is not six rounds but one round per listing. The next day, it starts over.

The problem

Collecting was not the hard part. Collecting all of it was. Requests sent in quick succession get cut off partway, and if a run cannot pick up where it stopped, that day’s data is only half complete.

What we built

  • Choose complexes and volume — Select any of the registered complexes and set how many listings to fetch, from 1 to 1,000
  • Adjustable request intervals — Set a minimum and maximum wait between listings (1~30 seconds each), and it pauses for a random time in that range. The default is 2~5 seconds. Pacing requests is what gets the run to the end
  • Progress on screen — Overall progress, the current step, the listing number and one log line per completed listing. In a long job, progress you cannot see looks the same as a stall
  • Stops after repeated failures — Collection stops when consecutive failures pass a set limit. That is better than filling the file with empty rows
  • Two Excel files — A summary sheet ready to read, and a table with every field of the raw data expanded. The summary sheet has a fixed set of 34 columns, with empty columns and duplicate rows removed. The expanded table’s column count depends on the listings collected (the two files in the delivery folder have 428 and 696)
  • No installation — One executable, no Python install and no command line. On launch it finds a free port and opens the browser automatically

Results

Choose the complexes and press the button. Listings are collected one by one, and the Excel files land in a folder when the run finishes. “Open Excel folder” on the screen opens it directly.

See more work built the same way under Web data collection.