Property Sourcing · FAQ
Property Sourcing: frequently asked questions
Answers to what agents, investors, developers and AI agents ask about Property Sourcing. Every answer links the page that documents it.
How do I find every property for sale in a town that matches my client's brief, without duplicates?
Call POST /v1/property-sourcing/searches with the town's location_ids and your filters: each result is one property record from Casafari's deduplicated, cleaned property graph, so a home advertised by several agencies and portals appears only once.
Get the ids from GET /v1/locations/search (a search takes 1 to 100 location_ids), then add operation (sale or rent), types, ranges for price, price_per_sqm, bedrooms, bathrooms, living_area_sqm and plot_area_sqm, and features. listings_count on each result tells you how many places advertise the property. Pages hold up to 100 results (25 on Free) and one search reaches at most 1,000 results (100 on Free). See Search properties and how the property graph is built.
Can I search by a plain-language description like 'sea view, needs renovation, near the beach'?
Yes: POST /v1/property-sourcing/searches/describe accepts up to 20 tags or a free-text description, which is split into phrases at commas, semicolons and "and", and returns the matching property records, each with its matched_tags.
Add location_ids for the area and, optionally, a price or price_per_sqm range. The description "sea view, needs renovation and near the beach" becomes three phrases, and matched_tags on each result shows which of them the property matched, so you can rank results or explain a match to a client. Each page holds up to 100 results and costs 100 units. See Search properties by description.
Which properties in this area have the lowest price per square metre?
Search the area with POST /v1/property-sourcing/searches and sort: price_per_sqm_asc; results come cheapest per square metre first, each with price.per_sqm on one deduplicated record per property, so the same home advertised by several agencies does not appear several times in the ranking.
Narrow the band with a price_per_sqm range and a living_area_sqm range so very small properties do not crowd the top of the list. A price of 0 is returned as null and means on request, so handle those properties separately. To set an estimated value against the asking price, see Comparables and valuation; for how prices in the area have moved, see Area insights. Reference: Search properties.
How long has this property been on the market and what did it originally ask?
Use first_seen on any search result for when the property was first seen on the market, and GET /v1/property-sourcing/properties/{property_id}?expand=history for its dated price and status changes, which show earlier asking prices, each change and the current status.
The history belongs to one property record that merges every place the home is advertised, not to a single agency's advertisement. Time on market is a real negotiation input: in France it took 83 days on average to sell a property as of February 2025, 11 days longer than a year earlier, according to The Connexion. A property read costs 10 units. See Get a property.
Is this link my client sent the same property as the one I already have?
Send the link to POST /v1/property-sourcing/properties/resolve: it returns the property the link belongs to, and because every property is one record with one id (prop_…), two links that resolve to the same id are the same home.
Resolve accepts a portal or agency link, an agency reference or a listing id and costs 25 units. With the id, GET /v1/property-sourcing/properties/{property_id}?expand=listings shows every place the property is advertised with its agency, URL, price and status, which explains why your client saw two different prices. See Resolve a link or reference and the use case Resolve client-forwarded links to one property record.
How many agencies are advertising this property and at what prices?
listings_count on each search result says how many places advertise the property, and GET /v1/property-sourcing/properties/{property_id}?expand=listings returns each of them with its source, agency, URL, price, status and references.
One property record merges every place the home is advertised, so comparing prices across agencies reveals shared mandates and price gaps before you call anyone. The read costs 10 units, and expand=listings,history adds the dated price and status changes in the same call. See Get a property and the use case Shared-mandate and competitor mapping for an office.
Can I filter by features like a rental licence, or exclude rented-out, life-annuity and business-transfer properties?
Yes: features keeps only properties with the features you name and exclude_features removes properties with features you do not want, and both accept rental_license, rented_out, life_annuity and business_transfer.
The full set is balcony, elevator, garage, garden, parking, storage, swimming_pool, terrace, rental_license, furniture, no_elevator, rented_out, life_annuity, business_transfer and smoke_outlet. A short-let investor might send features: ["rental_license", "terrace"] with exclude_features: ["rented_out", "life_annuity", "business_transfer"]. This documentation does not say how a licence is established, so verify it with the relevant authority before buying. See Search properties and the use case Short-let investor filter with rental licence.
What are the newest properties that came on the market in my area this week?
Run POST /v1/property-sourcing/searches with your area's location_ids and sort: newest, and keep the results whose first_seen date falls after your last check; each result is one deduplicated property record, so a home advertised by three agencies appears once.
Store the prop_… ids you have already seen and compare against them on the next run. If you prefer alert feeds for new properties, price rises and cuts, reservations, withdrawals and sales instead of polling, see Alerts. Reference: Search properties; use case: New-supply digest for a farm area.
Does the API return the seller's phone number or email?
No: Property Sourcing never returns a seller's contact details.
A property record carries the property's attributes, address, description and status, every place it is advertised (source, agency, URL, price, status, references) and its dated price and status history. The same holds for High Potential Seller Leads, which identifies properties and their price behaviour, not owners. Contacting owners is your responsibility under local law, including GDPR in the EU. See Get a property.
Does the same request work for Spain, France, Italy, Germany, Portugal and Greece?
Yes: one request body works for every country Property Sourcing covers, and the country comes from the country field, from a country's own location id in location_ids, or from your account's only country.
Filters, sort keys and pagination stay the same between markets. Property Sourcing covers Andorra, the United Arab Emirates, Austria, Belgium, Switzerland, Germany, Spain, France, Greece, Italy, Luxembourg, Monaco, Poland, Portugal, San Marino and the United States; which of these your account may query depends on its entitlement. See Search properties and the use case Price-per-sqm value screen across European markets.
How many results can one search return and how do I page?
One search reaches at most 1,000 results (100 on Free), in pages of up to 100 (page_size, at most 25 on Free), and you fetch each next page by passing the search's cursor to GET /v1/property-sourcing/searches/{cursor}.
A cursor (cur_…) is valid for one hour and bound to your account, and nothing is stored, so re-run the search if the cursor expires. Every page, first or next, costs 100 units. To go beyond the depth limit, split a large area into several searches by location id or price band. See Next page of a search.
What does a price of 0 mean in the results?
A price of 0 is returned as null and means the price is on request.
Treat it as unknown, not free: leave such properties out of price-per-sqm rankings, label them "price on request" in a shortlist, and read the property with expand=listings to see the price recorded for each place it is advertised. Otherwise the price object holds amount, currency and per_sqm. See Search properties.
How much does a search cost?
A search page costs 100 units, which is EUR 4 at EUR 0.04 a unit; reading one property costs 10 units (EUR 0.40) and resolving a link or reference costs 25 units (EUR 1).
Describe searches and next pages also cost 100 units per page. Free includes 1,000 units for 30 days; pay as you go uses prepaid credits bought from EUR 20; Agent is EUR 70 a month; for Custom, talk to Casafari. When credits run out, a 402 payment_required error carries an upgrade_url. See the REST overview.
Can an AI agent call this API directly with a user's prompt?
Yes: Property Sourcing is built for AI agents, and an agent can pass the user's words as tags or a description to POST /v1/property-sourcing/searches/describe, read details with GET /v1/property-sourcing/properties/{property_id} and resolve pasted links with POST /v1/property-sourcing/properties/resolve.
It is REST only, with no MCP tools; the agent learns the operations from /openapi.json, /llms.txt and the Markdown (.md) version of every hub page. Errors are RFC 9457 problem+json, so the agent can act on a 402 payment_required (with an upgrade_url) or a 429 request_limit_reached (naming the window). See Search properties by description and the use case Grounded property tool for an AI assistant.