This page details the specification of an XML feed to send property information to Kyero.com ( en español)
Last modified 11th August 2017 - V3.4
Your XML feed will contain all the property information for one Kyero.com advertiser account. We match the feed URL you give us to an advertiser account once we validate and approve the feed.
Each feed URL can only contain property information for a single Kyero account or estate agent. If you are creating feeds for multiple estate agents, each one will need to be available on a unique URL.
If you wish to password protect a feed so that it is not publicly available - simply provide the feed URL in one of the following formats:
We cannot accept a feed URL that requires any manual intervention (such as clicking on a 'confirm' button) because our property feed process is completely automatic.
Your property feed must be an absolute feed of all your property information - not an incremental one. Each time we process a feed, we evaluate it against every property for that account in the Kyero database. Your feed must contain ALL the properties that you want ADDED or UPDATED. It should not contain any properties that you want to DELETE.
When a property is ADDED to your database, there will be a new property record for it in your feed. It will be INSERTED to our database and we will process and store all associated images
If a property is UPDATED in your database, the <date> tag in your feed should also change. When we see a change in the <date> tag, the property will be UPDATED in our database and we will process all associated images. Please note, if the date does not change, we will not update the property, and if the date is invalid or does not conform to this specification, the XML feed will be updated weekly rather than daily.
If a property is DELETED from your database, there will be no property record for it in your feed. We DELETE properties and any associated images from our database when there is no matching property record in your feed.
In order to correctly insert, update or delete, we must consistently identify each property as a unique entity in your feed. We do this using the <id> tag which must consistently and uniquely identify each one of your properties.
You must code your feed to break new tags onto new lines (there's a single-line character limit that our parser can handle) - it also makes it much easier for us to read and troubleshoot your feed. Use \n in the script that creates your XML output.When you view the XML output in a text editor - you should see each tag on a new line.
To force line breaks in the description text for each property you can use the UTF-8 numeric entity
in the descriptions themselves.
In the detailed notes we tell you what tags to use, what they can contain and whether a tag is mandatory or optional.
A tag can be 'optional' or 'mandatory' and can contain 'alpha', 'alphanumeric' or 'numeric' characters. The <date> tag is the only exception where it must be formatted as datetime YYYY-MM-DD HH:MM:SS
If a tag is permitted to be empty (optional tags) - this can be coded in one of four ways:
All tags are CaSe SenSiTiVe and MUST be in lower case throughout: <DESC> is NOT the same as <desc>
Do not include a 'no image' or 'photo coming soon' image URL for properties where there are no actual property photos.
Do not use any [[CDATA]] tags in your feed as a 'quick fix' for character encoding problems, these will be stripped during import. Please refer to the section About Character Encoding.
The structure of a fully featured property record is detailed in the right-hand margin of this page. Your feed will contain multiple properties by repeating the structure enclosed by <property></property> for each one.
There are five characters which must be encoded if you want to use them in your feed. This is because they have predefined functions in XML: (you could use their numeric entities too).
- To force line breaks in descriptions.
For example: <image id="9"> - the quotes are not encoded because they're delimiting an XML attribute within an XML tag.
<desc>A "beautiful" house</desc> - the quotes are encoded because they're part of a text string.
<property> should not be encoded as <property> or
The text string bed & breakfast must be encoded as bed & breakfast or bed
& breakfast - in the first instance using a XML entity and, in the second, a numeric entity.
In this example, the XML entity & is the same as it's HTML equivalent. However, in general, HTML entities should not be used in your feed. There should be no HTML entities, tags or formatting anywhere within the feed.
Before submitting a feed to Kyero.com, test it using this character validator, selecting UTF-8 as the encoding scheme.
Confused about character encoding? - Joel on Software has a great article on the subject.
Once you have a feed ready for processing, test it initially by opening it in a Mozilla browser ( Firefox, not Internet Explorer).
If Firefox can display it successfully, it contains no fundamental XML structural errors. If not, Firefox will give you the line number of the feed which contains the first error. Firefox will also reveal basic character encoding problems.
Once you have an XML file that is structurally sound, you're ready to test for character encoding.
Visit this W3.org character validator to validate your feed URL.
Select the encoding type as: UTF-8 (Unicode, worldwide), click Check.
Unfortunately, even when the feed is correctly encoded, you will still receive some errors. At the top of the results page, a correctly validated feed will display either:
This Page Is well-formed XML! Result: Passed validation
This Page Is Tentatively Valid XML! Result: Tentatively passed validation
Scroll to the bottom of the results page and, under the title: Important warnings you'll see this error when the feed has 'Passed validation':
No DOCTYPE found! Checking XML syntax only.
This can be safely ignored. Similarly, when the feed has 'Tentatively passed validation', ignore these other additional warnings:
Missing "charset" attribute for "text/xml" document.
Character Encoding Override in effect!
(You can test for these acceptable errors using this sample feed.)
ALL other errors should be investigated and resolved before submitting a feed to Kyero.
Once you have a feed that passes character encoding validation and XML schema validation, open a support ticket with your feed URL. (Don't forget to tell us which Kyero.com advertising account the feed is for).
We will validate the feed on a development system and provide you with feedback, normally the same business day.
Please don't submit a ticket for a feed that has structural or character encoding errors. We will refer you back to this document and the specifications and tests detailed here.
Once we have successfully tested your feed we will process it manually on the live Kyero.com system and inform you when the properties are visible.
Once your properties are live, we will process your feed every day at approximately 01:30 CET.
Feeds that do not conform to our specification or display adverse behaviour may be updated once per week only or disabled.
It's important to remember that you should ALWAYS use your original property management system to manage your property details, NOT your Kyero.com account. When we process your feed, we REPLACE the information already contained in your Kyero.com account.
This means that if you change property details using your Kyero.com account, these changes will be lost when we next process your feed. However, properties marked as 'incomplete' are an exception to this general rule.
As we process your feed, a property will be marked as 'incomplete' if we cannot recognise each of these pieces of information:
An incomplete property is not visible to the public on Kyero. To make it live, it needs to be updated EITHER from your Kyero.com account OR your original property management system.
When you make changes to properties marked as 'incomplete' from your Kyero.com account, these changes will be remembered - even when we process your feed again.
Rather than 'fix' incomplete properties, the best course of action is to avoid a property being marked as 'incomplete' in the first place. To do this, simply ensure that your property management system contains all the mandatory information fields.
The Kyero.com system uses the official post-office database to identify the exact location of a property. For this reason you might notice slight differences between the location used in your property management system and the one used by Kyero.com
If the Kyero system doesn't recognise where a particular location is, it will mark the property as 'incomplete'. Updating the location using your property management system will ensure that the property is updated correctly on Kyero.com
The property type is taken from your property management system whenever possible. If it is missing or is not recognised by the Kyero.com system, the property will be marked as 'incomplete'. Updating the property type using your property management system will ensure that the property is updated correctly on Kyero.com
The Kyero system supports both sale and long term rental property. When a property price is specified as 'per month' it is featured in the 'Long Term Lets' section.
It might be possible for a property to be available for sale AND to rent within your property management system. The Kyero.com system does not support this feature and we suggest creating a duplicate property in your property management system and marking one as a rental property and the other as a property for sale.
The Kyero.com system only features Spanish properties. Those which are located outside of Spain or contain no location information will not be imported to Kyero.com If you find that a property is missing on Kyero.com, check on your property management system that it is using a location within Spain and that it is not marked as 'incomplete' in your Kyero.com account.
The Kyero system supports a maximum of fifty photos per property. If a property has more than fifty photos in your property management system, it will be imported to Kyero.com using the first fifty photos only.
If you have a problem or question which is not addressed here, or you spot an error in our documentation, please open a support ticket to contact us in the first instance.