Reviews API

Prev Next

Retrieve your published carehome.co.uk reviews as JSON, so you can import them into your own CMS or a third-party platform.

Who can use it: the Reviews API is available to Enhanced and Platinum subscribers. You need some technical knowledge to use it.

Permitted use: import reviews into your own CMS or a third-party platform. Do not use the Reviews API to display reviews on public-facing websites or apps; use our Review Widgets for that. See our API terms of use.

Overview

MethodEndpointReturns
GET/index.cfm/reviewsYour published reviews, with ratings and replies
GET/index.cfm/reviews/ratingsRating categories (rr_id), such as Staff or Cleanliness
GET/index.cfm/reviews/starsStar values (rrs_id), such as Good or Excellent
GET/index.cfm/reviews/connectionsReviewer connections (rc_id), such as Daughter of Resident

Base URL https://api.carehome.co.uk. Authentication, errors, support and the other review endpoints (Review Score, certificate, 'Review Us' poster and reviews PDF) are covered in the Reviews API overview.

List reviews

GET /index.cfm/reviews

Returns every published review for the record your API key belongs to, as a JSON array. There is no pagination; the full list is returned in one response.

  • Single setting key: returns that setting's reviews.
  • Group key: returns reviews for every active setting in the group. Use id and api_key on each review to see which setting it belongs to.

Reviews are ordered by setting, then from oldest to newest.

Query parameters

ParameterTypeRequiredDescription
api_keystringYesYour API key.

Example request

curl "https://api.carehome.co.uk/index.cfm/reviews?api_key=YOUR_API_KEY"

Example response

200 OK, Content-Type: application/json. The values below are illustrative, not a real review.

[
  {
    "api_key": "YOUR_API_KEY",
    "id": 65432100000,
    "r_id": 1234567,
    "date": "2026-09-09 07:25:24.6 +00:00",
    "first_name": "N/A",
    "last_name": "N/A",
    "display_name": "Example Reviewer",
    "email": "",
    "telephone": "",
    "description": "Example review text. This is not a real review.",
    "rc_id": "9",
    "dateRelatedTo": "2026-08-01",
    "has_reply": true,
    "ratings": "10:12,11:12,12:12,13:12,14:12,15:12,16:12,17:12,18:12,19:11,37:12,38:12",
    "average_rating": "4.92",
    "archived": 0,
    "submitted": "2026-09-09 07:25:24.6 +00:00",
    "first_published": "2026-09-17 11:59:16.1 +00:00",
    "last_published": "2026-09-17 11:59:16.1 +00:00",
    "reply": {
      "name": "Example Name",
      "position": "Home Manager",
      "content": "Example reply text.",
      "date": "2026-09-15 11:59:03.2 +00:00"
    },
    "is_included_in_review_score": true
  }
]

Review object

FieldTypeDescription
r_idintegerUnique ID of the review.
idintegerID of the setting the review is for.
api_keystringAPI key of the setting the review is for. With a group key, this identifies the individual setting.
display_namestringThe name the reviewer chose to show with their review.
descriptionstringThe review text.
rc_idstringThe reviewer's connection to the setting. Look it up with List reviewer connections.
dateRelatedTostringThe month the review's experience relates to, as YYYY-MM-01. Empty string if not given.
ratingsstringComma-separated rr_id:rrs_id pairs, one per rating category. See Reading ratings.
average_ratingstring or nullAverage star value across the review's ratings, out of 5, to two decimal places. null if there is no rating value.
submittedstringWhen the review was submitted. See Dates.
first_publishedstringWhen the review was first published.
last_publishedstringWhen the review was most recently published. The same as first_published unless the review has been republished, for example after an edit.
has_replybooleantrue if the setting has a published reply to this review.
replyobject or nullThe setting's published reply. See Reply object. null when has_reply is false.
is_included_in_review_scorebooleantrue if the review counts towards the setting's current Review Score, which uses reviews first published in the last 24 months.
archivedinteger1 if the review was submitted more than two years ago, otherwise 0. To decide whether a review still affects the Review Score, use is_included_in_review_score, which is based on the publication date.
datestringWhen the review was submitted. Same value as submitted; kept for existing integrations.
first_namestringAlways "N/A". Kept for existing integrations.
last_namestringAlways "N/A". Kept for existing integrations.
emailstringAlways an empty string. Kept for existing integrations.
telephonestringAlways an empty string. Kept for existing integrations.

Reply object

FieldTypeDescription
namestringName of the person who wrote the reply.
positionstringTheir job title.
contentstringThe reply text.
datestringWhen the reply was written. A reply can be dated before first_published, because settings can reply while a review is waiting to be published.

Dates

All date-times are in UTC, in this format:

YYYY-MM-DD hh:mm:ss.f +00:00
2026-09-17 11:59:16.1 +00:00

Convert them to UK time for display if you need to. Some older reviews only have a publication date, so their first_published time shows as 00:00:00.0.

Reading ratings

Each pair in ratings is rr_id:rrs_id: the rating category, then the star value given. Match them against List rating categories and List star values.

For example, 19:11 means Value for Money (rr_id 19) was rated Good (rrs_id 11, worth 4 stars).

A review has one pair for each rating category its setting type uses, so the number of pairs depends on the setting type. See List rating categories.

List rating categories

GET /index.cfm/reviews/ratings

Returns the rating categories for your setting's type, in display order. The categories differ by setting type, as shown below.

With a group key this endpoint returns an empty array ([]), because rating categories belong to setting types rather than groups. Use the lists below, or call the endpoint with one of your settings' keys.

FieldTypeDescription
rr_idintegerRating category ID, as used in ratings.
rr_namestringCategory name.
rr_sequenceintegerDisplay order.

Residential homes, nursing homes and extra care housing

Full response, 12 categories:

[
  { "rr_id": 37, "rr_name": "Overall Experience", "rr_sequence": 1 },
  { "rr_id": 14, "rr_name": "Facilities", "rr_sequence": 3 },
  { "rr_id": 10, "rr_name": "Care / Support", "rr_sequence": 5 },
  { "rr_id": 15, "rr_name": "Cleanliness", "rr_sequence": 6 },
  { "rr_id": 38, "rr_name": "Treated with Dignity", "rr_sequence": 7 },
  { "rr_id": 16, "rr_name": "Food & Drink", "rr_sequence": 8 },
  { "rr_id": 11, "rr_name": "Staff", "rr_sequence": 9 },
  { "rr_id": 17, "rr_name": "Activities", "rr_sequence": 10 },
  { "rr_id": 12, "rr_name": "Management", "rr_sequence": 11 },
  { "rr_id": 18, "rr_name": "Safety / Security", "rr_sequence": 13 },
  { "rr_id": 13, "rr_name": "Rooms", "rr_sequence": 14 },
  { "rr_id": 19, "rr_name": "Value for Money", "rr_sequence": 15 }
]

Adult day care centres

Full response, 11 categories. The same as above without Rooms (rr_id 13):

[
  { "rr_id": 37, "rr_name": "Overall Experience", "rr_sequence": 1 },
  { "rr_id": 14, "rr_name": "Facilities", "rr_sequence": 3 },
  { "rr_id": 10, "rr_name": "Care / Support", "rr_sequence": 5 },
  { "rr_id": 15, "rr_name": "Cleanliness", "rr_sequence": 6 },
  { "rr_id": 38, "rr_name": "Treated with Dignity", "rr_sequence": 7 },
  { "rr_id": 16, "rr_name": "Food & Drink", "rr_sequence": 8 },
  { "rr_id": 11, "rr_name": "Staff", "rr_sequence": 9 },
  { "rr_id": 17, "rr_name": "Activities", "rr_sequence": 10 },
  { "rr_id": 12, "rr_name": "Management", "rr_sequence": 11 },
  { "rr_id": 18, "rr_name": "Safety / Security", "rr_sequence": 13 },
  { "rr_id": 19, "rr_name": "Value for Money", "rr_sequence": 15 }
]

List star values

GET /index.cfm/reviews/stars

Returns the possible answers for each rating category. The list is the same for every setting type and for group keys. Full response, 6 values:

FieldTypeDescription
rrs_idintegerStar value ID, as used in ratings.
rrs_namestringLabel shown to the reviewer.
rrs_sequenceintegerDisplay order.
rrs_valueintegerNumber of stars, 1 to 5. Not present for "Don't Know".
[
  { "rrs_id": 14, "rrs_name": "Very Poor", "rrs_sequence": 1, "rrs_value": 1 },
  { "rrs_id": 13, "rrs_name": "Poor", "rrs_sequence": 2, "rrs_value": 2 },
  { "rrs_id": 10, "rrs_name": "Fair", "rrs_sequence": 3, "rrs_value": 3 },
  { "rrs_id": 11, "rrs_name": "Good", "rrs_sequence": 4, "rrs_value": 4 },
  { "rrs_id": 12, "rrs_name": "Excellent", "rrs_sequence": 5, "rrs_value": 5 },
  { "rrs_id": 15, "rrs_name": "Don't Know", "rrs_sequence": 6 }
]

List reviewer connections

GET /index.cfm/reviews/connections

Returns every reviewer connection used on carehome.co.uk, in display order. The list is the same for every setting type on the site, and for group keys.

FieldTypeDescription
rc_idintegerConnection ID. Reviews return it as a string in rc_id.
rc_namestringHow the reviewer is connected to the setting.
rc_sequenceintegerDisplay order.

Full response, 56 connections:

[
  { "rc_id": 1, "rc_name": "Resident / Service User", "rc_sequence": 1000 },
  { "rc_id": 171, "rc_name": "Respite Resident/Service User", "rc_sequence": 1005 },
  { "rc_id": 173, "rc_name": "Day Care Service User", "rc_sequence": 1007 },
  { "rc_id": 23, "rc_name": "Friend of Resident/Service User", "rc_sequence": 1010 },
  { "rc_id": 3, "rc_name": "Brother of Resident/Service User", "rc_sequence": 1040 },
  { "rc_id": 4, "rc_name": "Sister of Resident/Service User", "rc_sequence": 1060 },
  { "rc_id": 5, "rc_name": "Wife of Resident/Service User", "rc_sequence": 1080 },
  { "rc_id": 6, "rc_name": "Husband of Resident/Service User", "rc_sequence": 1100 },
  { "rc_id": 114, "rc_name": "Partner of Resident/Service User", "rc_sequence": 1101 },
  { "rc_id": 115, "rc_name": "Civil Partner of Resident/Service User", "rc_sequence": 1101 },
  { "rc_id": 8, "rc_name": "Son of Resident/Service User", "rc_sequence": 1140 },
  { "rc_id": 9, "rc_name": "Daughter of Resident/Service User", "rc_sequence": 1160 },
  { "rc_id": 10, "rc_name": "Grandson of Resident/Service User", "rc_sequence": 1180 },
  { "rc_id": 11, "rc_name": "Granddaughter of Resident/Service User", "rc_sequence": 1200 },
  { "rc_id": 12, "rc_name": "Great-grandson of Resident/Service User", "rc_sequence": 1220 },
  { "rc_id": 13, "rc_name": "Great-granddaughter of Resident/Service User", "rc_sequence": 1240 },
  { "rc_id": 14, "rc_name": "Nephew of Resident/Service User", "rc_sequence": 1260 },
  { "rc_id": 15, "rc_name": "Niece of Resident/Service User", "rc_sequence": 1280 },
  { "rc_id": 16, "rc_name": "Great-Nephew of Resident/Service User", "rc_sequence": 1300 },
  { "rc_id": 17, "rc_name": "Great-Niece of Resident/Service User", "rc_sequence": 1320 },
  { "rc_id": 112, "rc_name": "Great Great-Nephew of Resident/Service User", "rc_sequence": 1321 },
  { "rc_id": 113, "rc_name": "Great Great-Niece of Resident/Service User", "rc_sequence": 1322 },
  { "rc_id": 18, "rc_name": "Father of Resident/Service User", "rc_sequence": 1340 },
  { "rc_id": 19, "rc_name": "Mother of Resident/Service User", "rc_sequence": 1360 },
  { "rc_id": 135, "rc_name": "Grandfather of Resident/Service User", "rc_sequence": 1362 },
  { "rc_id": 136, "rc_name": "Grandmother of Resident/Service User", "rc_sequence": 1364 },
  { "rc_id": 20, "rc_name": "Aunt of Resident/Service User", "rc_sequence": 1380 },
  { "rc_id": 21, "rc_name": "Uncle of Resident/Service User", "rc_sequence": 1400 },
  { "rc_id": 88, "rc_name": "Son-in-law of Resident/Service User", "rc_sequence": 1410 },
  { "rc_id": 90, "rc_name": "Daughter-in-law of Resident/Service User", "rc_sequence": 1411 },
  { "rc_id": 91, "rc_name": "Father-in-law of Resident/Service User", "rc_sequence": 1412 },
  { "rc_id": 89, "rc_name": "Mother-in-law of Resident/Service User", "rc_sequence": 1413 },
  { "rc_id": 98, "rc_name": "Brother-in-law of Resident/Service User", "rc_sequence": 1414 },
  { "rc_id": 99, "rc_name": "Sister-in-law of Resident/Service User", "rc_sequence": 1415 },
  { "rc_id": 103, "rc_name": "Stepson of Resident/Service User", "rc_sequence": 1416 },
  { "rc_id": 104, "rc_name": "Stepdaughter of Resident/Service User", "rc_sequence": 1417 },
  { "rc_id": 119, "rc_name": "Stepbrother of Resident/Service User", "rc_sequence": 1418 },
  { "rc_id": 120, "rc_name": "Stepsister of Resident/Service User", "rc_sequence": 1419 },
  { "rc_id": 131, "rc_name": "Stepfather of Resident/Service User", "rc_sequence": 1420 },
  { "rc_id": 132, "rc_name": "Stepmother of Resident/Service User", "rc_sequence": 1421 },
  { "rc_id": 7, "rc_name": "Cousin of Resident/Service User", "rc_sequence": 1425 },
  { "rc_id": 123, "rc_name": "Widow / Widower", "rc_sequence": 1430 },
  { "rc_id": 22, "rc_name": "Relative of Resident/Service User", "rc_sequence": 1435 },
  { "rc_id": 129, "rc_name": "Guardian of Resident/Service User", "rc_sequence": 1440 },
  { "rc_id": 155, "rc_name": "Godfather of Resident/Service User", "rc_sequence": 1442 },
  { "rc_id": 156, "rc_name": "Godmother of Resident/Service User", "rc_sequence": 1444 },
  { "rc_id": 157, "rc_name": "Godson of Resident/Service User", "rc_sequence": 1446 },
  { "rc_id": 158, "rc_name": "Goddaughter of Resident/Service User", "rc_sequence": 1448 },
  { "rc_id": 2, "rc_name": "Power of Attorney of Resident/Service User", "rc_sequence": 1450 },
  { "rc_id": 176, "rc_name": "Ex Family Member", "rc_sequence": 1451 },
  { "rc_id": 167, "rc_name": "Independent Advocate/Deputyship", "rc_sequence": 1453 },
  { "rc_id": 178, "rc_name": "Solicitor of Resident/Service User", "rc_sequence": 1456 },
  { "rc_id": 185, "rc_name": "Case Manager", "rc_sequence": 1458 },
  { "rc_id": 101, "rc_name": "Regular Volunteer", "rc_sequence": 1460 },
  { "rc_id": 174, "rc_name": "Next of Kin", "rc_sequence": 1461 },
  { "rc_id": 189, "rc_name": "Care home staff", "rc_sequence": 1651 }
]

Caching

Responses include an ETag header. Send it back in an If-None-Match header; if your reviews have not changed you get 304 Not Modified with no body, and you can keep using your stored copy.

Reviews are added through moderation, not in real time. Polling once an hour or less often is enough.