Zillow CSV Export SOP for Virtual Assistants (Real Estate Investors)
Copy-ready SOP for VAs pulling Zillow listing data for investor clients. Covers deliverables, column checklist, quality checks, and escalation — paste it into your task tool and run it weekly.
Investors hire VAs to collect and format data, not to relearn a browser extension every Monday. Once RealtyScraper is installed (see Install), this page is the recurring workflow — bookmark it and run the SOP below each time a data pull is due.
This covers standard real estate VA tasks for Zillow research: repeatable pulls, clean handoffs, and clear escalation. Investors who want to outsource Zillow research can send VAs here instead of writing the process from scratch.
For scrape mechanics, point VAs to the export guide. This page focuses on deliverables and quality.
What the investor should provide upfront
Before the first pull, the client should send:
- Zillow search URL or exact filter spec (market, price, beds, property type, DOM, etc.)
- Tier: Free sample vs full Pro pull (Pricing)
- Required columns (checklist below)
- File naming, e.g.
phoenix-sfr-2026-06-17.csv - Delivery location: shared Drive folder, CRM import path, or email (avoid huge attachments in ticket systems)
Standard deliverable
Unless the client says otherwise, deliver:
- One CSV per search batch
- UTF-8 encoding (RealtyScraper default)
- Header row intact
- Row count in the cover note (
847 listings, 3 duplicates removed) - Search URL and pull date in the same note
For refreshes, a short delta helps: +42 new zpids vs last week.
File naming
Use a consistent convention so batches are sortable and findable later:
[market]-[type]-[YYYY-MM-DD].csv
Examples:
phoenix-sfr-2026-06-17.csvatlanta-duplex-2026-06-17.csvdfw-fsbo-2026-06-17.csv
The market and date in the filename make it easy to diff against last week’s pull without opening the file.
Column checklist
Free tier (15 columns) covers many comp and watchlist tasks:
- Identity:
zpid,url - Location:
address,street,city,state,zipcode - Core:
price,beds,baths,sqft,property_type,status - Meta:
scraped_at
Pro tier (40 columns) when the client needs contacts or richer CRM mapping:
- Agent, broker, and owner contact fields (when Zillow exposes them on detail pages)
- Tax, zestimate, geo, FSBO, and other extended fields
If the client wants a phone on every row, confirm they have Pro and that detail scrape ran. Contacts are not on the search grid alone.
Weekly SOP (copy to your task tool)
- Open the saved Zillow search URL from the client
- Confirm filters still match the brief (markets drift)
- Open the RealtyScraper panel and run Scrape all (or single page if specified)
- Wait for completion. Status text in the panel shows progress and rate-limit pauses; multi-page and detail runs take several minutes by design
- If Zillow shows a CAPTCHA, complete it on the tab before expecting more progress
- Download CSV
- Open in Google Sheets: remove duplicate
zpidrows, drop rows missing required fields, addpull_dateif requested - Upload to the delivery folder with the agreed filename
- Send handoff with row count and any anomalies
Do not start a second heavy scrape in the same browser while one is running.
Quality checks before delivery
| Check | Pass criteria |
|---|---|
| Row count | Plausible for the market; flag sudden zeros or 10× spikes |
| Duplicates | No duplicate zpid unless client wants raw append-only |
| Required columns | Must-have fields filled on most rows; note exceptions |
| Wrong market | City/state match the brief |
| Fresh pull | scraped_at reflects today |
Flag problems in the handoff note. Do not silently discard rows.
Free vs Pro: what to tell the client
| Situation | Recommendation |
|---|---|
| Sample comp set, single page | Free |
| Full zip or large map area | Pro |
| Dial list with agent phones | Pro + detail scrape |
| Client already subscribed | They paste the license key in Settings; same browser profile, or unbind before switching |
License and billing live on the client’s Account page. VAs should not share keys across unrelated teams.
Common mistakes to avoid
Don’t run two heavy scrapes at once — one at a time keeps rate limits manageable. Don’t manually retype what’s already in the export; that’s the whole point of the tool. Don’t share CSVs publicly, and don’t promise agent or owner phone numbers on every row — Zillow only exposes them on some listings, and the Pro detail scrape is what pulls them at all.
Escalation
- Extension broken or panel missing: client opens a Support ticket
- CAPTCHA on every page: one scrape at a time; client may need a smaller search or a cooldown period
- Licensing or billing: FAQ and Account portal (not a VA fix)