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.
<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.
<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.
- Google docsNo dedicated rich result (used by real-estate aggregators and LLMs)
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.
- 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).
- 02
Confusing FloorPlan and Apartment
WrongFloorPlan used for a specific unit (apartment 4B)RightFloorPlan for the layout template; Apartment for unit 4B, linked via accommodationFloorPlanFloorPlan is reusable across many units; Apartment is the specific, individual rental unit. Keep the two separate.
Schema properties in this example
About the example data
The "Standard 2BR" floor plan at The Riverfront Residences in Dunmore, PA.
Comments
Loading comments...