XooCode(){

FloorPlan

FloorPlan is a pending Intangible for the layout of a housing unit or a whole residential building. It carries the bulk of structured real-estate data in schema.org: 12 direct properties covering room counts, bathroom breakdowns, square footage, amenities, and availability.

  • floorSize (QuantitativeValue, typically in SQF or MTK).
  • numberOfRooms, numberOfBedrooms, numberOfBathroomsTotal, numberOfFullBathrooms, numberOfPartialBathrooms.
  • numberOfAccommodationUnits (total in a building) / numberOfAvailableAccommodationUnits (currently available).
  • amenityFeature (LocationFeatureSpecification, repeat for each amenity).
  • layoutImage (ImageObject or URL to the floor plan diagram).
  • petsAllowed, isPlanForApartment.

Full example of schema.org/FloorPlan json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/FloorPlan
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FloorPlan",
  "name": "Standard 2BR",
  "description": "Corner-unit two-bedroom layout with open kitchen, shared bathroom, and balcony.",
  "floorSize": { "@type": "QuantitativeValue", "value": 920, "unitCode": "FTK" },
  "numberOfRooms": 4,
  "numberOfBedrooms": 2,
  "numberOfBathroomsTotal": 2,
  "numberOfFullBathrooms": 1,
  "numberOfPartialBathrooms": 1,
  "numberOfAccommodationUnits": { "@type": "QuantitativeValue", "value": 18 },
  "numberOfAvailableAccommodationUnits": { "@type": "QuantitativeValue", "value": 2 },
  "petsAllowed": true,
  "layoutImage": "https://xoocode.com/homes/riverfront/plans/standard-2br.png",
  "amenityFeature": [
    { "@type": "LocationFeatureSpecification", "name": "In-unit laundry", "value": true },
    { "@type": "LocationFeatureSpecification", "name": "Balcony", "value": true },
    { "@type": "LocationFeatureSpecification", "name": "Central air", "value": true }
  ]
}
</script>

FloorPlan vs Accommodation

FloorPlan is the layout template, Accommodation (Apartment, House, etc.) is the specific unit. A building with three floor plans (1BR, 2BR, 3BR) has three FloorPlan entities; each of its 48 units is an Accommodation linked to the FloorPlan via accommodationFloorPlan.

Minimal valid version

The smallest markup that still produces a valid FloorPlan entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/FloorPlan (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FloorPlan",
  "name": "Standard 2BR",
  "numberOfBedrooms": 2,
  "numberOfBathroomsTotal": 2
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

  • No dedicated rich result (used by real-estate aggregators and LLMs)
    Google docs

Common FloorPlan mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    floorSize without a unitCode

    Wrong
    "floorSize": { "@type": "QuantitativeValue", "value": 920 }
    Right
    "floorSize": { "@type": "QuantitativeValue", "value": 920, "unitCode": "FTK" } (square feet) or "MTK" (square metres)

    Without a unitCode, 920 could mean square feet, square metres, or tatami mats. UN/CEFACT codes: FTK (square foot), MTK (square metre).

  2. 02

    Confusing FloorPlan and Apartment

    Wrong
    FloorPlan used for a specific unit (apartment 4B)
    Right
    FloorPlan for the layout template; Apartment for unit 4B, linked via accommodationFloorPlan

    FloorPlan is reusable across many units; Apartment is the specific, individual rental unit. Keep the two separate.

About the example data

The "Standard 2BR" floor plan at The Riverfront Residences in Dunmore, PA.

Comments

Loading comments...

Leave a comment