Real Estate

Property Sold History

/extract/json

Schema for historical property sale transaction records.

Download the schemareal-estate/property-sold-history.json

property-sold-history.schema

// names marked ? are optional

address:string// Street address of the sold property. Commonly found in: sold listing page, transaction record, public records.
city:string// City of the sold property. Commonly found in: sold listing page, property history section, public records.
state:string// State or province of the sold property. Commonly found in: sold listing page, transaction record, public records.
zip_code:string// ZIP or postal code of the sold property. Commonly found in: listing address, property details.
latitude?:number// Geographic latitude coordinate. Commonly found in: map embed data, JSON-LD structured data.
longitude?:number// Geographic longitude coordinate. Commonly found in: map embed data, JSON-LD structured data.
sale_price:number// Final sale price of the property. Commonly found in: sold price display, transaction history table, property history section.
sale_currency?:string// ISO 4217 currency code for the sale price. Commonly found in: price display, transaction details.
sale_date:string// Date the property sale closed. Commonly found in: sold date display, transaction history table, property history section.
property_type?:string// Type of property (e.g., single_family, condo). Commonly found in: property details, listing type badge, public records.
bedrooms?:number// Number of bedrooms. Commonly found in: property specs, listing summary, public records.
bathrooms?:number// Number of bathrooms. Commonly found in: property specs, listing summary, public records.
sqft?:number// Total interior square footage. Commonly found in: property specs, listing summary, public records.
price_per_sqft?:number// Sale price per square foot. Commonly found in: transaction details, property stats, listing data.
prior_sale_price?:number// Price from the prior sale of this property. Commonly found in: price history section, property history table.
prior_sale_date?:string// Date of the prior sale. Commonly found in: price history section, property history table.
price_change_pct?:number// Percentage change in price from prior sale. Commonly found in: price history section, property value change indicator.
days_on_market?:number// Number of days the property was on the market before sale. Commonly found in: transaction details, listing history, MLS data.
list_price?:number// Original listing price before sale. Commonly found in: price history section, transaction details, listing history.
list_to_sale_ratio?:number// Ratio of sale price to list price. Commonly found in: transaction details, listing history stats.
financing_type?:string// Type of financing used in the transaction. Commonly found in: transaction details, deed records, public records. One of: conventional, cash, FHA, VA, other.
mls_id?:string// MLS identifier for the listing. Commonly found in: listing details, MLS data block, transaction record.
page_title?:string// Title of the source page. Tabstack auto-fills this from page metadata when left empty.
favicon?:string// Favicon URL of the source page. Tabstack auto-fills this from page metadata when left empty.

Try it live

A sample Property Sold History document, generated from the schema. Edit it, or paste a real response, and see it checked against the schema instantly. It runs in your browser, nothing is sent anywhere.

your-output.json
validation

Valid, matches Property Sold History

Every required field is present and each value matches its type. Extra fields are allowed. A field the page does not carry is not guaranteed to come back as null, so check values rather than only checking for null.

/extract/json

Copy-paste usage

The same call in TypeScript, Python, and curl. Point it at your own URL and go. The schema drives the response, so you get back the fields you asked for instead of a page to parse.

Features

  • Typed TypeScript and Python SDKs
  • One call, no parsing code and no second LLM pass
  • The same field names on every request, even when the page layout changes
property-sold-history.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/real-estate/property-sold-history.json
import Tabstack from '@tabstack/sdk'
import schema from './property-sold-history.json' with { type: 'json' }

const client = new Tabstack() // reads TABSTACK_API_KEY from the environment

try {
  const data = await client.extract.json({
    url: 'https://example.com/listing/123',
    json_schema: schema,
    effort: 'standard', // 'min' | 'standard' | 'max'
  })

  console.log(data)
} catch (err) {
  console.error('Extraction failed:', err)
}

Ship this schema in one call.

Pass a URL, get matching JSON back. Free to start, no extraction layer to maintain.