Lead feed (paid, priced per lead) — with a FREE preview
The Machine Storefront's lead feed: the qualified target list for one SIGNAL in one STATE, delivered as lead records and priced PER LEAD.
Each lead carries its canonical_id (state:county:APN), owner, assessed value, that signal's own strength fields (years held, land/improvement ratio, flip profit, portfolio size, ...), a deterministic lead_score (1-100) and provenance {as_of, source}.
PRICE: per_lead = clamp($0.25 x S(signal strength) x V(asset-value tier), $0.05, $1.00); total = min(count x per_lead, $20). You pay for the leads DELIVERED -- min(matching rows, limit) -- and an empty result is never charged for. The exact total is advertised in the 402's accepts[0].maxAmountRequired (USDC atomic units, 6 decimals).
FREE PREVIEW: add preview=true for the exact count, the exact quote and up to three MASKED sample leads (APN truncated to state:county, house number stripped, owner name and every other people field withheld). No payment, no API key required; anonymous callers are IP-throttled at the free tier. The anonymous security alternative ({}) applies to the preview ONLY.
ACCOUNT OR PAYMENT FOR DELIVERY: a lead is an owner's name and mailing address by area -- people data. It is delivered to a PropRaven ACCOUNT (API key Authorization: Bearer pz_..., MCP OAuth token or signed-in session) and to a PAID pull without one: the leads are returned only once the x402 payment SETTLES or the X-CREDIT-TOKEN debit succeeds. An unpaid (non-preview) pull without an account is refused with HTTP 401 code: "account_required", reason: "people_data_requires_account".
PAID ACCESS (preview omitted) requires ONE of: (a) x402 pay-per-call -- send a base64 signed x402 PaymentPayload in the X-PAYMENT header (account credentials optional); on a successful build the leads are returned and the on-chain settlement receipt is in the X-PAYMENT-RESPONSE response header. (b) A prepaid X-CREDIT-TOKEN balance. (c) A genuine PAID PropRaven subscription entitlement (lead feeds are included). Being merely authenticated is NOT sufficient. (d) Anything else -> HTTP 402 whose accepts array carries the exact payment requirements for this pull.
OWNER CONTACT: each delivered lead carries owner_contact -- the owner's best mailing address, read from ONE address column family of the record with its ZIP, flagged mail_ready. mail_ready=true narrows the pull to parcels whose record carries a complete one-family mailing address (parcel-grain signals only). Each delivery is recorded in PropRaven's people-data access log before it is returned; if the log is unavailable the delivery is refused (503) and nothing is charged.
BOUNDED READS: every read carries a statement timeout (10 s with mail_ready, 25 s otherwise). A pull too broad to finish returns 503 code: "lead_read_timeout" telling you to narrow it (add county); nothing is charged.
NOTE on distressed: an assessment-derived cohort (a structure on the books assessed at a nominal value, on land that carries real value). It is NOT a pre-foreclosure, tax-lien or lis-pendens feed.
Request
- Base URL: https://propraven.com
- URL: https://propraven.com/api/v1/leads/find
- Auth: one of:
- HTTP bearer
- none
Query parameters
Which qualified cohort to pull from. Priced by strength: absentee (1.0x, widest) < long_hold (1.1x) < entity_owned (1.15x) < portfolio_owner (1.25x) < high_land_ratio (1.4x) < flip (1.6x) < distressed (1.9x).
REQUIRED 2-letter USPS state code. Every pull is pruned to one state partition.
3-digit within-state code ("183") or 5-digit state+county ("37183").
5-digit ZIP. Supported only on the long_hold and entity_owned cohorts (the other source relations carry no ZIP column) -- a zip on any other signal returns 400.
Minimum assessed value (sell price for the flip cohort), USD.
Maximum assessed value (sell price for the flip cohort), USD.
How many leads to buy. Default 25, max 200. You pay for min(matching rows, limit).
true -> the FREE preview (count + quote + up to three masked sample leads, no payment). Omit or false -> the paid call.
true -> only parcels whose record carries a complete mailing address (street, city, state, 5-digit ZIP) in ONE column family. Parcel-grain signals only (400 on portfolio_owner). Each delivered lead's owner_contact.mail_ready is the final word. Narrow with county in large states: the filter checks every candidate.
true = only parcels on a treasurer's or tax collector's property-tax delinquency / lien-sale / tax-sale list as of today (status delinquent or in_sale; redeemed and sold never count; expired records never used). Pilot jurisdictions only: a parcel elsewhere never matches. false or absent = no filter. Requires an account, preview included (401 account_required otherwise). Parcel-grain signals only (400 on portfolio_owner).
Headers
x402 payment, with or without account credentials (a pull without an account receives the leads only once the payment settles): a base64-encoded signed x402 PaymentPayload (EIP-3009 transferWithAuthorization over USDC on Base). The signed amount must equal this pull's quoted maxAmountRequired (see the 402 body, or call with preview=true first). Ignored on a preview call, which is free.
Response
Either the FREE masked preview (preview=true), the delivered lead set (paid), or an honest empty result (count 0 -- never charged for).
Example response
{
"quote": {
"per_lead": {
"amount": "5.00",
"currency": "USD"
},
"per_lead_usd": 0.25,
"total": {
"amount": "5.00",
"currency": "USD"
},
"total_usd": 6.25,
"total_atomic_usdc": "6250000",
"asset": "USDC",
"breakdown": {
"base_per_lead": 0.25
}
},
"sample": [
{
"canonical_id": "37:119:12104406",
"provenance": {
"source": "PropRaven absentee_owners (serving epoch 2026-09-03)"
}
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.