Agency feed API

If your CRM already pushes to Rightmove or Zoopla, it can push to rielty: same RTDF method names, same shapes. An existing portal adapter needs only a new base URL and an API key.

https://rielty.co.uk/api/rtdf/v1 JSON over HTTPS listings live in seconds

Rightmove RTDF compatible: the /v1/property/… paths work here too, postcode_1/postcode_2 and the status int enum are honoured, and network_id/branch_id are simply ignored — your API key is your identity. The one deliberate difference: a bearer key instead of client certificates.

Getting started

  • Generate an API key in your agency dashboard
  • Point your CRM's portal feed at the base URL
  • Push a listing, confirm with getbranchpropertylist

Keys are per branch. No account yet? Sign up at for-agents — or email info@rielty.co.uk and we'll set you up.

Authentication

Every request carries the key as a bearer token. A missing or wrong key returns 401 with error_code: "AUTH".

Authorization: Bearer rk_your_api_key

POST /sendpropertydetails

Creates or updates a listing — upserts on your branch + agent_ref, so re-sending the same reference updates in place (and reactivates a previously removed listing).

Request

{
  "branch": {
    "channel": 1
  },
  "property": {
    "address": {
      "address_2": "Elm Grove",
      "house_name_number": "12",
      "latitude": 51.146,
      "longitude": 0.873,
      "postcode": "TN23 4AB",
      "town": "Ashford"
    },
    "agent_ref": "REF-1234",
    "details": {
      "bathrooms": 1,
      "bedrooms": 3,
      "description": "A well-presented three bedroom detached home with a private rear garden.",
      "features": [
        "garden",
        "parking"
      ]
    },
    "market_status": "active",
    "media": [
      {
        "media_type": 1,
        "media_url": "https://www.your-agency.co.uk/photos/ref-1234-1.jpg",
        "sort_order": 1
      }
    ],
    "price_information": {
      "price": 385000
    },
    "property_type": 4,
    "url": "https://www.your-agency.co.uk/property/ref-1234"
  }
}

Response

{
  "errors": [],
  "property": {
    "agent_ref": "REF-1234"
  },
  "request_id": "9f1c2a7b3d4e5f60",
  "success": true
}

curl

curl -X POST https://rielty.co.uk/api/rtdf/v1/sendpropertydetails \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d @payload.json

Required fields

Field Rule
property.agent_ref Non-empty string; your stable reference for the listing
property.address.postcode Valid UK postcode — either one field, or Rightmove's split postcode_1 + postcode_2
property.price_information.price Positive integer, pounds (not pence)
branch.channel 1 = sale, 2 = rent

property_type codes

Standard RTDF integers, bucketed as follows. Unknown or absent codes are stored as unset — never rejected.

Codes Stored as
1, 2, 5, 22 terraced (incl. end of terrace, mews, town house)
3semi-detached
4, 21detached (incl. link detached)
7, 8, 9, 28, 29 flat (incl. studio, apartment, penthouse)
10, 11maisonette
12–15bungalow
others stored as unset (cottage, chalet, villa, land… — ambiguous build forms)

Media

Only media_type: 1 (photographs) with http(s) URLs are stored, ordered by sort_order, capped at 30 per property (extras dropped, not rejected). Floorplans and brochures are ignored for now.

Other fields

  • property.url — the listing's page on your own site; this is where clicks from rielty land.
  • property.status — Rightmove's int enum is honoured: 1 available, 2–5 SSTC/under offer/reserved, 6 let agreed. published: false unpublishes. Anything not available keeps the record but removes it from search. (Our string form market_status also works and wins when present.)
  • details.features and the description are keyword-matched against our feature filters (garden, parking, en suite, garage…).
  • Description over 20,000 characters is truncated, not rejected.

POST /removeproperty

Delists a property (status → inactive). Re-sending the same agent_ref via sendpropertydetails reactivates it.

{
  "property": {
    "agent_ref": "REF-1234"
  }
}

Returns the standard success envelope, or 404 / NOT_FOUND for an unknown agent_ref.

GET /getbranchpropertylist

Reconciliation: every agent_ref and status we currently hold for your branch. No parameters, no pagination — it is your branch's stock, not a search.

{
  "errors": [],
  "properties": [
    {
      "agent_ref": "REF-1234",
      "status": "active"
    },
    {
      "agent_ref": "REF-1198",
      "status": "inactive"
    }
  ],
  "request_id": "0b8d4e2f6a1c3579",
  "success": true
}

Errors

Every response — success or failure — is the same envelope with a request_id to quote in support emails:

{
  "errors": [
    {
      "error_code": "VALIDATION",
      "error_description": "postcode is invalid",
      "property_field": "property.address.postcode"
    }
  ],
  "request_id": "c4a1f8e02b6d7391",
  "success": false
}
HTTP status error_code Meaning
401 AUTH Missing or invalid API key
422 VALIDATION A required field is invalid or missing — property_field names which
404 NOT_FOUND removeproperty referenced an unknown agent_ref
429 RATE_LIMIT Over 100 requests/minute for this key — back off and retry

Limits

Request body1MB max
Media items per property30 (extras dropped, not rejected)
Description20,000 characters (truncated, not rejected)
Rate limit100 requests/minute per key

No real-time push? BLM feeds

We also collect Rightmove V3 BLM feeds: give us (or set in your agency dashboard) an http(s) URL where your CRM publishes the file and we fetch it hourly. Windows-1252 exports are handled; unknown columns are ignored.

Questions, or a CRM that speaks a different format? Email info@rielty.co.uk — if your software can export listings at all, we can almost certainly ingest it.