What to publish in the feed and how import reads the fields.
API key, POST /start, POST /latest-log, limits, and optional callback.
agency_uid to the source id Realistimo gave your agency, and broker_id values to agent source ids already linked in Realistimo.offer_uid, category/subcategory, location (internal_id), images, price, description, currency=eur.Geo lookup files: CSV · PostgreSQL dump
Explanation<updated> is the feed version. If it is unchanged since the last successful sync, the import is skipped.<updated> parses as a date older than 30 days, processing stops.<last_update> is present and not newer than the last imported change, most offer fields are skipped (price, agent assignment, and description still update). Empty/missing <last_update> does not trigger that skip.<feed>, brokers in <Brokers>, offers in <offers>.internal_id for the city, village, or neighborhood from the geo files. Without it the location is looked up in the description; if not found, the offer stays unpublished.eur.<updated> and <last_update> on affected offers.Copy this skeleton, replace placeholders, and set current timestamps (YYYY-MM-DD HH:MM:SS, not older than 30 days).
<?xml version="1.0" encoding="UTF-8"?>
<feed>
<updated>YYYY-MM-DD HH:MM:SS</updated>
<agency_uid>YOUR_AGENCY_SOURCE_ID</agency_uid>
<Brokers>
<Broker>
<BrokerID>YOUR_AGENT_SOURCE_ID</BrokerID>
<BrokerName>Ivan Ivanov</BrokerName>
<BrokerPhone>0888000000</BrokerPhone>
<BrokerEmail>[email protected]</BrokerEmail>
</Broker>
</Brokers>
<offers>
<offer>
<offer_uid>offer-1</offer_uid>
<last_update>YYYY-MM-DD HH:MM:SS</last_update>
<description>Test listing</description>
<images>https://example.com/a.jpg</images>
<price>100000</price>
<surface>70</surface>
<currency>eur</currency>
<category>продажби</category>
<subcategory>2-СТАЕН</subcategory>
<internal_id>8545</internal_id>
<broker_id>YOUR_AGENT_SOURCE_ID</broker_id>
</offer>
</offers>
</feed>
Download fuller sample XML (shape reference — still replace ids, timestamps, and content with yours).
| Tag | Description | Notes |
|---|---|---|
<updated> | Feed version / date | Required Must change when content changes; max 30 days old |
<agency_uid> | Agency source id | Required Must match the id configured for your agency |
<agency_name>, <agency_phone>, <agency_email> | Metadata | Optional Not used by import; safe for compatibility |
<result_url> | Callback after import | Optional Realistimo POSTs a latest-log-shaped JSON body; see REST |
<Brokers>/<Broker> provides broker contact details for the feed. Offer broker_id must match an agent source id already linked to your agency in Realistimo (set up during integration). The XML BrokerID values should use the same ids. An offer whose broker_id doesn't match a linked agent is not imported, unless the agency has a fallback agent configured.
| Tag | Notes |
|---|---|
<BrokerID> | Required Agent source id (prefer ≠ agency_uid) |
<BrokerName> | Required Name (+ surname) |
<BrokerPhone>, <BrokerEmail>, <BrokerPhoto> | Optional |
| Tag | Description | Notes |
|---|---|---|
<last_update> | Offer change time | Recommended Date/time or unix timestamp. When present and not newer than the last imported change, most fields are skipped on published offers |
<offer_uid> | Stable id | Required Do not change on edits |
<offer_code> | Reference code | Optional |
<title> | Title fragment | Optional Separate from description |
<description> | Description | Recommended Strongly desired for publication |
<images> | URLs | Required Separator ; |
<price> | Price | Required Digits only, no thousands separator: everything after the first comma or period is cut off (100,000 imports as 100). Spaces are fine. 0 or 1 = “Price negotiable”. Zeroed for parent construction/complex |
<surface> | Area m² | Required Required for most types. Garage and parking space default to 18 m² when the area is missing. For land see plot and land |
<surface_parcel> | Yard/parcel | Optional Yard area in m². Used as the property's area too when surface is missing |
<currency> | Currency | Required eur. If it is missing, the price is shown at almost half its value. |
<category> | продажби / наеми | Required |
<subcategory> | Property type | Required Must be an exact supported value (see below) |
<internal_id> | Geo internal id | Required id for the city, village, or neighborhood from the geo files. If missing or wrong, the location is looked up in the description; if not found, the offer stays unpublished |
<subregion_id> | Mapped location id | Optional Used only by some legacy integrations. Don't rely on it — send internal_id |
<construction_type> | епк / панел / тухла / гредоред | Optional Lowercase only, see values |
<floor>, <floorAll> | Floor / floors | Optional floor value 0 is ignored |
<building_condition> | Construction stage | Optional See values |
<build_year> | YYYY-MM-DD / YYYY | Optional Full date or year only (2005). A year on its own is accepted from 1800 to 10 years ahead and ignored otherwise. Older buildings display as a period (“Before 1989” or “Between 1990 and 2004”) |
<furnished> | 0 / 14 / 23 / 65 | Optional 14 = furnished, 65 = semi furnished, 0 and 23 = unfurnished. A missing or other value is recorded as “Not sure”, even if the description says “furnished” — so always send this tag |
<heating_ids> | IDs via , | Optional 4, 6, and 18 = solid fuel, 35 = AC, 44 = electricity, 46 = city central heating, 80 = gas. Other ids are ignored |
<parking_ids> | 52, 93 | Optional 52 = garage, 93 = parking space. Other ids are ignored |
<rooms_count>, <bedroom_count>, <bath_count> | Counts | Optional See default values |
<exterior_ids> | IDs via , | Optional 42 = elevator, 10 = asphalt road. Other ids are ignored |
<broker_id> | Agent source id | Required Must match an agent linked in Realistimo |
<construction_id> | Parent offer_uid | Optional See building/complex how-to |
<youtube_link> / <youTube_link> | YouTube | Optional |
<virtual_panorama_link> | Virtual tour | Optional Links from Matterport, Giraffe360, CloudPano, Panoee, imot360, Zelanos, Renderimo, Webobook, and Kuula (bit.ly short link) are recognized. Other links are skipped without blocking publication |
<Exclusive> | 0/1 | Optional |
АТЕЛИЕ, ТАВАН · ТАВАН · ЕТАЖ ОТ КЪЩА · КЪЩА · ВИЛАconstruction_id)Send values exactly as listed, in capital letters. An unknown value stops the offer's import.
Completed (or bds-completed) — With Act 16SemiCompleted (or semi_completed) — With Act 15NotCompleted (or not_completed) — With Act 14UnderConstruction — Under construction/with building permitPreConstruction (or pre_construction) — On the green (conceptual project)Case matters.
епк — EPC (creeping formwork)панел — Panelтухла — Brickгредоред — Half timberLowercase only: Тухла is not recognized.
When a tag is missing or empty, import records:
| Tag | Default value |
|---|---|
<heating_ids> | Electricity |
<rooms_count> | For an apartment — based on subcategory (2-СТАЕН = 2), otherwise 1 |
<bedroom_count> | Room count minus 1, at least 1 |
<bath_count> | 1, but not more than the room count |
<building_condition> | With Act 16 |
<construction_type> | Not sure (sale only) |
<furnished> | Not sure (all types) |
<surface> | The area from the description, if stated there; garage and parking space default to 18 m² |
Heating, rooms, bedrooms, bathrooms, construction stage, and construction type are not populated for plots, agricultural land, garages, parking spaces, or new construction.
balcony_count, land_category, parcel_in_regulation, new_construction.subcategory is one of НОВА СГРАДА, СГРАДА НОВО СТРОИТЕЛСТВО, ЗАТВОРЕН КОМПЛЕКС.<construction_id>PARENT_OFFER_UID</construction_id>.There are no separate tags for a plot — it is submitted like a regular offer:
<subcategory>ПАРЦЕЛ</subcategory> for a building plot, or ЗЕМЕДЕЛСКА ЗЕМЯ for agricultural land. Forest, vineyard, pasture, and orchard can't be submitted yet.<surface> is the property area in m². A value between 0 and 1 is read as decares: 0.8 = 800 m² (with a period, not a comma). If surface is missing, surface_parcel is used, then the area from the description.<internal_id> for the city or village is enough — a neighborhood is not required.<exterior_ids>10</exterior_ids>. There are no tags for electricity and water — write exactly “ток и вода на граница” in the (Bulgarian) description (or just “ток на граница” / “вода на граница”). Other wordings may not be recognized.ПАРЦЕЛ gets both “Residential building” and “Commercial building”, while for ЗЕМЕДЕЛСКА ЗЕМЯ the field stays empty.land_category and parcel_in_regulation are ignored.<offer>
<offer_uid>parcel-1</offer_uid>
<last_update>YYYY-MM-DD HH:MM:SS</last_update>
<title>Парцел в село Лозен</title>
<description>Равен парцел с лице към улица. Ток и вода на граница.</description>
<images>https://example.com/p1.jpg;https://example.com/p2.jpg</images>
<price>85000</price>
<surface>1200</surface>
<currency>eur</currency>
<category>продажби</category>
<subcategory>ПАРЦЕЛ</subcategory>
<internal_id>9433</internal_id>
<exterior_ids>10</exterior_ids>
<broker_id>YOUR_AGENT_SOURCE_ID</broker_id>
</offer>
See also
Let Realistimo track for you instead
😃 Install the app and we'll notify you first when a suitable listing appears.
Stay updated on what's new in real estate, statistics, and news from Realistimo, without spam: