Searches the commercial listings published to the agent website.

Backed by a search index, so this is the endpoint to build a website's listings page
and filter drawer on. Only listings currently live on the website channel are
returned; there is no status to filter on, because a delisted listing leaves the index.

One result per listing, not per property. A building marketed both for sale and to
let returns two results, each with its own price, status and covered units. Group them
by commercialPropertyId if you would rather show one card per building.

Prices and sizes describe what is actually transactable. A building-only listing
carries the building's own figures. A listing covering units carries the range across
those units, because such a building sells or lets only its units — so
price.min and price.max differ and render as "From £min" or a range.
Rents are always per annum, normalised so monthly and annual listings compare.

Price and size filters match on overlap, not on the headline figure: a listing
matches when any part of its range falls within yours, so a multi-let building appears
whenever one of its units suits your budget.

Amenities match all of those supplied. Every other multi-value filter matches any.

EPC is the raw score rather than a letter band, so convert bands to scores yourself —
this leaves range filtering available and avoids baking one band scheme into the API.

Sorting by price needs transactionType, because sale prices and rents are
separate fields and cannot be ordered as one.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Query Params
int32
0 to 2147483647
int32
1 to 100
string
enum

Sort options for the website listing search. "Relevance" is Typesense's own
text ranking and only means anything alongside q.

Allowed:
string
enum

Sales or lettings — the site's For sale / To let tabs. Omit for both.

Allowed:
string

Free text over address, town, county, postcode, outcode, reference and
unit names.

string
string
string
double

Centre latitude for a radius search. Requires Lng and Radius.

double

Centre longitude for a radius search. Requires Lat and Radius.

double

Search radius in miles. Requires Lat and Lng. Listings without
coordinates are excluded from a radius search rather than silently ranked last.

ClassificationTypes
array of objects

One or more classification types. A listing carries the classification of
what is marketed: the unit's for an individual-unit listing, otherwise the
building's.

ClassificationTypes
Allowed:
ClassificationSubTypes
array of int32s

Subtype ids within the selected types, matching any.

ClassificationSubTypes
UseClasses
array of objects

Use classes, matching any.

UseClasses
Amenities
array of objects

Amenities, matching all — the design's wording is "listings that
have all the amenities you pick".

Amenities
string
enum
Allowed:
SalesMarketingStatuses
array of objects

Sales marketing statuses to include — the "include Sold STC" toggle. Implies sales,
so it is filtered within that track only.

Deliberately separate from Open.Api.Models.Commercial.CommercialWebListingQueryParams.LettingsMarketingStatuses rather than one
shared list: the two enums collide on their underlying numbers (2 is Sold STC
for sales but Reserved for lettings, 3 is Sold STCM against Let Agreed), so a single
list could not say which was meant.

SalesMarketingStatuses
Allowed:
LettingsMarketingStatuses
array of objects

Lettings marketing statuses to include — the "include Let Agreed" toggle.
Implies lettings. See Open.Api.Models.Commercial.CommercialWebListingQueryParams.SalesMarketingStatuses for why the two are
separate.

LettingsMarketingStatuses
Allowed:
int64

Lower bound of the caller's budget. Matching is range overlap: a
listing matches when any part of its price range falls inside the caller's, so a
multi-let building surfaces whenever one of its units fits. Compared against sale
price for sales listings and annualised rent for lettings.

int64
double

Size bounds in square feet, matched as range overlap like price.

double
int32

Lower bound of the EPC score.

On a non-domestic EPC a lower score is better — it measures CO₂ emissions, not

running costs, so the scale runs the opposite way to a domestic certificate. Band A is
0–25 and band G is over 150, and a score below 0 is A+.

So a caller wanting "A or B only" sets Open.Api.Models.Commercial.CommercialWebListingQueryParams.MaxEpc to 50, notOpen.Api.Models.Commercial.CommercialWebListingQueryParams.MinEpc. Using MinEpc for that returns the least efficient buildings.

The index carries the raw score rather than the band, so the band conversion is the
caller's: A+ <0, A 0–25, B 26–50, C 51–75, D 76–100, E 101–125, F 126–150, G 150+.

int32

Upper bound of the EPC score, and the one a "minimum band" filter wants —
see Open.Api.Models.Commercial.CommercialWebListingQueryParams.MinEpc for why.

string
enum

Lettings only — type of let.

Allowed:
int32

Lettings only — contract length bounds in months. Where a listing covers
several units with differing terms the index holds the shortest available, so
these bound that figure.

int32
int32
1 to 3650

Only listings first listed within this many days.

boolean

Return facet counts for the filter groups. Off by default because it
costs Typesense extra work on every query.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json