API v1: Property feed for your website
Read buildings, units, photos, floor plans and public custom fields from one paginated JSON feed — the recommended source for an agency's own website.
If you build your own website, read your listings from Avensa directly instead of exporting files. The property feed returns buildings with their units nested inside, their photos and floor plans, and only the custom fields you marked Public.
Requires an API key with the feeds:read scope (Settings → API → Create key).
Recommended request
GET /api/v1/feeds/properties?kind=buildings&include=units,images,floor_plans,custom_fields&in_feed=true&status=any Authorization: Bearer pk_live_abc123.def456
Follow next_url until the response no longer has one. Send the ETag you received as If-None-Match on the next poll: an unchanged page answers 304 Not Modified with no body.
| Parameter | Notes |
|---|---|
kind | buildings (buildings and developments), units (records with a parent building), all (default, no filter) |
include | Comma-separated: units nests a building's units under _avensa.units; images; floor_plans; custom_fields (public fields only) |
status | One or more statuses (status=available,reserved), or any. Default available. Also applied to nested units |
in_feed | true returns only records with Include in feed switched on. Also applied to nested units |
building_id | One building: with kind=units its units, with kind=buildings the building itself |
property_type | e.g. apartment, building |
limit | Top-level items per page, default 100, max 500. Nested units do not count |
cursor / offset | Use the cursor from next_url (preferred); offset also works |
format | json (default, JSON Feed 1.1), rss, xml. RSS and XML carry top-level records only |
Response
A JSON Feed 1.1 document. Everything Avensa-specific is in each item's _avensa block:
{
"version": "https://jsonfeed.org/version/1.1",
"title": "Avensa Property Listings",
"next_url": "https://app.example.com/api/v1/feeds/properties?kind=buildings&include=units%2Cimages%2Cfloor_plans%2Ccustom_fields&cursor=eyJ1Ijoi…",
"items": [
{
"id": "3f1c…",
"title": "Residence Park Banishora",
"date_modified": "2026-09-20T12:31:00+00:00",
"image": "https://cdn.example.com/park/cover.jpg",
"_avensa": {
"property_type": "building",
"is_building": true,
"status": "available",
"city": "Sofia",
"neighborhood": "Banishora",
"location": {
"city": { "id": "9a0e…", "name_bg": "София", "name_en": "Sofia" },
"neighborhood": { "id": "51d2…", "name_bg": "Банишора", "name_en": "Banishora" }
},
"act_status": "ACT16",
"custom_fields": {
"completion_stage": { "label": "Етап на строителство", "type": "select", "value": "act16", "display": "Акт 16" }
},
"images": [
{ "id": "a1b2…", "url": "https://cdn.example.com/park/facade.jpg", "thumbnail_url": "https://cdn.example.com/park/facade-thumb.jpg", "width": 1600, "height": 1067, "caption": "Фасада", "shot_type": "exterior", "is_cover": true, "sort_order": 0, "source": "own" }
],
"floor_plans": [
{ "id": "0c77…", "url": "https://cdn.example.com/park/floor-3.pdf", "plan_type": "floor", "floor_number": 3, "display_name": "Етаж 3", "mime_type": "application/pdf", "source": "own" }
],
"units": [
{
"id": "7b90…",
"title": "Двустаен апартамент A12",
"_avensa": {
"parent_property_id": "3f1c…",
"unit_number": "A12",
"floor_number": 3,
"entrance": "A",
"property_subtype": "1_bed",
"price": 148000,
"currency": "EUR",
"price_per_sqm": 1850,
"area_total": 80,
"area_net": 64.5,
"images": [
{ "id": "c3d4…", "url": "https://cdn.example.com/park/a12-kitchen-wm.jpg", "thumbnail_url": null, "room_type": "kitchen", "source": "building_unit" }
],
"floor_plans": [
{ "id": "e41a…", "plan_type": "unit", "source": "building_unit", "url": "https://cdn.example.com/park/a12.pdf" },
{ "id": "0c77…", "plan_type": "floor", "source": "building_floor", "url": "https://cdn.example.com/park/floor-3.pdf" }
]
}
}
]
}
}
]
}
Other _avensa fields: transaction_type, bedrooms, bathrooms, title_bg, title_en, description_bg, description_en, country, lat, lng, show_exact_address, updated_at.
- Location names.
cityandneighborhoodare Latin text. For a Bulgarian site uselocation.city.name_bg/location.neighborhood.name_bg. - Photos. Ordered like the public share page: cover first, then your sort order. When a photo is set to use its watermarked version,
urlis the watermarked file andthumbnail_urlisnull(the thumbnail is made from the original). A building gets its gallery: untagged photos and photos tagged Building or Common areas. A unit gets its own photos plus the building photos you assigned to that unit (source: "building_unit") or to its floor (source: "building_floor"). Building-wide photos are not repeated on every unit; when a unit has none of its own, show the building's photos, as the Avensa unit panel does. - Floor plans. A unit gets its own plans, plus the building's plan tagged to that unit (
source: "building_unit"), plus the building's plan for its floor (source: "building_floor").
What never leaves Avensa
- Custom fields that are not marked Public. Mark a field public in Settings → Custom fields, or through the API:
PATCH /api/v1/custom-fields/{id}with{ "is_public": true }(needs thecustom-fields:writescope). New fields are internal until you do this. - Internal notes, draft units, owners and contacts, and commission terms.
- Properties whose active listing agreement does not allow portals. When that agreement is on a building, none of its units are included either.