Skip to main content

Dynamic Sets

Dynamic sets are user-curated sets of comparison listings used to track competitive performance. Use these endpoints to build a set from scratch (search for candidate listings near a location, create a set from them, and upgrade it to paid), list a user's sets, inspect a set's definition and member listings, retrieve aggregated performance metrics, manage which of the user's own listings the set is associated with, and fetch a set's change history, time-series metrics, and metric distributions.

GET /sets returns both free and paid sets; the is_paid field on each set indicates which. Everything involved in building a set works on a free one — creating it, adding and removing its member listings, reviewing them, and managing which of your own listings it is associated with. What the paid plan buys is the set-level analytics computed across the set, including its price calendar. A paid-only endpoint returns 404 Not Found for a free set, which is indistinguishable from a set that does not exist, so check is_paid before calling one.

EndpointFree setsPaid sets
GET /sets
POST /sets✅ (creates a free set)
GET /sets/candidates✅ (no set required)
GET /sets/{set_id}
POST /sets/{set_id}/upgrade✅ (this is what upgrades it)
POST /sets/{set_id}/share
GET /sets/{set_id}/listings
PUT /sets/{set_id}/listings
DELETE /sets/{set_id}/listings
GET /sets/{set_id}/associated_listings
PUT /sets/{set_id}/associated_listings
DELETE /sets/{set_id}/associated_listings
GET /sets/{set_id}/aggregated_metrics❌ 404
GET /sets/{set_id}/price_calendar❌ 404✅ (up to 25 members)
GET /sets/{set_id}/time_series❌ 404
GET /sets/{set_id}/distribution❌ 404
GET /sets/{set_id}/changelog❌ 404

Upgrade a free set with POST /sets/{set_id}/upgrade, which purchases the paid plan and charges the billable user. Sets the user owns as well as sets shared with the user are included throughout; modifying a shared set requires editor or manager access to it.