Find leads · Use case
How do I find properties with price reductions, especially repeated cuts?
Every price change is recorded in Casafari's property graph. With New Market Leads, create a feed with POST /alerts-api/feeds or query POST /api/v1/listing-alerts/search for price-cut alerts in your area. Then fetch each property with GET /api/v1/properties/search/{property_id} and count consecutive reductions in sale_price_history to spot repeated cuts.
Products: New Market Leads, Property Sourcing, Area Insights, Comparables & Valuation
Short answer
The property graph records every price change of every property, with dates. It keeps them in sale_price_history, and in rent_price_history for rentals.
A New Market Leads feed turns each price cut in your area into an alert. Repeated cuts are not a search filter: you count them from a property's history. Area Insights and comparables then show whether the whole area is moving or only that seller.
Steps
Create a feed for price cuts in your area (alert_subtypes) or search alerts with alert_date_from
- For a standing feed: create a feed with
POST /alerts-api/feeds(feed_name,filters) for your area, property type and price cuts. Putalert_subtypesset toprice_decreasedinfilters, withlocation_ids,typesandbusiness_type. The other keys are on the Create feed page. Set a webhook withPUT /alerts-api/webhooksbefore the first feed: without one, creating a feed answers409withNo webhook configured.price_decreasedcombines withprivate,bankandauction. - Casafari client accounts: call
POST /api/v1/listing-alerts/searchwithlocation_ids,operation,types,alert_subtypesset to the price-decrease subtype, andalert_date_from/alert_date_to(YYYY-MM-DD). Note the property each alert refers to.
Shortlist with POST /api/v2/properties/search using days_on_market_from and updated_date_from
- Casafari client accounts: search the same area with
location_ids,types,days_on_market_fromandupdated_date_from(YYYY-MM-DDTHH:mm:ss). For example,days_on_market_from180 keeps properties on the market for about six months or more.updated_date_fromkeeps those whose record changed recently. Addprice_from/price_toto match a budget.
Fetch each property with GET /api/v1/properties/search/{property_id} and count consecutive reductions in sale_price_history
- For each candidate, call
GET /api/v1/properties/search/{property_id}. - Sort
sale_price_historyby date and count how many changes in a row lowered the price. The entry fields are on the Get property by ID (v1) page. - Two or more consecutive reductions mark a repeated-cut lead.
Check the area with ma_get_time_series_data, data_point price_down
- Over MCP: resolve the area with
ma_get_location_typeahead. - Call
ma_get_time_series_datawithcustom_location_boundary.location_ids,type_group,business_typesale,data_pointprice_down,date_intervalmonth,date_range.minand analias.
If cuts are rising across the whole area, one seller's cuts say less about that seller.
On a target, read total_sale_price_change and last_sale_price_reduction from comps_get-comparables
- Over MCP: call
comps_get-comparableswith these inputs:location_boundary.circle.target_point.addressand adistancein kilometresoperationsalecomparables_typescomparables_count(1 to 50)sold_or_rented_after: null, so only active properties are considered
- Read the price fields of each result:
total_sale_price_changeandlast_sale_price_reduction(both in percent) andsale_price_last_change. This covers the neighbours, and the target itself if it appears among the results. - Compare the asking price with the response's
estimated_prices.
Example: houses in Marbella with two or more cuts
A Casafari client account first pulls this year's price-cut alerts for houses in Marbella. Replace <MARBELLA_LOCATION_ID> with the location id. Replace <PRICE_DECREASE_SUBTYPE> with the value listed on the Search alerts (v1) page.
{
"operation": "sale",
"location_ids": [<MARBELLA_LOCATION_ID>],
"types": ["house", "villa", "townhouse"],
"alert_subtypes": [<PRICE_DECREASE_SUBTYPE>],
"alert_date_from": "2026-01-01"
}Next, it calls GET /api/v1/properties/search/{property_id} for each property in the alerts. It keeps those whose sale_price_history shows two or more consecutive reductions.
For context, ask an assistant connected to the Casafari MCP server: "How many price cuts were there on houses for sale in Marbella each month this year? Among comparable houses within 2 km of Avenida Ricardo Soriano, Marbella, which have cut their price?" It calls:
ma_get_location_typeaheadwith Marbella.ma_get_time_series_datawithtype_grouphouse,data_pointprice_downanddate_intervalmonth.comps_get-comparableswith the address,distance2,operationsale,comparables_types["house", "villa", "townhouse"],comparables_count20 andsold_or_rented_afternull.
How to read the result
sale_price_last_change: change_date, old_value, new_value
sale_price_last_change gives the date of the last price change (change_date) and the price before and after it (old_value, new_value). If new_value is lower, the last change was a cut. last_sale_price_reduction gives the size of that cut in percent, and total_sale_price_change gives the total change in percent.
Several cuts plus long days on market: a negotiable seller
A property with two or more consecutive cuts that has also stayed on the market a long time points to a seller ready to negotiate. It is a signal, not proof. Check it against the area's price_down trend and against fair_market_price from estimated_prices before you make an offer or pitch a new strategy.
Limits
No search filter for the number of cuts: count them from the history
No operation in the sources filters by the number of price cuts. You count them yourself from sale_price_history or rent_price_history.
/alerts-api/* feeds, POST /api/v1/listing-alerts/search, POST /api/v2/properties/search and GET /api/v1/properties/search/{property_id} are for Casafari client accounts. ma_get_time_series_data and comps_get-comparables are available over MCP to Casafari clients with MCP access. For the feeds, the property search and fetch, and these two tools, self-serve access for new users is coming soon.
The alert_subtypes values
alert_subtypes in a feed's filters accepts new, price_increased, price_decreased, reserved, delisted and sold. A feed has no key for the number of consecutive cuts either, so every price_decreased alert is one cut and you count repeats yourself.
The history shows what the price did, not why. No refresh frequency, quotas or prices are published; ask Casafari.
Questions
Can I get price-cut alerts over MCP?
No. Price-cut alerts belong to New Market Leads, which is offered over the REST API only. Over the Casafari MCP server, two tools help. ma_get_time_series_data with data_point price_down counts price decreases in an area over time. comps_get-comparables returns total_sale_price_change, last_sale_price_reduction and sale_price_last_change for properties around a point. Both are available to Casafari clients with MCP access.
Does a price cut alert fire once per property or once per advertisement?
Alerts follow the property graph, where every advertisement of a property is merged into one record with its full history. A price change is therefore reported for the property, not once for each agency or portal advertising it. This is why Casafari counts properties, not advertisements, and why a lead list built from alerts does not repeat the same home.
Can I see rent price cuts too?
Yes. The graph keeps rent_price_history alongside sale_price_history. With operation rent, comps_get-comparables returns total_rent_price_change, last_rent_price_reduction and rent_price_last_change. ma_get_time_series_data with business_type rent and data_point price_down gives the area trend. POST /api/v1/listing-alerts/search also takes an operation field for rent alerts.
How do I combine price cuts with below-market pricing?
Run comps_get-comparables around the property and compare its asking price with fair_market_price in estimated_prices. Set exclude_outliers to false so underpriced properties stay in the results, then read is_outlier. A property with repeated cuts that now sits below the fair market price is both a motivated seller and a possible bargain. ma_get_price_distribution adds the area's price bands.