Comps

​

Market transactions (comps): the deals of your closed projects and the deals your team records, each on a property with its facts as of the deal, with parties, sources, history and analysis. Professional plan.

Comps Operations
  • get/api/v1/comps
  • post/api/v1/comps
  • post/api/v1/comps:search
  • post/api/v1/comps:summary
  • post/api/v1/comps/properties:search
  • post/api/v1/comps:batchGet
  • get/api/v1/comps/{id}
  • patch/api/v1/comps/{id}
  • delete/api/v1/comps/{id}
  • get/api/v1/comps/{id}/actions
  • get/api/v1/comps/{id}/parties
  • post/api/v1/comps/{id}/parties
  • get/api/v1/comps/{id}/sources
  • post/api/v1/comps/{id}/sources
  • get/api/v1/comps/{id}/property
  • put/api/v1/comps/{id}/property
  • post/api/v1/comps/{id}:restore
  • post/api/v1/comps/{id}:hide
  • post/api/v1/comps/{id}:unhide
  • post/api/v1/comps:merge
  • delete/api/v1/comps/{id}/parties/{partyId}
  • delete/api/v1/comps/{id}/sources/{sourceId}
  • put/api/v1/comps/{id}/property/facts
  • put/api/v1/comps/{id}/property/picture
  • post/api/v1/comps/{id}/notes
Previous
Finds potential duplicate companies by name, domain, or country. Useful for de-duplication before creating a new company.
Next
Lists deals for synchronisation: every deal of your organisation in the order it last changed, oldest first, with a cursor to continue from. Pass `updated_since` to receive only what changed since your last run; with `include_deleted` a deleted deal, and a deal voided because its project was corrected to no sale, come back with `deletedUtc` and `removalReason` so you can remove them on your side.
IntroductionAuthBotsCompaniesCompsLists deals for synchronisation: every deal of your organisation in the order it last changed, oldest first, with a cursor to continue from. Pass `updated_since` to receive only what changed since your last run; with `include_deleted` a deleted deal, and a deal voided because its project was corrected to no sale, come back with `deletedUtc` and `removalReason` so you can remove them on your side.Records a deal. When it looks like one your organisation already has — the same property within 180 days, the same buyer and seller within 30 days, the same name and locality — nothing is recorded and the candidates come back with `409`; send the request again with `allowDuplicate` to record it anyway. Send an `Idempotency-Key` to make a retry safe.Searches deals with the filters the Propstreet app offers and a few more: property type, period, source channel, map area or a point with a radius, locality, country, area, price, price per square metre, yield, a party, an advisor or a project. Answers a page with the total, for a grid. Voided deals are never listed; hidden deals only with `includeHidden`.The analysis of a selection of deals — the same numbers the Propstreet app shows: how many, how many without a price, the latest deal, the yield and price-per-square-metre medians with what they leave out, deals and volume per quarter, and the most active buyers and sellers. Takes the search filters; medians need exactly one property type, and a deal on a property of several types counts in its main type's medians only (`excluded.otherMainType`).Finds the property a deal is about among your organisation's records — your own properties and the properties recorded for your deals — by words of the name, street address or locality, best match first (at most 20). Send a hit's `propertyId` as `property.propertyId` when recording a deal (`POST /api/v1/comps`) or re-anchoring one (`PUT /api/v1/comps/{id}/property`), so a second deal on the same building shares its record instead of recording the building again. A property recorded for a deal is listed only here and on its deals, never among your properties.Reads several deals by id in one call; ids that do not exist or are not yours come back under `notFound`.Reads one deal. The `ETag` header carries its version for `If-Match` on a write.Changes the deal's own fields: a field you omit keeps its value, a field sent as `null` is cleared. A deal from a closed project refuses the project's fields (`409`); correct them with `POST /api/v1/projects/{id}/close/correct`. A stale `If-Match` is `412`.Deletes a recorded deal; it can be restored. A deal from a closed project cannot be deleted (`409`): correct the project's close instead — a correction to no sale voids the deal.The deal's history, newest first: when it was recorded and by whom, every change with the old and new value of each field, parties and sources added or removed, the property re-anchored or its facts edited, notes, and hidden, deleted and restored.The deal's parties: seller, buyer and advisors.Adds a seller, buyer or advisor: a contact or a company in your network, or your own firm. Answers `201` with the whole deal and its new version, and the party's address in `Location`. Send an `Idempotency-Key` to make a retry safe.The deal's sources: where your team learned about it.Adds a source: an article, a note from the activity log, or a contact or company. An `activity` source may file a new note on a contact or company in the same call (`note`) — what they told you — which also shows on their timeline. Answers `201` with the whole deal and its new version, and the source's address in `Location`. Send an `Idempotency-Key` to make a retry safe.The property the deal is about, with its facts as of the deal. A closed project without a property has none (404).Anchors the deal on another property: an existing record of your organisation by `propertyId`, or a new record for somebody else's building. A deal from a closed project follows the project's property (`409`). A stale `If-Match` is `412`.Brings a deleted deal back.Hides a deal from a closed project for the whole organisation: the search leaves it out unless asked (`includeHidden`), the analysis never counts it, the change feed carries it with `hidden: true`. The project's owner or an admin only (`403`); a recorded deal is deleted instead (`409`). Hiding a hidden deal changes nothing. Answers the deal with its new version.Shows a hidden deal again, for the whole organisation. The project's owner or an admin only (`403`). Showing a deal that is not hidden changes nothing. Answers the deal with its new version.Merges two deals that are one: the survivor keeps its values except the fields named in `takeFromOther`, gains the other's parties and sources (each once), and both record the merge in their history; the other is deleted for good — it cannot be restored. A deal from a closed project is always the one kept, whichever was named the survivor, and keeps the project's fields (`409` when a pick names one); two deals from closed projects are never merged (`409`). Answers the deal that stays with its new version. Send an `Idempotency-Key` to make a retry safe.Removes a party; the history keeps it. Answers the deal with its new version (the removal moves its `ETag`). A party that came with the project's closing is corrected with `POST /api/v1/projects/{id}/close/correct` (`409`).Removes a source; the history keeps it. Answers the deal with its new version (the removal moves its `ETag`).Corrects the property's facts as they were at the deal — the whole set, not a part (the deal's history records what changed). A deal's facts are locked when it is recorded, so a later change on `/api/v1/properties/{id}` does not reach it; this is how they are corrected. For a property recorded for the deal, the facts and its name and location are restated as of the deal. For one of your own properties — by its owner or an admin, else `403` — the facts it had at the deal are corrected for every deal recorded with them; its name and location stay, and its current facts change only when nothing newer was saved since. Whether a deal from a closed project is a portfolio is the project's (`409`). A stale `If-Match` is `412`.Sets or removes the picture of the deal's property — your own property or one recorded for a deal; every deal on the property shows it. Send an image id from `POST /api/v1/images`, or `null` to remove it. A stale `If-Match` is `412`.Adds a note to the deal's history. Answers `201` with the whole deal; `Location` points at the history. Send an `Idempotency-Key` to make a retry safe.ContactsFilesImagesLinksMandatesNetwork ActionsNetworkOAuth ClientsOffersPersonal Access TokensProjectsProject TeasersPropertiesProperty TeasersRoomsRoom TeasersSearchTasksTeamsWebhooks
Propstreet Documentation
DocumentationDocumentationWhat's NewWhat's NewAPI ReferenceAPI Reference