# Changelog of Zillow Agent Scraper — Licenses, Contacts, Sales Stats (`sian.agency/zillow-agent-scraper`) Actor

- **URL**: https://apify.com/sian.agency/zillow-agent-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/sian.agency/zillow-agent-scraper.md

## Changelog

All notable changes to **Zillow Agent Scraper — Licenses, Contacts, Sales Stats** will be documented in this file.

### \[2026-09-18]

#### 🔧 Fixed

- **Agent names with spaces now look up** — A profile URL like `https://www.zillow.com/profile/Christy%20Stuart` was refused as "not a Zillow profile URL"; every spelling of a profile now resolves — encoded or plain space, with or without `https://`, `www.`, a trailing slash or a query string — and the same four spellings of one agent are billed as a single lookup
- **You are no longer charged for an agent that doesn't exist** — a lookup target with no real profile behind it returned a row of empty fields marked `success` and billed it; it now returns a clearly-marked error row and is not charged

### \[2026-08-24]

#### 🚀 A Run Report You Can Actually Work From

- **Copy-Paste Agent Roster** — Every run now ends with a report that lists the agents you pulled with license number, MLS ID, 12-month sales and contact, plus a one-click tab-separated copy that drops straight into a spreadsheet or CRM import
- **Cohort Read-Out** — Median and top-producer sales volume, average deal price, brokerage concentration and license-state coverage for the market you just scraped, so you can rank a metro before you spend a minute on outreach
- **Itemised Charges** — The report shows exactly what each run cost, event by event, with a running total — no surprises on the invoice
- **Retry In One Click** — Any search or lookup that did not come back is listed with a plain-English reason and a copyable retry input that asks only for the missing queries — failed queries are never charged
- **Agent Photos In The Dataset** — The agent profile photo now renders inline in the dataset table view, so you can eyeball a roster without opening 50 profiles

#### 💎 User Benefits

- Recruiters can qualify a market straight from the run report instead of exporting first
- Every run states its own cost in plain numbers, itemised per event
- A partial run tells you exactly what is missing and how to re-fetch just that part

### \[2026-07-03]

#### 🔧 Improved

- **Runs out of the box** — `location` now defaults/prefills to `"Austin, TX"` and `maxAgentsPerQuery` prefills to `10`, so quick TEST runs and bare API calls return real agent data immediately instead of failing on missing input

### \[2026-05-21]

#### 🎉 Zillow Agent Scraper — Launch!

- **Compliance-Grade License Data** — Per-agent license number, state, status, license type, and expiration date — surface the compliance fields every other Zillow agent scraper strips out
- **MLS Identifier Matching** — `mls_ouid` + `mls_agent_id` arrays per agent for direct internal-MLS feed joins, no fuzzy matching required
- **Service-Area Mapping** — Zillow `regionId` + relative URL + display text for every market each agent covers, perfect for brokerage recruiting and territory targeting
- **Parsed Numeric Sales Stats** — `totalSales`, `salesLastTwelveMonths`, `averagePrice` (USD), `priceRange.min/max` parsed from Zillow's raw `"$1.3M"` / `"$144K"` strings into ready-to-query integers
- **Two Search Modes** — `search` (paginate Zillow's agent directory by city/state) and `lookup` (direct fetch by profile URL, username, or encodedZuid)
- **Four Enrichment Toggles** — `includeForSale`, `includeForRent`, `includeSoldProperties`, `includeReviews` paginate each agent's full portfolio with independent per-agent caps
- **Full Sold History** — Per-agent transaction history (up to 2,000 rows per agent) with `sold_date`, `price`, `represented` side (buyer/seller/both)
- **Client Reviews** — Paginated reviews with rating, comment, work description, and agent rebuttal — ready for reputation-mgmt workflows
- **HTML Cohort Report** — Saved to key-value store with brokerage breakdown, license-state coverage, top-producer concentration, and median sales/agent
- **No Failed Runs From Blips** — Automatic recovery when the data source rate-limits or stalls mid-market, so a 500-agent scrape finishes instead of dying on page 12

#### 💎 User Benefits

- Brokerage recruiters get license + sales-volume data on every agent in a market — feed CRM and run outreach in minutes
- Lead-gen SaaS founders build agent-enrichment products without maintaining scrapers, proxies, or Zillow's rate-limit dodging
- MLS / CRM data engineers stitch internal records to Zillow profiles via `mlsIds[]` instead of name-based fuzzy joins
- Compliance teams verify agent license status + expiration in a single run — perfect for ad-network or mortgage-partner due-diligence
- Analytics teams track top-producer concentration by region using parsed `salesLastTwelveMonths` and `totalSales` numbers
- Mid-premium pricing ($25/1,000 agents at BRONZE) — cheaper than premium enrichment competitors at $50-$80/1K, the only one with compliance fields at any price

#### 🎯 Use Cases

- Brokerage recruiters at Compass, Keller Williams, eXp Realty pulling top-producing agents in a target metro area
- Lead-gen SaaS founders productising agent contact-and-license enrichment for B2B real-estate buyers
- Real-estate analytics teams tracking agent productivity and brokerage market-share month over month
- CRM/MLS data engineers stitching Zillow profile data to internal source-of-truth agent records
- Compliance teams at ad networks / mortgage lenders / relocation platforms verifying current license status before partnerships
- Programmatic-SEO lead-gen agencies building "top agents in \[city]" pages with embedded reviews and rankings
