List the user's deal-flow listings
const url = 'https://app-api.landinsights.co/api/public/v1/deal-flow/listings/';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://app-api.landinsights.co/api/public/v1/deal-flow/listings/ \ --header 'Authorization: Bearer <token>'Returns every listing on the authenticated user’s Deal Flow (disposition) board — the deals they are actively selling — with the property basics, the engine’s listing grade and pricing signals, and each deal’s financials and key dates. Scoped to the caller’s own listings.
The property fields (address, county, state, acreage, price, days_on_market, traction_score) are fetched from the live listing and are null for a few seconds after a deal is added, until that fetch finishes.
Cost: free.
Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”A single deal-flow (disposition) listing as shown on the user’s Deal Flow board: the property and listing basics, the engine’s grade and pricing signals, and the deal’s financials and key dates.
object
Stable identifier for the listing.
Street address of the listed property. Null until the listing fetch completes.
County the property is in. Null until the listing fetch completes.
Two-letter US state code for the property.
Lot size in acres, per the listing.
Current list price of the property, in US dollars.
Number of days the listing has been on market.
Buyer-interest score from 0–100, derived from listing views and saves — higher means more traction. Null until the listing fetch completes; 0 until any views or saves have been recorded.
Letter grade for the listing’s quality (e.g. A+, B-). Blank until the listing has been graded.
Price competitiveness on a 0–100 scale: the share of active listings in the same county priced higher per acre than this one. Higher means this listing is priced more competitively. Null until it has been computed.
The engine’s recommended next move while the listing is in the listed stage: drop (cut the price — see suggested_action_price for the target), relist, or hold. Empty when there is no active recommendation (for example, once the deal moves past the listed stage).
Recommended new list price, in US dollars, when suggested_action is drop. Null otherwise.
Stage on the Deal Flow board: one of listed, offer_received, offer_accepted, in_title, sold, on_hold, canceled; empty if no stage has been set.
Deal structure: cash_close or double_close.
Estimated profit on the deal, in US dollars: estimated sell price minus total spend (purchase price plus agent fee, misc, and closing costs).
Date the purchase contract expires. Most relevant for double closes; may be null.
Expected or actual closing date for the deal. May be null.
Examples
One active listing
[ { "id": "3f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c", "address": "0 County Rd 21", "county": "Costilla", "state": "CO", "acreage": 5, "price": 12500, "days_on_market": 47, "traction_score": 38, "listing_grade": "B+", "price_advantage": 62, "suggested_action": "drop", "suggested_action_price": "11250.00", "status": "listed", "deal_type": "double_close", "expected_profit": "4200.00", "contract_expiration_date": "2026-09-15", "closing_date": "2026-09-30" }]Validation error.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, usage_backstop_reached, payment_required, validation_error, unprocessable, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Missing or invalid credentials.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, usage_backstop_reached, payment_required, validation_error, unprocessable, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}A Pro subscription or higher API tier is required.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, usage_backstop_reached, payment_required, validation_error, unprocessable, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Authenticated but not permitted.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, usage_backstop_reached, payment_required, validation_error, unprocessable, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Resource not found.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, usage_backstop_reached, payment_required, validation_error, unprocessable, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Rate limit exceeded.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, usage_backstop_reached, payment_required, validation_error, unprocessable, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Internal error.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, usage_backstop_reached, payment_required, validation_error, unprocessable, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}