Real Estate

Rental Listing

/extract/json

Schema for residential rental property listings.

Download the schemareal-estate/rental-listing.json

rental-listing.schema

// names marked ? are optional

address:string// Street address of the rental property. Commonly found in: listing page header, property details section, contact section.
city:string// City where the rental is located. Commonly found in: listing address, breadcrumb navigation, property header.
state:string// State or province of the rental. Commonly found in: listing address, breadcrumb navigation, property header.
zip_code:string// ZIP or postal code of the rental. Commonly found in: listing address line, property details.
latitude?:number// Geographic latitude coordinate. Commonly found in: map embed data, JSON-LD structured data, page metadata.
longitude?:number// Geographic longitude coordinate. Commonly found in: map embed data, JSON-LD structured data, page metadata.
rent_monthly:number// Monthly rent amount. Commonly found in: listing price header, rental details section, pricing box.
rent_currency?:string// ISO 4217 currency code for rent (e.g. USD). Commonly found in: price display, listing details.
deposit_amount?:number// Security deposit amount. Commonly found in: rental terms section, pricing details, lease terms.
lease_term_months?:number// Lease duration in months. Commonly found in: lease terms section, rental details, availability info.
lease_type?:string// Type of lease agreement. Commonly found in: lease terms section, rental details. One of: fixed, month_to_month, other.
available_date?:string// Date the rental is available for move-in. Commonly found in: availability section, listing details, rental terms.
bedrooms:number// Number of bedrooms. Commonly found in: property specs bar, listing summary, header stats.
bathrooms:number// Number of bathrooms. Commonly found in: property specs bar, listing summary, header stats.
sqft?:number// Total interior square footage. Commonly found in: property specs bar, listing summary, property details table.
unit_number?:string// Unit or apartment number. Commonly found in: listing address, property details, contact section.
building_name?:string// Name of the apartment building or complex. Commonly found in: listing header, property name, breadcrumb.
pet_policy?:string// Pet policy for the rental. Commonly found in: rental policies section, amenities list, listing details. One of: allowed, cats_only, no_pets, other.
utilities_included?:string[]// List of utilities included in the rent. Commonly found in: rental features section, utilities section, listing details.
parking_included?:boolean// Whether parking is included with the rental. Commonly found in: amenities section, parking details, rental features.
parking_fee?:number// Monthly parking fee if parking is not included. Commonly found in: parking details, additional fees section, rental terms.
amenities?:string[]// List of amenities available with the rental. Commonly found in: amenities section, building features, listing details.
laundry_type?:string// Type of laundry facilities available. Commonly found in: amenities section, rental features list, property details. One of: in_unit, shared, none, other.
furnished?:boolean// Whether the unit is furnished. Commonly found in: listing header, property details, amenities section.
air_conditioning?:boolean// Whether the unit has air conditioning. Commonly found in: amenities section, property features, listing details.
description?:string// Full text description of the rental. Commonly found in: listing description section, overview text block.
images?:string[]// URLs of rental property images. Commonly found in: photo gallery, image carousel, media section.
contact_phone?:string// Contact phone number for the rental inquiry. Commonly found in: contact section, landlord info, sidebar.
contact_email?:string// Contact email address for the rental inquiry. Commonly found in: contact section, landlord info, apply button.
listing_date?:string// Date the rental was listed. Commonly found in: listing stats, posted date label, metadata.
days_on_market?:number// Number of days the rental has been listed. Commonly found in: listing stats section, property details.
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 Rental Listing 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 Rental Listing

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
rental-listing.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/real-estate/rental-listing.json
import Tabstack from '@tabstack/sdk'
import schema from './rental-listing.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.