Property Floorplan Extractor avatar

Property Floorplan Extractor

Pricing

from $1.12 / 1,000 floorplan analyzeds

Go to Apify Store
Property Floorplan Extractor

Property Floorplan Extractor

Extract room-by-room data from property floorplans with AI vision. Paste a Rightmove or OnTheMarket listing or search URL — or any floorplan image — and get room names, room types, size in m², printed dimensions, storey, bedroom count, total floor area, plus balcony and garden flags.

Pricing

from $1.12 / 1,000 floorplan analyzeds

Rating

0.0

(0)

Developer

rainminer

rainminer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Categories

Share

The Property Floorplan Extractor is an Apify Actor that turns a property listing URL into structured, room-by-room data read straight from the listing's floorplan image. Paste a Rightmove or OnTheMarket link and get back every labelled room with its type, size in m², printed dimensions, and storey — plus bedroom count, total floor area, and balcony/garden flags.

Room-level data is the most valuable information on a property listing and the only part that is never published as text. Agents render it once, into a floorplan drawing, and it stays locked in that image. This Actor reads the drawing with AI vision and gives you the numbers as JSON.


Key Features

  • Listing URL in, rooms out: Go straight from a live listing page to structured rooms — no manual image hunting, no separate OCR step.
  • Search URLs supported: Point it at a search results page and it walks the pagination, opening every listing that publishes a floorplan.
  • Per-room measurements: Room name as printed, room type, area in m², the original dimension text, and the storey each room sits on.
  • Property-level rollups: totalRooms, bedroomCount, totalFloorAreaSqm, floors, hasBalcony, and hasGarden.
  • Bring your own images: floorplanImageUrls accepts any public floorplan image, so the Actor still works for portals it does not support natively.
  • Cost-aware crawling: Listings that never uploaded a plan are skipped before they are fetched.
  • No API key required: AI vision is included — you do not supply or pay for your own model key.
  • No login required: Works entirely on publicly reachable listing pages.

Why Extract Floorplan Data?

Portals publish a price, a postcode, and a bedroom count. They do not publish the size of the kitchen, whether the third bedroom actually fits a double bed, or how the space is distributed across storeys. That detail exists only inside the floorplan image, which means it is invisible to every filter, model, and spreadsheet downstream.

  • Valuation and AVMs: Price per m² and room mix are far stronger predictors than bedroom count alone.
  • Property portals and search: Build filters buyers actually want — "kitchen over 20 m²", "double bedrooms only".
  • Lettings, BTR and HMO analytics: Check room sizes against licensing minimums across a whole portfolio.
  • Renovation and construction: Estimate flooring, heating loads, and material quantities from room areas.
  • Proptech and iBuyers: Normalise heterogeneous listings into a comparable room-level schema.
  • Market research: Track how room mix and floor area vary by area, price band, and property age.

Who Is It For?

  • Proptech and portal teams enriching listing databases with room-level attributes.
  • Data scientists and quants building valuation, AVM, or comparables models.
  • Letting agents and BTR operators auditing room sizes at scale.
  • Surveyors and renovation companies pre-qualifying jobs from floor areas.
  • Researchers studying housing stock, space efficiency, and layout trends.

How It Works

  1. You supply Rightmove or OnTheMarket listing URLs, search URLs, or direct floorplan image URLs.
  2. Search pages are read and every listing that publishes a floorplan is queued; listings without one are skipped.
  3. Each listing page is parsed for its floorplan image and headline metadata (address, price, property type).
  4. The floorplan image is downloaded and analyzed by AI vision, which transcribes every labelled room.
  5. Areas are taken from the plan where printed, and otherwise derived from the printed dimensions.
  6. One dataset row is pushed per floorplan image, with the floorplan set as imageUrl so it renders as a thumbnail in the Apify Console.

Supported Sites

SiteListing pagesSearch pages
rightmove.co.ukYesYes
onthemarket.comYesYes
Any public floorplan imagevia floorplanImageUrls

Input Schema

{
"startUrls": [
{
"url": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490"
}
],
"maxItems": 3,
"maxFloorplansPerListing": 2,
"proxyConfiguration": { "useApifyProxy": false }
}

All fields are optional, but you must supply either startUrls or floorplanImageUrls.

FieldTypeDefaultDescription
startUrlsArray of objectsRightmove or OnTheMarket listing or search URLs
floorplanImageUrlsArray of stringsDirect links to floorplan images (JPG, PNG, WebP, GIF)
maxItemsInteger10Maximum floorplan results per start URL
maxFloorplansPerListingInteger2Maximum floorplan images analyzed per listing
proxyConfigurationObject{ "useApifyProxy": false }Apify Proxy settings; not required

Output Schema

One dataset item per analyzed floorplan image:

{
"listingUrl": "https://www.rightmove.co.uk/properties/88326909",
"portal": "rightmove",
"listingId": "88326909",
"address": "Edith Road, West Kensington, London, W14",
"price": "£500,000",
"listingBedrooms": 1,
"propertyType": "Flat",
"floorplanImageUrl": "https://media.rightmove.co.uk/property-floorplan/7ae619d97/88326909/7ae619d97d270b2117d3ebbecbf6f129.png",
"imageUrl": "https://media.rightmove.co.uk/property-floorplan/7ae619d97/88326909/7ae619d97d270b2117d3ebbecbf6f129.png",
"rooms": [
{
"name": "RECEPTION ROOM",
"roomType": "living",
"areaSqm": 16.7,
"dimensions": "14'0 x 12'10 4.27m x 3.91m",
"floor": "First Floor"
},
{
"name": "KITCHEN",
"roomType": "kitchen",
"areaSqm": 4.89,
"dimensions": "9'10 x 5'4 3.00m x 1.63m",
"floor": "First Floor"
},
{
"name": "BEDROOM",
"roomType": "bedroom",
"areaSqm": 15.68,
"dimensions": "13'2 x 12'10 4.01m x 3.91m",
"floor": "First Floor"
},
{
"name": "BALCONY",
"roomType": "outdoor",
"areaSqm": null,
"dimensions": null,
"floor": "First Floor"
}
],
"totalRooms": 4,
"bedroomCount": 1,
"totalFloorAreaSqm": 50.1,
"floors": 1,
"hasBalcony": true,
"hasGarden": false,
"confidence": "high",
"scrapedAt": "2026-08-01T07:29:10.423Z"
}

Field reference

FieldTypeDescription
listingUrlString | nullThe listing page; null in direct-image mode
portalStringrightmove, onthemarket, or direct-image
listingIdString | nullPortal listing identifier
addressString | nullDisplay address from the listing
priceString | nullAdvertised price as shown
listingBedroomsNumber | nullBedrooms advertised by the agent — useful to cross-check bedroomCount
propertyTypeString | nulle.g. Flat, Detached, Terraced house
floorplanImageUrlStringThe analyzed floorplan image
imageUrlStringSame image, for Console thumbnail rendering
roomsArrayOne entry per labelled room (see below)
totalRoomsNumberrooms.length
bedroomCountNumberRooms classified as bedroom
totalFloorAreaSqmNumber | nullPrinted total when the plan states one, otherwise the sum of measured rooms
floorsNumberDistinct storeys on the plan
hasBalconyBooleanA balcony or terrace is drawn on the plan
hasGardenBooleanA garden or private outdoor ground is drawn on the plan
confidenceStringhigh, medium, or low — how legible the plan was
scrapedAtStringISO 8601 timestamp

rooms[]

FieldTypeDescription
nameStringRoom label exactly as printed, in the original language
roomTypeStringbedroom, bathroom, kitchen, living, dining, hall, storage, office, garage, outdoor, other
areaSqmNumber | nullPrinted area, or derived from the printed dimensions
dimensionsString | nullDimension text as printed on the plan
floorString | nullStorey heading, e.g. Ground Floor, First Floor

Pricing

This Actor uses pay-per-event pricing:

EventCharged when
listing-scrapedA listing page is read for floorplan images
floorplan-analyzedA floorplan image is sent to the AI vision model
room-extractedPer individual room extracted from a floorplan

Listings without a published floorplan cost only a single listing-scraped event, and Rightmove search results are filtered before fetching so plan-less listings are mostly skipped entirely.


Notes and Limitations

  • One row per floorplan image, not per property. Larger homes often publish a separate plan per storey. Raise maxFloorplansPerListing and group rows by listingId to assemble the whole property.
  • bedroomCount reflects the plan, not the advert. It counts rooms labelled as bedrooms on the drawing, so it can differ from listingBedrooms when a plan labels staff bedrooms, studies, or annexe rooms that the agent does not market. Compare the two fields to spot these cases.
  • Only labelled rooms are returned. Unlabelled spaces are deliberately not invented, so a plan that draws a bathroom without naming it will not produce a bathroom row.
  • Areas are as accurate as the plan. Floorplans are marketing drawings; agents state that measurements are approximate. Rooms with no printed dimensions return areaSqm: null.
  • totalFloorAreaSqm falls back to a sum. When the plan prints no gross internal area, the value is the sum of measured rooms, which excludes walls and unlabelled space and so reads low.
  • Check confidence. Low-resolution, rotated, or heavily compressed plans return low; filter on this field for high-precision pipelines.
  • Public data only. No login, account, or user-supplied credentials are involved.

Image Credit

Image credit: rightmove.co.uk and onthemarket.com