Octopus XML Feed
โ† Octopus Circle
XML FEED ยท PARTNER GUIDE
Partner Access

Octopus XML Feed
Integration Guide

Everything a partner needs to ingest, sync, and maintain Octopus Prime real estate listings โ€” field-by-field, with stable identity rules and update-handling protocols.

60 min

The feed regenerates automatically every hour with a full snapshot of all live listings.

XML (Kyero V3)

Standard Kyero V3 XML schema โ€” ingest with any Kyero-compatible parser or CRM.

<id>

Stable record ID + bedroom suffix. Key your entire catalogue on this field.

EUR (from AED)

Prices converted from AED to EUR at the live exchange rate on every refresh.

01 ยท Overview

What is the Octopus XML Feed?

A normalized, Kyero-compatible XML property feed of Octopus Prime's curated UAE developments. One project expands into multiple property entries โ€” one per bedroom configuration with a listed price.

The feed is regenerated automatically every 60 minutes. Each refresh is a full snapshot โ€” it contains every currently-available listing. There is no delta format; partners are expected to reconcile against their own stored catalogue using the <id> field.

Endpoint: https://octopus.realty/functions/generateKyeroXml
All prices converted AED โ†’ EUR using the live exchange rate.
Bilingual descriptions (EN + ES) included.
Handover date and payment plan carried inside <features>.
Floor plans embedded as floorplan-tagged <image> entries.

02 ยท Structure

Feed Structure

A <root> element wraps Kyero-style metadata and sibling <property> elements.

The high-level shape:

<root>
  <kyero>
    <feed_version>3</feed_version>
  </kyero>

  <property>
    <id>rec0RFLLtuQjVvOnY-2</id>
    <date>2026-03-14 19:48:50</date>
    <ref>REP-MARL-2BR</ref>
    <price>459340</price>
    <price_freq>sale</price_freq>
    <part_ownership>0</part_ownership>
    <leasehold>0</leasehold>
    <new_build>1</new_build>
    <type>apartment</type>
    <town>AL REEM ISLAND</town>
    <province>ABU DHABI</province>
    <country>UAE</country>
    <beds>2</beds>
    <baths>2</baths>
    <pool>1</pool>
    <surface_area><built>81</built><plot>0</plot></surface_area>
    <features><feature>Swimming Pool</feature><feature>Gym</feature><feature>Covered Parking</feature><feature>Handover: 2028-12-31</feature><feature>Payment plan: 20% down payment, 30% during construction, 40% on handover, 10% post-handover over 12 months</feature><feature>Full upfront payment discount: 5%</feature></features>
    <desc><en> ... </en><es> ... </es></desc>
    <images>
      <image id="1"><url>...</url></image>
      <image id="2"><tags><tag>floorplan</tag></tags><url>...</url></image>
    </images>
    <video_url>...</video_url>
    <prime>0</prime>
    <virtual_tour_url>...</virtual_tour_url>
  </property>

  <property> ... </property>
  ...
</root>

The <kyero> block carries the feed version only (Kyero V3 standard). Each <property> is one sellable unit variant.

03 ยท Identity & Stability

How IDs are formed โ€” and what stays stable

The single most important section for partners. Get this wrong and your catalogue will duplicate or drop listings.

<id> โ€” your primary key

Formed as {recordId}-{beds}.

Example: rec0RFLLtuQjVvOnY-2 โ€” record rec0RFLLtuQjVvOnY (the project), bedroom suffix 2.

Stable forever for the lifetime of the listing. Editing price, photos, or descriptions in our source does not change the id. Only deleting the source record removes it.

<ref> โ€” human-readable, semi-stable

Formed as {DEV(3)}-{PROJECT(4)}-{BEDS}.

Example: REP-MARL-2BR โ€” REP (Reportage), MARL (Marlin 2), 2BR.

Do NOT use as primary key. If the developer or project is renamed in our source, the ref changes while the id stays the same. Match on id; store ref for display only.

Rule of thumb

Key on <id>. Store it permanently on first sight. On every sync, look up by id: if it exists โ†’ update fields; if new โ†’ insert; if a stored id is absent from the feed โ†’ the listing was removed, mark unavailable.

A single project with 3 priced bedroom configs produces 3 properties with 3 distinct ids โ€” they are independent listings from a sync perspective.

04 ยท Field Reference

Every field, explained

Stability tags: STABLE (never changes for a given id) ยท SEMI (changes only on rename) ยท CHANGES (overwrite on sync) ยท FIXED (constant across all listings).

FieldTypeStabilityDescription & handling
idstringSTABLE

Internal record ID + bedroom suffix (e.g. rec0RFLLtuQjVvOnY-2). Deterministic. The primary key you must store.

Action: STORE permanently. Use this as your internal unique key for deduplication and updates.

refstringSEMI

Human-readable code: DEV(3)-PROJECT(4)-BEDS (e.g. REP-MARL-2BR). Derived from developer + project names.

Action: Store, but do NOT use as primary key. If developer/project is renamed, ref changes while id stays the same.

datedatetime (UTC)CHANGES

Listing timestamp formatted as YYYY-MM-DD HH:MM:SS (UTC).

Action: Use for sorting/display only. Do not treat as last-modified; price/photo changes do not update this field.

priceinteger (EUR)CHANGES

Price converted from AED to EUR using the current exchange rate. Rounded to whole euros.

Action: OVERWRITE on every sync if value differs. Always store the latest. Never preserve stale price.

price_freqstringFIXED

Always 'sale' โ€” these are listings for sale, not rentals.

Action: Store. Constant.

part_ownershipintegerFIXED

Always 0 โ€” whole-ownership properties, no fractional ownership.

Action: Store. Constant.

leaseholdintegerFIXED

Always 0 โ€” freehold properties (not leasehold).

Action: Store. Constant.

new_buildintegerFIXED

Always 1 (these are all new-build developments).

Action: Store. Constant.

typestringSTABLE

Normalized singular lowercase type: apartment, studio, villa, townhouse, penthouse, or duplex.

Action: Store. Unlikely to change for a given project.

townstringSTABLE

District / area name (e.g. AL REEM ISLAND).

Action: Store. May be refined over time.

provincestringSTABLE

City / emirate (e.g. ABU DHABI, DUBAI).

Action: Store.

countrystringFIXED

Always 'UAE'.

Action: Store. Constant.

bedsintegerSTABLE

Bedroom count for this unit variant (0 = studio, 1โ€“5).

Action: Store. Tied to id suffix โ€” stable.

bathsintegerSTABLE

Bathroom count for this unit variant.

Action: Store. Enriched from source data.

poolintegerFIXED

Always 1 โ€” all developments include pool access.

Action: Store. Constant.

surface_area.builtinteger (mยฒ)STABLE

Built area in square meters (converted from sq ft).

Action: Store. Recalculated only if source size changes.

surface_area.plotinteger (mยฒ)STABLE

Plot area in mยฒ. Real value for villas/townhouses with private land; 0 for apartments.

Action: Store. Treat 0 as 'not applicable' (apartments). Recalculated only if source size changes.

features.featurearray of stringsCHANGES

Amenity / feature list for the project (e.g. Pool, Gym, Covered Parking). Multiple <feature> siblings.

Action: OVERWRITE the whole array on sync. Replace your stored list; do not merge with old values.

desc.en / desc.estext (XML-escaped)CHANGES

Project description in English and Spanish, prefixed with the project name (e.g. 'MARLIN 2. ...'). XML-escaped โ€” no CDATA sections.

Action: OVERWRITE on change. Store both if you serve multilingual markets.

images.imagearray (id + url)CHANGES

Gallery images with sequential id attributes (id="1", id="2"โ€ฆ). Each URL is a stable proxy link ending in .jpg that 302-redirects to the current source image. Placeholder/invalid URLs are filtered out. Floor plans carry a <tags><tag>floorplan</tag></tags> marker.

Action: URLs are stable proxy links (end in .jpg) that always 302-redirect to the current image. Safe to hot-link, or overwrite the array on sync and self-host if you prefer.

tags.tag (floorplan)stringSTABLE

Tag marker inside an <image> element indicating a floor plan resource. Value: 'floorplan'.

Action: Store. Use as a flag to display a 'Floor plan available' badge and link to floor_plans_url.

video_urlURLCHANGES

Standard Kyero video URL โ€” mapped from the project's YouTube link.

Action: OVERWRITE on change. Same value as youtube_video_url.

primeintegerFIXED

Always 0 โ€” Kyero's own 'prime listing' premium flag; not used by Octopus.

Action: Store. Constant.

features (Handover)textCHANGES

Emitted as a <feature>: 'Handover: YYYY-MM-DD'. The expected handover/completion date.

Action: OVERWRITE on change. May shift as construction progresses.

features (Payment plan)textCHANGES

Emitted as a single <feature>: 'Payment plan: X% down payment, Y% during construction, Z% on handover, W% post-handover over N months'. Only present parts are listed.

Action: OVERWRITE on change. Up to four parts: down payment, during construction, on handover, post-handover (+ months).

features (Full upfront payment discount)textCHANGES

Emitted as a <feature>: 'Full upfront payment discount: X%' โ€” only when a full-payment discount applies.

Action: OVERWRITE on change. If absent, no full-payment discount is offered.

virtual_tour_urlURLCHANGES

Kyero V3 standard field. 360ยฐ virtual tour link โ€” allowed providers: Matterport, Nodalview, EyeSpy360, iStaging.

Action: OVERWRITE on change. If absent, no virtual tour is available.

05 ยท Sync Protocol

How to ingest & maintain your catalogue

Treat every refresh as a full snapshot. Reconcile by id. Overwrite mutable fields.

STEP 1

Fetch & parse

Download the full XML every โ‰ค60 min. Parse all <property> elements into a list keyed by id.

STEP 2

Reconcile by id

For each id: if new โ†’ INSERT into your catalogue. If exists โ†’ UPDATE mutable fields. For stored ids absent from feed โ†’ mark unavailable / delete.

STEP 3

Overwrite mutable

price, images, desc, handover (in features), payment plan (in features), video, virtual tour โ€” always replace with latest. Never preserve stale values.

06 ยท Asset Hosting

Asset URLs โ€” all hot-link safe

Every URL in the feed resolves to a stable external resource. No downloads or self-hosting required.

Safe to hot-link

  • <images> โ€” stable proxy URLs (end in .jpg, 302-redirect to the current image).
  • <video_url> โ€” YouTube link, stable.
  • <virtual_tour_url> โ€” virtual tour on a 3rd-party platform (Matterport, Nodalview, etc.).

All URLs in the feed resolve to stable external resources โ€” no download or mirroring required.

How image URLs work โ€” the Octopus proxy

Every <image> URL in the feed is a stable proxy link ending in .jpg (e.g. .../functions/feedImage?p=recXXXX-2&i=1.jpg). On each request the proxy reads the current source URL from our cache and returns a 302 redirect to it. The cache refreshes every 60 minutes, so the proxy always resolves to a valid, fresh image โ€” you can hot-link these URLs directly to your visitors.

In short: every URL in the feed is hot-link-safe โ€” no download required.

07 ยท Update Scenarios

What to do whenโ€ฆ

Real-world situations and the correct handling for each.

๐Ÿ’ฐ

Price changed

The price field updates on the next feed refresh. Overwrite the stored price with the new value. The id and ref remain identical โ€” do not create a duplicate listing.

๐Ÿ–ผ๏ธ

Photos changed / rotated

Image URLs are stable proxy links โ€” the same URL always resolves to the current photo via 302. You can keep the URL as-is on every sync, or overwrite your array if you self-host.

๐Ÿ•ณ๏ธ

A field is missing in an update

A missing optional field (video, virtual tour, floor plan image, post-handover plan) means the data is not available โ€” clear it on your side. Do NOT preserve the previous value. A missing price or size means the unit variant was removed: delete that property from your catalogue.

โž•

New bedroom variant added

A new id appears (e.g. recXXXX-5 for a newly priced 5BR). Treat it as a new listing. Existing ids are untouched.

โž–

A property disappeared from the feed

If an id you stored is no longer present in a full feed refresh, the project/variant was removed or sold out. Mark it unavailable or delete it from your catalogue โ€” do not keep selling it.

๐Ÿ”

Developer or project renamed

ref will change (it is derived from names). id stays the same. Match on id, update the ref + display name. Never duplicate.

๐Ÿ’ฑ

Exchange rate moved

price (EUR) is recomputed from the source AED price ร— current rate on every generation. Expect small price drift between refreshes even if the AED price is unchanged. Always overwrite price.

๐Ÿ—๏ธ

Handover date shifted

handover updates on change. Overwrite and reflect on your listing. No id change.

08 ยท Rules of Engagement

Do's & Don'ts

The short version of everything above. Print it. Pin it.

Do

  • Key everything on the id field โ€” it is stable for the lifetime of the listing.
  • Overwrite mutable fields (price, images, descriptions, handover, payment plans) on every sync.
  • Treat each feed refresh as a full snapshot: compare ids, add new, update existing, remove missing.
  • Hot-link image, video and virtual-tour URLs directly โ€” they are stable. No download or self-hosting is required.
  • Poll the feed at most once per 60 minutes โ€” that is our regeneration cadence.

Don't

  • Do not use ref as your primary key โ€” it can change if names are edited.
  • Do not expect brochure, fact-sheet or furnishing fields โ€” they are not part of the Kyero V3 schema and are not in the feed. Request them via your Octopus contact if needed.
  • Do not preserve stale values for fields that go missing โ€” clear them.
  • Do not keep selling listings whose id has disappeared from the feed.
  • Do not poll more frequently than 60 min โ€” you will get identical payloads.
  • Do not modify or 'improve' descriptions โ€” they are curated by Octopus.

09 ยท Worked Example

Anatomy of one property

A real entry from the feed, annotated.

id

rec0RFLLtuQjVvOnY-2

ref

REP-MARL-2BR

project_name

MARLIN 2

price (EUR)

459.340 โ‚ฌ

payment plan

20% / 30% / 40% / 10%

handover

2028-12-31

This single project (Marlin 2) likely produces multiple property entries in the feed โ€” one per bedroom configuration with a listed price+size. Each has a distinct <id> suffix and is an independent listing for sync purposes.

Need integration support?

If anything in this guide is unclear, or you hit an edge case not covered here, reach out to your Octopus Circle contact. We will help you wire up the feed correctly the first time.

Octopus Prime Real Estate LLC ยท RERA ORN 55603 ยท Licensed in Dubai, UAE

About

Octopus Prime Real Estate LLC โ€” a Dubai-licensed real estate and investment company operating in UAE, Spain & global markets, integrating 8 specialized services.

Services

EXPLORERATLASCOMPASSREAITORVALCOREANCHORACADEMY

Services

EXPLORERATLASCOMPASSREAITOR

Services

VALCOREANCHORACADEMY

Who We Are

Legal

Westburry Tower 1, Office 302, Business Bay, Dubai, UAE

๐Ÿ‡ฆ๐Ÿ‡ช +971 54 273 6204โ€ข๐Ÿ‡ช๐Ÿ‡ธ +34 623 617 779โ€ข๐Ÿ‡ช๐Ÿ‡ธ +34 623 606 107โ€ขcontact@octopus.realtyโ€ข octopus.realty.uaeโ€ข Octopus.Primeโ€ข octopus.prime.uae

ยฉ 2026 Octopus Prime Real Estate LLC. All rights reserved.
Octopus Prime Logo

Octopus Prime Real Estate LLC

Welcome / Bienvenido

๐Ÿ‡ฆ๐Ÿ‡ช Dubai Licensed Agency
๐Ÿ“Š 25+ Years Combined Experience
๐Ÿข All Properties, Best Service
๐ŸŽฏ One Window, All Solutions

๐Ÿ‡ฆ๐Ÿ‡ช Agencia Licenciada en Dubรกi
๐Ÿ“Š Mรกs de 25 Aรฑos de Experiencia
๐Ÿข Todas las Propiedades, Mejor Servicio
๐ŸŽฏ Una Ventana, Todas las Soluciones

Choose your language / Elige tu idioma