How to Build a Wholesaler Lead List from Zillow
Wholesaler workflow: turn Zillow search filters into a dial-ready CSV — export, dedupe, prioritize, and import to your CRM or dialer in one repeatable pass.
This is the post-export workflow. The export guide covers getting the CSV out of Zillow. This one covers what to do with it: clean it, sort it, and get it into a dialer or CRM your team can actually work.
1. Define the list before you scrape
Decide what counts as a lead for this campaign:
- Geography: city, zip cluster, or map draw
- Price band: where you can assign or double-close
- Property signals: days on market, price cuts, auction, FSBO, or other filters Zillow exposes on the grid
- Contact goal: agent phone on listed deals, or owner fields from detail pages when you have Pro
Write the criteria down. Your VA or future you should be able to re-run the same search without guessing.
2. Build the Zillow search
Run the search on Zillow with those filters. Save it if you plan to refresh weekly.
One search per export batch. Mixing two metros in a single scrape makes deduplication and follow-up messy.
3. Export with the right tier
| Need | Tier |
|---|---|
| Quick test, under 100 rows, address + price only | Free |
| Full result set for a zip, agent phones, extra columns | Pro |
Use Scrape all when the market is wider than one results page. Free caps at 2 pages. Pro paginates further and can pull detail-page contacts when Zillow shows them.
Longer exports use built-in delays between pages (and between detail fetches on Pro) to reduce CAPTCHAs. A full Pro pull is not broken if it takes several minutes. Timing details are in the export guide.
Install and scrape steps: How to export Zillow search results to CSV. Pro pricing: Pricing.
4. Clean the CSV before CRM import
Raw exports work but are not CRM-ready:
- Dedupe by
zpid. The same listing can show up if you overlap searches. - Normalize addresses. Trim whitespace. Split city/state/zip if your CRM expects separate fields (Pro exports more address columns).
- Drop rows without a dial path. If agent phone is blank and you only cold-call numbers, filter early.
- Tag the batch. Add a column like
source_searchorpull_datein Sheets before import.
Google Sheets or Excel is enough here. A separate tool can wait until volume justifies it.
5. Prioritize who to contact first
Sort or filter by what fits your buy box:
- Highest days on market in your range
- Largest recent price drop
- Rows where contact fields are filled (Pro detail scrape)
Wholesaling is a sorting problem as much as a sourcing problem. The CSV is input to that sort.
6. Hand off to CRM or dialer
Import the cleaned file into your CRM, spreadsheet dialer, or SMS tool. Podio, REsimpli, and Salesforce are common targets for wholesaler teams; map the same RealtyScraper columns every batch so imports stay one-click.
Keep field mapping consistent from batch to batch so VAs are not remapping columns every week.
If a VA runs this, give them a one-page SOP: search URL, tier to use, required columns, and file naming (market-YYYY-MM-DD.csv).
When you need owner phones the export does not include, skip tracing is the usual next step after the dial list is built. RealtyScraper stops at what Zillow shows on the listing.
7. Refresh on a schedule
Markets move. Re-run the saved search weekly or after major filter changes. Compare new zpids against your CRM so you do not double-dial.
When Zillow rate-limits heavily, stick to one scrape at a time and read the FAQ. Layout changes happen; we ship fixes when we can.
When to upgrade to Pro
Upgrade when Free limits block the workflow:
- You routinely need more than ~2 pages of results
- Agent or owner contact columns are required for the dial list
- You need the full column set for CRM mapping or comp notes
Subscribe on Pricing, paste the key in extension Settings, and manage the license on Account.