The listings connector — importing and reconciling
The connector is how listing data gets into STR Surveillance. It's provider-agnostic — anything that can produce a list of listings works: a scraper, a Host-Compliance/AirDNA-style data feed, or a plain CSV you assembled by hand.
Two ways to import (Listings tab → "Import listings"):
• JSON — paste an array like:
[{"platform":"airbnb","externalId":"12345","address":"123 Main St","title":"Cozy condo","url":"https://...","hostName":"Jamie"}]
• CSV — paste rows with a header line. Recognized columns: platform, externalId, address, title, url, hostName. Only platform + externalId are required, but address is what lets reconciliation flag compliance.
What import does:
• Upserts each listing (re-importing the same listing updates it rather than duplicating — it's keyed by platform + id).
• Stamps "last seen" so listings that stop appearing are eventually retired.
• Immediately reconciles against your permit roster and sets each listing's compliance status.
Address matching:
Matching normalizes both the listing address and the permit address (lowercasing, dropping unit/suite numbers and punctuation, standardizing st/ave/blvd, etc.), so "123 N. Main Street, Apt 2" and "123 north main st" line up. If a listing isn't matching a permit you know exists, check that the permit's address is entered cleanly on the Permits tab, then click Reconcile.
Note on automation: v1 ships manual/CSV/JSON import plus on-demand and nightly reconciliation. A live scraper/provider adapter that pulls listings automatically slots in behind the same import path — no change to your workflow when it's enabled.