H HAVHO Feeds

How feed submission works

Everything you need to get your property listings into the HAVHO app.

1 · The feed contract

Your feed is a single URL that returns a snapshot of your currently live listings as JSON or XML. Both formats carry identical data. The full contract is in the feed specification; the fields are summarised further down this page.

Key points

One properties array, each listing carrying its own agency and agent · a stable id per listing · price in ZAR · 1–21 HTTPS photoUrls · sourceUpdatedAt changes whenever anything changes.

2 · Protect it (optional)

If the feed shouldn't be public, require an X-API-Key header and give us the key when you submit. We send that key on every pull; return 401 without it. Serve the feed over HTTPS only.

3 · Submit and get instant feedback

In your dashboard, add the feed URL. We fetch it immediately and dry-run it through the importer — you'll see the record counts, which listings are importable, and any problems, without anything being saved yet.

4 · Review and go live

Our team checks the submission and connects it. From then on the feed is pulled on a schedule; your listings and removals stay in sync and appear in the HAVHO app.

Custom feeds

If your data isn't in the HAVHO shape, submit a custom integration request instead. Describe the source — a portal export, an API, a legacy schema — and we scope a mapping for it as a separate piece of work.


Field reference

Which fields are required, recommended, optional, and what they look like.

Required Recommended Optional Rentals only  ·  every field is camelCase; send numbers as numbers, dates as ISO-8601.

Property listing — each entry in properties[]
FieldTypeExample / values
idstringRequired"CPT-S-1842" — stable, unique, never reused
agentobjectRequiredthe responsible agent — see the Agent table
agencyobjectRequiredthe owning agency — see the Agency table
providerIdstringOptionalleave out — set automatically from the feed
sourceUpdatedAttimestampOptionalleave out — set automatically when the listing is stored or changes
statusstringOptionalleave out — everything in properties is active
typestringRequired"sale" | "rent"
propertyTypestringRequiredhouse, apartment, townhouse, vacant land, farm/ smallholding, commercial property, industrial property, development
titlestringRequired"Sea-facing apartment in Green Point"
pricenumberRequired4250000 — ZAR, no symbols; rent = monthly
descriptionstringRequiredplain text or simple HTML
addressstringRequired"14 Ocean View Drive, Green Point, Cape Town"
suburbstringRecommended"Green Point"
citystringRecommended"Cape Town"
provincestringRecommended"Western Cape"
bedsintegerOptional2
bathsintegerOptional2
garageintegerOptional1
parkingintegerOptional1
erfSizenumberOptional495 — m²
unitSizenumberOptional98 — m²
photoUrlsarray<string>Required1–21 unique HTTPS URLs, display order; first is primary
featuresarray<string>OptionalFree text, max 100 labels. Known: Pet friendly, Garden, Flatlet, Pool, Security Estate; others (e.g. Borehole) are kept as sent
availableNowbooleanRentalstrue | false
availableFromdateRentals"2026-10-01"
Agency — the agency object inside each property
FieldTypeExample / values
idstringRequired"AGY-77" — permanent, unchanged on rename
namestringRequired"Atlantic Edge Properties"
providerIdstringOptionalleave out — set automatically
sourceUpdatedAttimestampOptionalleave out — set automatically
Agent — the agent object inside each property
FieldTypeExample / values
idstringRequired"AGT-1049" — permanent, unchanged on name/email/office change
fullNamestringRequired"Naledi Mokoena"
emailstringRequired"naledi@atlanticedge.co.za"
phonestringRequired"+27 82 555 0142"
sourceUpdatedAttimestampOptionalleave out — set automatically
locationstringOptional"Cape Town, Atlantic Seaboard"
photoUrlHTTPS URLOptional"https://…/agt-1049.jpg"
ffcNumberstringOptional"FFC-2026-114829"

Removals are automatic: a listing that is no longer in properties is removed on the next sync (only after a complete, readable pull). There is nothing to send.

Full contract with edge cases: field reference  ·  sample-feed.json  ·  sample-feed.xml

Create a provider account