EstateSync (1.0)

Download OpenAPI specification:Download

Introduction

Use the EstateSync API to easily distribute real estate data to major German market places. Send your data once – publish it on all the platforms.

Please refer to the Documentation for additional information and guides. You are currently looking at the API reference.

Authentication

When you sign up for an account a first API key will be automatically added. You can use it to publish and modify resources. EstateSync uses Bearer Authentication. Just provide the header Authorization with the value Bearer {your-api-key}.

Account

Get your account

Return information of your API account.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
{
}

Immobilienscout24 Consumer Credentials

Update your consumer credentials for Immobilienscout24. Necessary to be able to create targets of type immobilienscout-24.

Authorizations:
api-key
Request Body schema: application/json
key
required
string
secret
required
string

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Immobilienscout24 Sandbox Consumer Credentials

Update your consumer credentials for the Immobilienscout24 Sandbox. Necessary to be able to create targets of type immobilienscout-24-sandbox.

Authorizations:
api-key
Request Body schema: application/json
key
required
string
secret
required
string

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Properties

Create a property

Add a new property to your account.

Authorizations:
api-key
Request Body schema: application/json
One of
type
required
any
Value: "apartmentRent"

The type of the property. Cannot be changed afterwards.

required
object

Attributes which can be specified for the property, based on its type.

Array of objects <= 150 items

Add images or PDFs to the property by providing the URL where you host them. The order of the attachments will be respected and the first image attachment will be used as the title image. Attachments cannot be larger than 16mb.

Array of objects <= 10 items

Add external links (e.g. for virtual tours) to the property by providing their URLs and titles. Note that targets usually only display virtual tours for certain providers. For immobilienscout-24 targets, you can find supported providers in the IS24 documentation - other providers will be displayed as normal links. For immowelt targets, only links of Ogulo, Matterport and Immoviewer are accepted at all (please refer to their documentation for the required link format). Hence, EstateSync will append links of other providers as plaintext to the property description for immowelt targets. Generally, the order of the links will be respected.

contactId
string = 20 characters

References a contact. Can be left out to use the default contact of the target platform.

externalId
string [ 1 .. 50 ] characters ^[a-zA-Z0-9/_#+:@\s\-]+$

Custom identifier for the property. Will be created automatically if not given. Cannot be changed after property creation. Check the guides in the documentation for more information.

Responses

Request samples

Content type
application/json
Example
{
}

Response samples

Content type
application/json
Example
{
}

List all properties

Return all properties of your account.

Authorizations:
api-key
query Parameters
usePagination
boolean
Default: false

Temporary parameter to enable pagination. Will be removed on January 15th, 2025 as pagination becomes the default.

limit
integer [ 1 .. 100 ]
Default: 10

The maximum number of resources to return. Only available when usePagination is set to true.

startAfter
string = 20 characters

A cursor to use in pagination. startAfter is a resource ID that defines your place in the list. For example, if you make a list request and receive 50 objects, ending with ID xyz, your subsequent call can include startAfter=xyz to fetch the next page of the list. Only available when usePagination is set to true.

Responses

Response samples

Content type
application/json
Example
{
}

Get a property

Return a specific property of your account.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the property.

Responses

Response samples

Content type
application/json
Example
{
}

Update a property

When you update the property EstateSync will automatically publish it to all targets it is currently listed on. This means that corresponding webhooks will be fired again when the listing was updated successfully.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the property.

Request Body schema: application/json
One of
type
required
any
Value: "apartmentRent"

The type of the property. Cannot be changed afterwards.

required
object

Attributes which can be specified for the property, based on its type.

Array of objects <= 150 items

Add images or PDFs to the property by providing the URL where you host them. The order of the attachments will be respected and the first image attachment will be used as the title image. Attachments cannot be larger than 16mb.

Array of objects <= 10 items

Add external links (e.g. for virtual tours) to the property by providing their URLs and titles. Note that targets usually only display virtual tours for certain providers. For immobilienscout-24 targets, you can find supported providers in the IS24 documentation - other providers will be displayed as normal links. For immowelt targets, only links of Ogulo, Matterport and Immoviewer are accepted at all (please refer to their documentation for the required link format). Hence, EstateSync will append links of other providers as plaintext to the property description for immowelt targets. Generally, the order of the links will be respected.

contactId
string = 20 characters

References a contact. Can be left out to use the default contact of the target platform.

externalId
string [ 1 .. 50 ] characters ^[a-zA-Z0-9/_#+:@\s\-]+$

Custom identifier for the property. Will be created automatically if not given. Cannot be changed after property creation. Check the guides in the documentation for more information.

Responses

Request samples

Content type
application/json
Example
{
}

Response samples

Content type
application/json
Example
{
}

Delete a property

Permanently delete a property. To delete a property that still has listings one needs to delete these listings first so that EstateSync can unpublish them.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the property.

Responses

Response samples

Content type
application/json
{
}

Targets

List all targets

Return all targets of your account.

Authorizations:
api-key
query Parameters
usePagination
boolean
Default: false

Temporary parameter to enable pagination. Will be removed on January 15th, 2025 as pagination becomes the default.

limit
integer [ 1 .. 100 ]
Default: 10

The maximum number of resources to return. Only available when usePagination is set to true.

startAfter
string = 20 characters

A cursor to use in pagination. startAfter is a resource ID that defines your place in the list. For example, if you make a list request and receive 50 objects, ending with ID xyz, your subsequent call can include startAfter=xyz to fetch the next page of the list. Only available when usePagination is set to true.

Responses

Response samples

Content type
application/json
[
]

Create a new target

For targets ebay-kleinanzeigen, immowelt, immozentral, immopool, neubaukompass, willhaben-at, immobilienscout-24-at, wp-immomakler, immonex-openimmo-2-wp and 1a-immobilienmarkt

For these targets you need to provide FTP credentials that you or a third party can receive from the corresponding platforms.

For targets immobilienscout-24 and immobilienscout-24-sandbox

You need to let your customer approve the connection between you and his Immobilienscout24 account first if you want to publish properties on his behalf on the platform.

This is the same process as if you were allowing an app to post on your Facebook account. In order to do that, the app would redirect you to Facebook, where you would need to sign in and then grant this permission.

Usually this is a complicated procedure however EstateSync makes the process very easy.

To get started you need to obtain "consumer credentials" from Immobilienscout24. You can request these credentials with the official registration form. Choose "Customer website / real estate management" as use case option and select "Sandbox and Production" if you want to use both immobilienscout-24 and immobilienscout-24-target.

After obtaining the consumer credentials you need to add them to your EstateSync account (you only need to do this once, so feel free to use something like Postman). You can find the documentation for this request under the /account endpoint.

Now you can create a target as documented below. Make sure to redirect your customer to the authorizationUrl that comes with the response. It will take him to the Immobilienscout24 page where he is asked to permit the connection of your app with his account. After he accepts he will be redirected to the redirectUrl you initially provided in the create request. From now on the target is active and you can add listings to it.

Authorizations:
api-key
Request Body schema: application/json
One of
autoCollectRequests
boolean (autoCollectRequests)

If present and true, the target platform will be instructed to automatically send a copy of each contact request to EstateSync.

required
object
type
required
string
Value: "ebay-kleinanzeigen"

Responses

Request samples

Content type
application/json
Example
{
}

Response samples

Content type
application/json
Example
{
}

Get a target

Return a specific target of your account.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the target.

Responses

Response samples

Content type
application/json
Example
{
}

Delete a target

Permanently delete a target. To delete a target that still has listings one needs to delete these listings first so that EstateSync can unpublish them.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the target.

Responses

Response samples

Content type
application/json
{
}

Update a target

Update a specific target. This will lead to a re-publication of all listings of the target if the target type is not immobilienscout-24 or immobilienscout-24-sandbox. For these target types, the request will instead return a fresh authorizationUrl for the target. Only when the end user successfully completes the authentication flow again using this URL will all listings of the target be republished.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the target.

Request Body schema: application/json
One of
autoCollectRequests
boolean (autoCollectRequests)

If present and true, the target platform will be instructed to automatically send a copy of each contact request to EstateSync.

required
object
type
required
string
Value: "ebay-kleinanzeigen"

Responses

Request samples

Content type
application/json
Example
{
}

Response samples

Content type
application/json
Example
{
}

Listings

List all listings

Return all listings that are currently on your account.

Authorizations:
api-key
query Parameters
usePagination
boolean
Default: false

Temporary parameter to enable pagination. Will be removed on January 15th, 2025 as pagination becomes the default.

limit
integer [ 1 .. 100 ]
Default: 10

The maximum number of resources to return. Only available when usePagination is set to true.

startAfter
string = 20 characters

A cursor to use in pagination. startAfter is a resource ID that defines your place in the list. For example, if you make a list request and receive 50 objects, ending with ID xyz, your subsequent call can include startAfter=xyz to fetch the next page of the list. Only available when usePagination is set to true.

Responses

Response samples

Content type
application/json
Example
{
}

Create a listing

Create a new listing and hence publish the property. The action will be processed in our queue. We will post to your webhook when the listing has been created successfully (at this moment the published attribute on the listing will change to true).

Be aware that you can not create listings for the targets immobilienscout-24 and immobilienscout-24-sandbox unless their authorizationStatus is accepted.

Authorizations:
api-key
Request Body schema: application/json
preventPublication
boolean

Only allowed if targetId references an immobilienscout-24 or immobilienscout-24-sandbox target. If set to true, the listing will appear deactivated on Immobilienscout24.

propertyId
required
string

The ID of the property that should be published. Cannot be changed after creation.

targetId
required
string

The ID of the target the listing should appear on. Cannot be changed after creation.

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Get a listing

Return a specific listing.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the listing.

Responses

Response samples

Content type
application/json
{
}

Update a listing

Update a specific listing.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the listing.

Request Body schema: application/json
preventPublication
boolean

Only allowed if targetId references an immobilienscout-24 or immobilienscout-24-sandbox target. If set to true, the listing will appear deactivated on Immobilienscout24.

propertyId
required
string

The ID of the property that should be published. Cannot be changed after creation.

targetId
required
string

The ID of the target the listing should appear on. Cannot be changed after creation.

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Delete a listing

Delete a specific listing. This will remove the property from the platform of the target.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the listing.

Responses

Response samples

Content type
application/json
{
}

Contacts

List all contacts

Return all contacts of your account.

Authorizations:
api-key
query Parameters
usePagination
boolean
Default: false

Temporary parameter to enable pagination. Will be removed on January 15th, 2025 as pagination becomes the default.

limit
integer [ 1 .. 100 ]
Default: 10

The maximum number of resources to return. Only available when usePagination is set to true.

startAfter
string = 20 characters

A cursor to use in pagination. startAfter is a resource ID that defines your place in the list. For example, if you make a list request and receive 50 objects, ending with ID xyz, your subsequent call can include startAfter=xyz to fetch the next page of the list. Only available when usePagination is set to true.

Responses

Response samples

Content type
application/json
Example
{
}

Create a contact

Create a new contact.

Authorizations:
api-key
Request Body schema: application/json
email
required
string <email>

The email of the contact.

firstName
string <= 30 characters

The first name of the contact.

lastName
required
string <= 50 characters

The last name of the contact. Must not contain an email address.

mobilePhone
string^\+[1-9]\d{0,3} +\d{1,10} +[\d][\d ]{0,24}$

The mobile phone number of the contact. Needs to be in the specific pattern +XX X…X X…X. There should be no separators besides spaces. Examples for valid phone numbers are +49 176 123456 or +1 4421 123456.

phone
string^\+[1-9]\d{0,3} +\d{1,10} +[\d][\d ]{0,24}$

The phone number of the contact. Needs to be in the specific pattern +XX X…X X…X. There should be no separators besides spaces. Examples for valid phone numbers are +49 176 123456 or +1 4421 123456.

title
string <= 15 characters

The title of the contact, usually something like "Dr." or "Prof.".

website
string <uri> <= 300 characters ^[a-zA-Z0-9\-\_\.\~\!\*\'\(\)\;\:\@\&\=\+\$\,...

The website of the contact. Should be encoded and contain no special characters.

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Get a contact

Return a specific contact of your account.

Authorizations:
api-key
path Parameters
id
required
string

The id of the contact.

Responses

Response samples

Content type
application/json
{
}

Update a contact

Update a specific contact of your account. Listings of properties with this contact will be updated.

Authorizations:
api-key
path Parameters
id
required
string

The id of the contact.

Request Body schema: application/json
email
required
string <email>

The email of the contact.

firstName
string <= 30 characters

The first name of the contact.

lastName
required
string <= 50 characters

The last name of the contact. Must not contain an email address.

mobilePhone
string^\+[1-9]\d{0,3} +\d{1,10} +[\d][\d ]{0,24}$

The mobile phone number of the contact. Needs to be in the specific pattern +XX X…X X…X. There should be no separators besides spaces. Examples for valid phone numbers are +49 176 123456 or +1 4421 123456.

phone
string^\+[1-9]\d{0,3} +\d{1,10} +[\d][\d ]{0,24}$

The phone number of the contact. Needs to be in the specific pattern +XX X…X X…X. There should be no separators besides spaces. Examples for valid phone numbers are +49 176 123456 or +1 4421 123456.

title
string <= 15 characters

The title of the contact, usually something like "Dr." or "Prof.".

website
string <uri> <= 300 characters ^[a-zA-Z0-9\-\_\.\~\!\*\'\(\)\;\:\@\&\=\+\$\,...

The website of the contact. Should be encoded and contain no special characters.

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Delete a contact

Delete a specific contact of your account. It will be removed from all properties.

Authorizations:
api-key
path Parameters
id
required
string

The id of the contact.

Responses

Response samples

Content type
application/json
{
}

Requests

List all requests

Return all requests of your account.

Authorizations:
api-key
query Parameters
usePagination
boolean
Default: false

Temporary parameter to enable pagination. Will be removed on January 15th, 2025 as pagination becomes the default.

limit
integer [ 1 .. 100 ]
Default: 10

The maximum number of resources to return. Only available when usePagination is set to true.

startAfter
string = 20 characters

A cursor to use in pagination. startAfter is a resource ID that defines your place in the list. For example, if you make a list request and receive 50 objects, ending with ID xyz, your subsequent call can include startAfter=xyz to fetch the next page of the list. Only available when usePagination is set to true.

Responses

Response samples

Content type
application/json
Example
{
}

Get a request

Return a specific request of your account.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the request.

Responses

Response samples

Content type
application/json
{
}

Webhooks

List all webhooks

Return all webhooks of your account.

Authorizations:
api-key
query Parameters
usePagination
boolean
Default: false

Temporary parameter to enable pagination. Will be removed on January 15th, 2025 as pagination becomes the default.

limit
integer [ 1 .. 100 ]
Default: 10

The maximum number of resources to return. Only available when usePagination is set to true.

startAfter
string = 20 characters

A cursor to use in pagination. startAfter is a resource ID that defines your place in the list. For example, if you make a list request and receive 50 objects, ending with ID xyz, your subsequent call can include startAfter=xyz to fetch the next page of the list. Only available when usePagination is set to true.

Responses

Response samples

Content type
application/json
Example
{
}

Create a webhook

Create a new webhook on your account.

Authorizations:
api-key
Request Body schema: application/json
url
required
string <uri> ^[a-zA-Z0-9\-\_\.\~\!\*\'\(\)\;\:\@\&\=\+\$\,...

The URL that will be posted to. Needs to use https as protocol and be encoded.

events
required
Array of strings non-empty unique
Items Enum: "request.created" "publication.succeeded" "publication.failed" "property.processing_succeeded" "property.processing_failed" "request.parsing_failed"

The names of the events the webhook will be fired for.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
}

Delete a webhook

Delete a specific webhook.

Authorizations:
api-key
path Parameters
id
required
string

The ID of the webhook.

Responses

Response samples

Content type
application/json
{
}