Create Webhook
Register a URL to receive listing change events — created, price moved, status changed, or expired. Returns a signing secret for payload verification.
The signing secret appears only in this response (list and update never
return it), so store it now; to rotate it, create a new subscription and
delete the old one. url must be HTTPS on a public host (loopback,
private and link-local addresses are rejected with 400), and events
takes 1-10 entries.
Borough publishes detected changes every 5 minutes in capped batches, so a large burst can take several cycles to drain. New-listing, status and expiry events follow the search refresh cadence (about every 6h for rentals, 8h for sales). Price events for detail-scraped listings are detected only when that listing’s detail is refreshed, which can lag the real change by days to weeks; use a listing watcher when price latency matters.
Subscriptions are matched on event type only. An active subscription
receives every change of a subscribed type across the whole Borough
dataset — subscribing to listing.created means every new listing
Borough indexes, citywide. Narrow it either by filtering on
data.listingId in your handler, or by using Watchers
(POST /v1/watchers), which scope monitoring to one listing, one
building, or one saved search.
If the account drops below Business, every webhook subscription and
watcher on it is paused. Re-subscribing does not resume them: send
PATCH with {"active": true} for each one. Events that occur while a
subscription is paused are not delivered later.
Tier: Business
Authorizations
Polar.sh license key. Format: BOROUGH-<uuid>
Body
Response
Webhook registered