# Changelog of Appfolio Scraper (`normdata/appfolio-scraper`) Actor

- **URL**: https://apify.com/normdata/appfolio-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/normdata/appfolio-scraper.md

## Changelog

### 2026-09-23 (even later)

- Fixed a real bug: the property manager's website was shown as plain text like
  "www.example.com" with no scheme, which isn't a complete, clickable URL. It's now
  normalized into a real `https://` URL.
- A listings page URL that can't be reached or parsed now writes its own row with `error` set
  to the reason, instead of silently disappearing from the results with no trace beyond the
  run log. Every other URL in the same run is unaffected.
- Reordered every column in the dataset for readability: core listing info first, then arrays
  and the description, then every link field grouped together, then every date field grouped
  together, with `scraped_at` last.

### 2026-09-23 (later)

- Detail enrichment now includes the full photo gallery instead of just the one preview
  thumbnail, a video walkthrough link when the listing has one, a direct link to apply, and a
  real free-text description. The description was previously coming back empty on almost every
  listing; it now reads from the same field the listing's own page uses for search engine and
  social sharing previews, which is reliably filled in.
- Reworked how change tracking stores history: one record per property manager instead of one
  per unit, which cuts the number of storage operations by roughly 98% on a typical multi-company
  run with no change in what the data actually shows.

### 2026-09-23

- Initial release: scrape rental vacancy listings from any property manager's public AppFolio
  site, with rent, bedrooms, bathrooms, square footage, address, coordinates, photo, and
  availability date for every unit.
- Real, source-side filters for rent range, minimum bedrooms, minimum bathrooms, and pets
  allowed, plus a square footage and keyword filter applied on our end.
- Optional detail enrichment: pet policy, amenities, utilities included, appliances,
  application fee, security deposit, and the property manager's name, phone, and website.
- Optional automatic change tracking: run this actor on a schedule and every listing is flagged
  as new or returning, with the exact rent change and days on market since it was first seen.
- Multiple property manager URLs supported in a single run.
- Free plan runs are locked to a fixed 10 row sample with detail enrichment and change tracking
  off.
- Tuned concurrency against real, independent property manager sites: base listings run at
  roughly 3,000 rows a minute, fully enriched runs are slower by design since each unit needs its
  own request to that property manager's own site.
