Guest review summary and recent reviews for a single hotel
curl --request GET \
--url https://api.gojinko.com/v1/hotel_reviews/{hotel_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.gojinko.com/v1/hotel_reviews/{hotel_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.gojinko.com/v1/hotel_reviews/{hotel_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gojinko.com/v1/hotel_reviews/{hotel_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gojinko.com/v1/hotel_reviews/{hotel_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gojinko.com/v1/hotel_reviews/{hotel_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gojinko.com/v1/hotel_reviews/{hotel_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"hotel": {
"id": "lp39fe9",
"hotel_ref": "h1:lp1d2c3",
"name": "Park Plaza Beijing Wangfujing",
"rating": 8.6,
"review_count": 1243
},
"summary": {
"pros": [
"Central location",
"Helpful staff"
],
"cons": [
"Small rooms"
],
"categories": [
{
"name": "Cleanliness",
"rating": 8.9,
"description": "Guests praise the housekeeping."
}
],
"updated_at": "2026-09-30T00:00:00Z"
},
"reviews": [
{
"id": "12345",
"headline": "Great stay",
"score": 9,
"pros": "Location, breakfast",
"cons": "Street noise at night",
"date": "2026-09-12",
"language": "en",
"reviewer_name": "Ana"
}
],
"page": {
"limit": 10,
"offset": 0,
"total_count": 1243
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "Malformed JSON in request body.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "AUTH_REQUIRED",
"message": "Invalid or expired API key.",
"doc_url": "https://docs.gojinko.com/authentication/api-keys"
}
}{
"error": {
"code": "PAYMENT_REQUIRED",
"message": "Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Resource not found.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "CONFLICT",
"message": "The operation conflicts with the current state of the resource.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "GONE",
"message": "The resource no longer exists.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "A required field is missing or invalid.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_REJECTED",
"message": "The request was declined for this offer. Try another offer.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The service is temporarily unavailable. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_TIMEOUT",
"message": "The request timed out before a result was available. Retry the request.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}Hotels
hotel-reviews
Guest review summary and recent reviews for a single hotel
GET
/
v1
/
hotel_reviews
/
{hotel_id}
Guest review summary and recent reviews for a single hotel
curl --request GET \
--url https://api.gojinko.com/v1/hotel_reviews/{hotel_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.gojinko.com/v1/hotel_reviews/{hotel_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.gojinko.com/v1/hotel_reviews/{hotel_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gojinko.com/v1/hotel_reviews/{hotel_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gojinko.com/v1/hotel_reviews/{hotel_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gojinko.com/v1/hotel_reviews/{hotel_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gojinko.com/v1/hotel_reviews/{hotel_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"hotel": {
"id": "lp39fe9",
"hotel_ref": "h1:lp1d2c3",
"name": "Park Plaza Beijing Wangfujing",
"rating": 8.6,
"review_count": 1243
},
"summary": {
"pros": [
"Central location",
"Helpful staff"
],
"cons": [
"Small rooms"
],
"categories": [
{
"name": "Cleanliness",
"rating": 8.9,
"description": "Guests praise the housekeeping."
}
],
"updated_at": "2026-09-30T00:00:00Z"
},
"reviews": [
{
"id": "12345",
"headline": "Great stay",
"score": 9,
"pros": "Location, breakfast",
"cons": "Street noise at night",
"date": "2026-09-12",
"language": "en",
"reviewer_name": "Ana"
}
],
"page": {
"limit": 10,
"offset": 0,
"total_count": 1243
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "Malformed JSON in request body.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "AUTH_REQUIRED",
"message": "Invalid or expired API key.",
"doc_url": "https://docs.gojinko.com/authentication/api-keys"
}
}{
"error": {
"code": "PAYMENT_REQUIRED",
"message": "Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Resource not found.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "CONFLICT",
"message": "The operation conflicts with the current state of the resource.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "GONE",
"message": "The resource no longer exists.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "A required field is missing or invalid.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_REJECTED",
"message": "The request was declined for this offer. Try another offer.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The service is temporarily unavailable. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_TIMEOUT",
"message": "The request timed out before a result was available. Retry the request.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}Read what guests say about a single property after a search result catches the user’s attention. Useful for questions like “what do guests say about this hotel”, “is it clean”, or “how is the location”. Returns the overall guest score and review count, a summary of pros and cons, per-category scores (for example cleanliness, location and staff), and recent individual reviews, each with its headline, score, pros and cons, date, language and reviewer name. Reviews are not attributed to a source. Use
limit and offset to page through them.Authorizations
ApiKeyAuthBearerAuth
Path Parameters
The hotel_id of a hotel from hotel_search, or the id hotel_details returns, passed exactly as received and URL-encoded as one path segment. It is opaque: do not parse or build it.
Example:
"lp1d2c3"
Query Parameters
Reviews per page, 1 to 50. Default 10.
Required range:
1 <= x <= 50Example:
10
Reviews to skip before this page. Default 0.
Required range:
0 <= x <= 2147483647Example:
0
Response
Hotel reviews
The hotel the reviews are about.
Show child attributes
Show child attributes
Summary of what guests say. Null when the hotel has no review summary.
Show child attributes
Show child attributes
One page of individual reviews, newest first. Empty when the hotel has no reviews or the page starts past the last one.
Show child attributes
Show child attributes
Example:
[
{
"id": "12345",
"headline": "Great stay",
"score": 9,
"pros": "Location, breakfast",
"cons": "Street noise at night",
"date": "2026-09-12",
"language": "en",
"reviewer_name": "Ana"
}
]
Where this page sits among the hotel's reviews.
Show child attributes
Show child attributes
