NAV
Shell HTTP JavaScript Ruby Python PHP Java Go

ReviewsAPI V2.0

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Introduction

The ReviewsAPI facilitates extensive monitoring of review data for 2m+ hotels worldwide, including textual content of reviews, numerical scoring associated with the reviews, and sentiment analysis indicating the sentiment expressed in the reviews. Every day, thousands of customers rely on our ReviewsAPI to monitor customer feedback, improve their brand’s online presence, and monitor competitor reviews. Users have the flexibility to choose between scheduling extraction requests at specific intervals or making real-time requests to fetch the latest reviews and related data. Our ReviewsAPI integration is fully scalable, accurate and provides a fast and easy solution that can help you stay ahead of the competition.

The ReviewsAPI follows a REST architecture, providing a structured approach to accessing its resources. It utilizes resource-oriented URLs, accepts request bodies primarily in JSON format, returns responses encoded in JSON, and adheres to standard HTTP response codes, authentication methods, and HTTP verbs.

The API's endpoints can be broadly categorized into the following modules:

Review API is a Review data fetching service.It enables you to request and schedule ('create shops') reviews data and scoring ('rating') for specific hotels and from specific sources.
Hotel rating and review data provides insights to the quality, service, and overall guest experience of a hotel. This data typically includes:

Ratings: Numerical scores assigned to hotels. Ratings are presented as total for property and per their categories such as cleanliness, location, service, amenities etc.

Reviews: Full review content from guests sharing their personal experiences, opinions, and recommendations.

Sentiment Analysis: The process of identifying and categorizing the emotional tone of reviews (positive, negative, or neutral).

This Swagger document outlines the methods organized into the following groups for interacting with the ReviewsAPI.

Authentication - Gain access to the API using authentication methods

Hotel Information - Search for hotels and retrieve detailed hotel information

Review Shops - Manage shop configurations for reviews

Review Schedules - Set up a schedule to run a Review Shop

Reviews and Ratings Information - Fetch ratings and review information for hotels

Hooks - Define the endpoint to receive Shop alerts

Synopsis - Fetch reviews count for the last one year

References - Retrieve reference values used in ReviewsAPI

Time Zone - All timestamps and time-related values returned by the API are in Coordinated Universal Time (UTC).

This Swagger Explorer offers an environment for users to test all methods by passing the appropriate parameters outlined in this document. It functions exactly as it would within the application, allowing users to evaluate different combinations of parameter values and explore various use cases.

Authorization

Each request to the Reviews API must be authenticated with an access token. You can obtain this token by logging in with the credentials provided in your ReviewsAPI packet. The access token is valid for 24 hours from the time of generation.
The access token must be included in the 'Authorization' header, as shown in the example below:

If your access token is A90324XXZUZUgpO0dd6npHcM83CJ..., every request should include the following header:

Authorization: Bearer A90324XXZUZUgpO0dd6npHcM83CJ...
    

In summary, the ReviewsAPI adopts a RESTful design, offering well-defined endpoints and adhering to standard practices for resource access and manipulation. Its modules cover user authentication, source exploration, dependency retrieval, schedule management, and shop-specific data extraction for hotel reviews.

Images

Web: Aggregate Intelligence Inc.

Authentication

User Login

Code samples

# You can also use wget
curl -X POST /auth/token \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST /auth/token HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "userName": "string",
  "password": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};

fetch('/auth/token',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post '/auth/token',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('/auth/token', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/auth/token', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/auth/token");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/auth/token", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /auth/token

Implementation Notes:

This endpoint authenticates the validity of a username and password combination. A valid token will be generated if the authentication is successful. Use the username and password provided to you in your ReviewsAPI packet.

Mandatory Fields:

Body parameter

{
  "userName": "string",
  "password": "string"
}

Parameters

Name In Type Required Description
body body userauth false none

Example responses

200 Response

{
  "accessToken": "string",
  "tokenType": "Bearer",
  "expiresIn": "1d",
  "userName": "string",
  ".issued": "2025-05-06T14:15:22Z",
  ".expires": "2025-05-06T14:15:22Z"
}

Responses

Status Meaning Description Schema
200 OK Success userresp
400 Bad Request Bad Request None
401 Unauthorized Authentication Failed or Account validity expired None
404 Not Found User Not Found None
500 Internal Server Error Internal server error None

Reference

Get Sources

Code samples

# You can also use wget
curl -X GET /reference/sources \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /reference/sources HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/reference/sources',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.get '/reference/sources',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.get('/reference/sources', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/reference/sources', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/reference/sources");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/reference/sources", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /reference/sources

Implementation Notes:

This API call returns a list of available sources along with their unique identifiers in the ReviewsAPI. This enables you to specify a particular source ID when defining a ReviewShop.

Example responses

200 Response

[
  {
    "sourceCode": 1,
    "sourceName": "expedia"
  }
]

Responses

Status Meaning Description Schema
200 OK Success Inline
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal server error None

Response Schema

Status Code 200

Name Type Required Restrictions Description
» sourceCode number false none It represents the unique identifier of the source code.
» sourceName string false none It represents the name of the source.

Get Languages

Code samples

# You can also use wget
curl -X GET /reference/languages \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /reference/languages HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/reference/languages',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.get '/reference/languages',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.get('/reference/languages', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/reference/languages', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/reference/languages");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/reference/languages", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /reference/languages

Implementation Notes:

This API call retrieves a list of all available language codes along with their corresponding language names.

language: The code representing the language (e.g., "en" for English).

languageName: The full name of the language associated with the code (e.g., "English").

Example responses

200 Response

[
  {
    "language": "af",
    "languageName": "Afrikaans"
  }
]

Responses

Status Meaning Description Schema
200 OK Success Inline
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal server error None

Response Schema

Status Code 200

Name Type Required Restrictions Description
» language string false none It represents the unique identifier of the language code.
» languageName string false none It represents the name of the language.

Hotel Information

Search Hotels

Code samples

# You can also use wget
curl -X POST /hotels \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /hotels HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "hotelName": "Ocean Lodge Santa Monica Beach Hotel",
  "city": "Los Angeles",
  "state": "California",
  "country": "United States of America",
  "zip": "90401",
  "geoLocationFilter": {
    "latitude": "34.01",
    "longitude": "-118.49",
    "radius": "50km"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/hotels',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/hotels',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/hotels', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/hotels', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/hotels");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/hotels", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /hotels

Implementation Notes:

This API call retrieves a list of all hotels available in the ReviewsAPI database for review retrieval. If a hotel you wish to retrieve reviews for is not listed, please send the request using POST /Hotelmaprequest endpoint. We will make efforts to add the hotel to our database within 24 to 48 business hours.

Mandatory Fields:

Note: Either the country or geoLocationFilter are mandatory parameters. When using geoLocationFilter, all three sub-parameters (latitude, longitude, and radius) are required. All other parameters are optional.

Body parameter

{
  "hotelName": "Ocean Lodge Santa Monica Beach Hotel",
  "city": "Los Angeles",
  "state": "California",
  "country": "United States of America",
  "zip": "90401",
  "geoLocationFilter": {
    "latitude": "34.01",
    "longitude": "-118.49",
    "radius": "50km"
  }
}

Parameters

Name In Type Required Description
hotelsPerPage query integer false The number of items to display in a page
pageNumber query integer false Indicates the current page number
body body hotelsReq false none

Example responses

200 Response

{
  "totalRecords": 10000,
  "fetchedRecords": 10,
  "totalPages": 1000,
  "currentPage": 1,
  "pageSize": 10,
  "hotels": [
    {
      "hotelCode": 1362151,
      "hotelName": "Ocean Lodge Santa Monica Beach Hotel",
      "address": "1667 Ocean Avenue",
      "city": "Los Angeles",
      "state": "California",
      "country": "United States of America",
      "location": [{
        "latitude": "34.01012891",
        "longitude": "-118.49312648"
      }],
      "zip": "90401",
      "matchScore": 72.228226,
      "reviewsCount": 0
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Ok hotelsResp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Search by Hotel Code

Code samples

# You can also use wget
curl -X POST /hotelinfo \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /hotelinfo HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "hotelCode": 2005,
  "hotelCodes": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/hotelinfo',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/hotelinfo',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/hotelinfo', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/hotelinfo', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/hotelinfo");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/hotelinfo", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /hotelinfo

Implementation Notes:

This API call utilizes the hotelcode obtained from the POST/hotels endpoint to retrieve a list of sources available for a specific hotel. If a source you wish to retrieve reviews for is not configured with the hotel, please send the request using POST /sourcemaprequest endpoint. We will make efforts to add the hotel to our database within 24 to 48 business hours.

Parameters:

Mandatory Fields:

Body parameter

{
  "hotelCode": 2005,
  "hotelCodes": [
    0
  ]
}

Parameters

Name In Type Required Description
body body hotelinfo false none

Example responses

200 Response

{
  "hotelCode": 0,
  "hotelName": "string",
  "address": "string",
  "city": "string",
  "state": "string",
  "country": "string",
  "starRating": "string",
  "zip": "string",
  "lat": 0,
  "long": 0,
  "sources": {
    "websiteCode": 0,
    "websiteName": "string",
    "url": "string"
  }
}

Responses

Status Meaning Description Schema
200 OK Success hotelinforesp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Create Hotel Map Request

Code samples

# You can also use wget
curl -X POST /hotelmaprequest \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /hotelmaprequest HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "hotelName": "",
  "address": "",
  "city": "",
  "state": "",
  "country": "",
  "zip": "",
  "latitude": 0,
  "longitude": 0,
  "url": [
    "string"
  ],
  "websiteCodes": [
    0
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/hotelmaprequest',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/hotelmaprequest',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/hotelmaprequest', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/hotelmaprequest', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/hotelmaprequest");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/hotelmaprequest", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /hotelmaprequest

Implementation Notes:

This method enables users to add a new hotel to the ReviewsAPI database if it is not already listed. Users can provide details such as the hotel name, address, geographic coordinates, and optionally include reference URLs or preferred website codes to assist with mapping. A unique requestid is automatically generated for each mapping request.

Mandatory Fields:

Status Code:

Body parameter

{
  "hotelName": "",
  "address": "",
  "city": "",
  "state": "",
  "country": "",
  "zip": "",
  "latitude": 0,
  "longitude": 0,
  "url": [
    "string"
  ],
  "websiteCodes": [
    0
  ]
}

Parameters

Name In Type Required Description
body body newmapreq false none

Example responses

201 Response

{
  "requestId": 0,
  "referenceHotelCodes": [
    0
  ],
  "statusCode": 1,
  "statusMsg": "string",
  "approximateTime": "2025-05-06",
  "createdDate": "2024-04-30T08:10:49.835Z"
}

Responses

Status Meaning Description Schema
201 Created Created newmapresp
400 Bad Request Bad request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Get Hotel Map Request

Code samples

# You can also use wget
curl -X GET /hotelmaprequest/{requestId} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /hotelmaprequest/{requestId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/hotelmaprequest/{requestId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.get '/hotelmaprequest/{requestId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.get('/hotelmaprequest/{requestId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/hotelmaprequest/{requestId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/hotelmaprequest/{requestId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/hotelmaprequest/{requestId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /hotelmaprequest/{requestId}

Implementation Notes:

This endpoint returns the status of a hotel map request. It requires the requestid as an input parameter to retrieve the current status.

Status Codes:

Parameters

Name In Type Required Description
requestId path integer(int32) true none

Example responses

200 Response

{
  "requestId": 0,
  "referenceHotelCodes": [
    0
  ],
  "statusCode": 1,
  "statusMsg": "string",
  "approximateTime": "2025-05-06",
  "createdDate": "2024-04-30T08:10:49.835Z"
}

Responses

Status Meaning Description Schema
200 OK Success newmapresp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Create Source Map Request

Code samples

# You can also use wget
curl -X POST /sourcemaprequest \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /sourcemaprequest HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "hotelCode": 0,
  "sourceCodes": [
    0
  ],
  "urls": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/sourcemaprequest',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/sourcemaprequest',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/sourcemaprequest', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/sourcemaprequest', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/sourcemaprequest");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/sourcemaprequest", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /sourcemaprequest

Implementation Notes:

This method allows users to request the mapping of a hotel to a source that it is not currently linked to. Users must provide the hotelcode and the sourceCode. A unique requestid is automatically generated for each mapping request. You can refer to the list of supported sources for Ratings and Review extraction at the GET/reference/sources endpoint in the Reference section.

Parameters

Mandatory Fields:

Status Codes:

Body parameter

{
  "hotelCode": 0,
  "sourceCodes": [
    0
  ],
  "urls": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body sourcemapreq false none

Example responses

201 Response

{
  "requestId": 0,
  "hotelCode": 0,
  "sourceCodes": [
    0
  ],
  "urls": [
    "string"
  ],
  "status": 1,
  "approximateTime": 0,
  "createdDate": "2024-04-30T08:10:49.835Z"
}

Responses

Status Meaning Description Schema
201 Created Created sourcemapresp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Get Source Map Request

Code samples

# You can also use wget
curl -X GET /sourcemaprequest/{requestId} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /sourcemaprequest/{requestId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/sourcemaprequest/{requestId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.get '/sourcemaprequest/{requestId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.get('/sourcemaprequest/{requestId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/sourcemaprequest/{requestId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/sourcemaprequest/{requestId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/sourcemaprequest/{requestId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /sourcemaprequest/{requestId}

Implementation Notes:

This endpoint returns the status of a source map request. It requires the requestid as an input parameter to retrieve the current status.

Status Codes:

Parameters

Name In Type Required Description
requestId path integer(int32) true none

Example responses

200 Response

{
  "requestId": 0,
  "hotelCode": 0,
  "sourceCodes": [
    0
  ],
  "urls": [
    "string"
  ],
  "status": 1,
  "approximateTime": 0,
  "createdDate": "2024-04-30T08:10:49.835Z"
}

Responses

Status Meaning Description Schema
200 OK Success sourcemapresp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Review Shops

Create Shop

Code samples

# You can also use wget
curl -X POST /shop \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /shop HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "shopName": "Abc",
  "hotelCodes": [
    1,
    123
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopType": 1
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/shop',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/shop',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/shop', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/shop', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/shop");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/shop", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /shop

Implementation Notes:

This endpoint allows you to create a review shop, which is a collection of hotel codes and source codes for which review or rating information is requested. It also lets you specify the type of review information needed using the shoptype parameter.


Parameters:

Mandatory Fields:

Body parameter

{
  "shopName": "Abc",
  "hotelCodes": [
    1,
    123
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopType": 1
}

Parameters

Name In Type Required Description
body body createShopReq false none

Example responses

201 Response

{
  "message": "Shops details inserted successfully!",
  "shopId": 1122
}

Responses

Status Meaning Description Schema
201 Created Created createshopRes
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Get All Shops

Code samples

# You can also use wget
curl -X GET /shop/list \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /shop/list HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/shop/list',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.get '/shop/list',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.get('/shop/list', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/shop/list', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/shop/list");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/shop/list", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /shop/list

Implementation Notes:

This endpoint retrieves details of all the review shops created by the user. It also allows you to configure the following:

Parameters

Name In Type Required Description
shopsPerPage query integer false The number of items to display in a page
pageNumber query integer false Indicates the current page number

Example responses

200 Response

[
  {
    "totalRecords": 2,
    "fetchedRecords": 2,
    "totalPages": 1,
    "currentPage": 1,
    "pageSize": 10,
    "shops": [
      {
        "shopId": 20,
        "hotelCodes": [
          1,
          123
        ],
        "sourceCodes": [
          1,
          283
        ],
        "shopName": "Abc",
        "userId": 1,
        "userName": "reviews@ai.com",
        "createdDate": "2025-05-06T14:15:22Z",
        "modifiedDate": "2025-05-06T14:15:22Z",
        "status": 1,
        "shopType": 1
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK shop details display reviewsShopGetAllResp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Get Shop

Code samples

# You can also use wget
curl -X GET /shop/{shopId} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /shop/{shopId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/shop/{shopId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.get '/shop/{shopId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.get('/shop/{shopId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/shop/{shopId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/shop/{shopId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/shop/{shopId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /shop/{shopId}

Implementation Notes:

This endpoint retrieves all details for the specified shopID.

Parameters

Name In Type Required Description
shopId path integer true Enter shopId

Example responses

200 Response

{
  "shopId": 1,
  "hotelCodes": [
    1,
    123
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopName": "Abc",
  "userId": 1,
  "userName": "gokul@aggregateintelligence.in",
  "createdDate": "2023-05-10T06:12:58.097Z",
  "modifiedDate": "2023-05-10T06:12:58.097Z",
  "status": 1,
  "shopType": 1
}

Responses

Status Meaning Description Schema
200 OK shop details display reviewsShopGetResp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Update Shop

Code samples

# You can also use wget
curl -X PUT /shop/{shopId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PUT /shop/{shopId} HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "shopName": "Abc",
  "hotelCodes": [
    1,
    123
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopType": 1
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/shop/{shopId}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.put '/shop/{shopId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.put('/shop/{shopId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/shop/{shopId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/shop/{shopId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/shop/{shopId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /shop/{shopId}

Implementation Notes:

This method enables you to edit a shop by providing the shopID as an input.

Body parameter

{
  "shopName": "Abc",
  "hotelCodes": [
    1,
    123
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopType": 1
}

Parameters

Name In Type Required Description
shopId path integer true Enter shopId
body body createShopReq false none

Example responses

200 Response

{
  "message": "Shops details updated successfully"
}

Responses

Status Meaning Description Schema
200 OK Updated reviewsShopPutResp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
404 Not Found Not found None
500 Internal Server Error Internal Server Error None

Delete Shop

Code samples

# You can also use wget
curl -X DELETE /shop/{shopId} \
  -H 'Authorization: API_KEY'

DELETE /shop/{shopId} HTTP/1.1


const headers = {
  'Authorization':'API_KEY'
};

fetch('/shop/{shopId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'API_KEY'
}

result = RestClient.delete '/shop/{shopId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'API_KEY'
}

r = requests.delete('/shop/{shopId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/shop/{shopId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/shop/{shopId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/shop/{shopId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /shop/{shopId}

This method allows you to delete a shop using the shopID of the review shop.

Parameters

Name In Type Required Description
shopId path integer true Enter shopId

Responses

Status Meaning Description Schema
200 OK Deleted None
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Review Schedules

Create Schedule

Code samples

# You can also use wget
curl -X POST /schedule \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /schedule HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "scheduleName": "X-Mas",
  "shopId": 1234,
  "year": "*",
  "month": "*",
  "dow": "*",
  "day": "*",
  "hour": "1",
  "minute": "00",
  "seconds": "00",
  "startDate": "2025-05-06",
  "endDate": "2025-05-06"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/schedule',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/schedule',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/schedule', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/schedule', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/schedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/schedule", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /schedule

Implementation Notes:

This endpoint allows you to create custom schedules for executing review shops at specified dates and times.

Parameters

Note: All schedules are queued every fifteen minutes. Therefore, jobs scheduled within the current fifteen minutes will run from the next hour.

Mandatory Fields:

Body parameter

{
  "scheduleName": "X-Mas",
  "shopId": 1234,
  "year": "*",
  "month": "*",
  "dow": "*",
  "day": "*",
  "hour": "1",
  "minute": "00",
  "seconds": "00",
  "startDate": "2025-05-06",
  "endDate": "2025-05-06"
}

Parameters

Name In Type Required Description
body body createScheduleReq false none

Example responses

201 Response

{
  "message": "Schedule details inserted successfully!",
  "scheduleId": 2233
}

Responses

Status Meaning Description Schema
201 Created Created createscheduleRes
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
404 Not Found Not found None
500 Internal Server Error Internal Server Error None

Get All Schedules

Code samples

# You can also use wget
curl -X GET /schedule/list \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /schedule/list HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/schedule/list',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.get '/schedule/list',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.get('/schedule/list', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/schedule/list', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/schedule/list");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/schedule/list", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /schedule/list

Implementation Notes:

This API call retrieves the list of schedules defined in your account. You can fetch schedule details for a specific shop by providing the shopId. If no shopId is provided, all schedules will be displayed.

Parameters:

Parameters

Name In Type Required Description
shopId query integer false Enter shopId
schedulesPerPage query integer false The number of items to display in a page
pageNumber query integer false Indicates the current page number

Example responses

200 Response

[
  {
    "totalRecords": 2,
    "fetchedRecords": 2,
    "totalPages": 1,
    "currentPage": 1,
    "pageSize": 10,
    "schedules": [
      {
        "scheduleId": 1,
        "scheduleName": "X-Mas",
        "shopId": 1234,
        "year": "*",
        "month": "*",
        "dow": "*",
        "day": "*",
        "hour": "1",
        "minute": "*",
        "seconds": "*",
        "startDate": "2025-05-06",
        "endDate": "2025-05-06"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK Success schedulesGetAllResp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Get Schedule

Code samples

# You can also use wget
curl -X GET /schedule/{scheduleId} \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

GET /schedule/{scheduleId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/schedule/{scheduleId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.get '/schedule/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.get('/schedule/{scheduleId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/schedule/{scheduleId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/schedule/{scheduleId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/schedule/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /schedule/{scheduleId}

Implementation Notes:

This API call retrieves the details of a specific schedule based on the provided schedule ID.

Parameters

Name In Type Required Description
scheduleId path integer true Enter scheduleId

Example responses

200 Response

[
  {
    "scheduleId": 16,
    "scheduleName": "testingschedule",
    "shopId": 23,
    "month": "12",
    "dayOfWeek": "6",
    "day": "20",
    "hour": "20",
    "minute": "30",
    "startDate": "2023-30-12",
    "endDate": "2023-30-14",
    "createdDate": "2023-04-28T09:57:19.347Z",
    "modifiedDate": "2023-04-28T09:57:19.347Z",
    "status": 1
  }
]

Responses

Status Meaning Description Schema
200 OK Success scheduleGetResp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Update Schedule

Code samples

# You can also use wget
curl -X PUT /schedule/{scheduleId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

PUT /schedule/{scheduleId} HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "scheduleName": "X-Mas",
  "year": "*",
  "month": "*",
  "dow": "*",
  "day": "*",
  "hour": "1",
  "minute": "00",
  "seconds": "00",
  "startDate": "2025-05-06",
  "endDate": "2025-05-06"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/schedule/{scheduleId}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.put '/schedule/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.put('/schedule/{scheduleId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/schedule/{scheduleId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/schedule/{scheduleId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/schedule/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /schedule/{scheduleId}

Implementation Notes:

This method enables you to edit a schedule by providing the scheduleID as an input.

Body parameter

{
  "scheduleName": "X-Mas",
  "year": "*",
  "month": "*",
  "dow": "*",
  "day": "*",
  "hour": "1",
  "minute": "00",
  "seconds": "00",
  "startDate": "2025-05-06",
  "endDate": "2025-05-06"
}

Parameters

Name In Type Required Description
scheduleId path integer true Enter your scheduleId
body body putScheduleReq false none

Example responses

200 Response

{
  "message": "Schedules details updated successfully"
}

Responses

Status Meaning Description Schema
200 OK Updated scheduleputResp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Delete Schedule

Code samples

# You can also use wget
curl -X DELETE /schedule/{scheduleId} \
  -H 'Authorization: API_KEY'

DELETE /schedule/{scheduleId} HTTP/1.1


const headers = {
  'Authorization':'API_KEY'
};

fetch('/schedule/{scheduleId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'API_KEY'
}

result = RestClient.delete '/schedule/{scheduleId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'API_KEY'
}

r = requests.delete('/schedule/{scheduleId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/schedule/{scheduleId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/schedule/{scheduleId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/schedule/{scheduleId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /schedule/{scheduleId}

Implementation Notes:

This endpoint allows you to delete an existing schedule by providing the scheduleID as an input.

Parameters

Name In Type Required Description
scheduleId path integer true Enter your scheduleId

Responses

Status Meaning Description Schema
200 OK Deleted None
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Shop Status

Get Shop Status

Code samples

# You can also use wget
curl -X POST /shop/status \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /shop/status HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "shopId": 6,
  "scheduleId": 47,
  "sinceDate": "2025-05-06"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/shop/status',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/shop/status',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/shop/status', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/shop/status', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/shop/status");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/shop/status", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /shop/status

Implementation Notes:

This method retrieves the status of a specified shopID, indicating whether the shop is completed or still in progress

Mandatory Fields:

Status Codes:

Body parameter

{
  "shopId": 6,
  "scheduleId": 47,
  "sinceDate": "2025-05-06"
}

Parameters

Name In Type Required Description
body body shopStatusReq false none

Example responses

200 Response

[
  {
    "shopId": 1,
    "scheduleId": 2,
    "statusMessage": "InProgress"
  }
]

Responses

Status Meaning Description Schema
200 OK shop status display shopstatusList
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
404 Not Found Not Found None
500 Internal Server Error Internal Server Error None

Reviews Summary and Details

Get Reviews Summary

Code samples

# You can also use wget
curl -X POST /reviews/summary \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /reviews/summary HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "hotelCodes": [
    2005,
    3960748
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopId": 10
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/reviews/summary',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/reviews/summary',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/reviews/summary', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/reviews/summary', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/reviews/summary");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/reviews/summary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /reviews/summary

Implementation Notes:

This method allows you to retrieve a Reviews Summary for a specific hotel by providing the hotelcodes, sourcecodes, and shopid.

Mandatory Fields:

Additionally, this endpoint enables you to configure the following options:

Body parameter

{
  "hotelCodes": [
    2005,
    3960748
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopId": 10
}

Parameters

Name In Type Required Description
reviewsPerPage query integer false The number of items to display in a page
pageNumber query integer false Indicates the current page number
body body reviewsSummaryReq false none

Example responses

200 Response

[
  {
    "totalRecords": 2,
    "fetchedRecords": 2,
    "totalPages": 1,
    "currentPage": 1,
    "pageSize": 10,
    "summaryDetails": [
      {
        "hotelCode": 3960748,
        "websiteCode": 1,
        "hotelReview": 6,
        "outOfReview": 10,
        "totalReviewCount": 3,
        "cleanliness": 7.4,
        "comfort": 8,
        "facilities": 4.8,
        "staff": 7.4,
        "valueForMoney": 4.2,
        "freeWifi": 4.6,
        "location": 4.2,
        "foodDrinks": 6,
        "room": 5,
        "hotelCondition": 4.8,
        "service": 7.4,
        "pool": 5,
        "sleepQuality": 5,
        "statusCode": 200,
        "reviewUrl": "https://www.expedia.co.in/Guadalajara-Hotels-Expo-Satelite-Hotel-Suites.h91821001.Hotel-Information",
        "dtCollected": "2025-05-06T14:15:22Z",
        "hotelId": 91821001,
        "userId": 7,
        "queueId": 1986,
        "shopId": 10,
        "rank": 10,
        "city": "Guadalajara",
        "websiteName": "Expedia",
        "starRating": 7
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK Ok reviewsSummaryResp
400 Bad Request Validation Error None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Get Reviews Details

Code samples

# You can also use wget
curl -X POST /reviews/details \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /reviews/details HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "hotelCode": 3960748,
  "sourceCodes": [
    1,
    283
  ],
  "shopId": 10,
  "reviewDateFilter": {
    "start": "2025-05-06",
    "end": "2025-05-06"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/reviews/details',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/reviews/details',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/reviews/details', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/reviews/details', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/reviews/details");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/reviews/details", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /reviews/details

Implementation Notes:

This method allows you to retrieve detailed reviews for a specific hotel by providing the hotelcodes, sourcecodes, and shopid. You can also filter the review details by specifying a start and end date.

Mandatory Fields:

Additionally, this endpoint enables you to configure the following options:

Body parameter

{
  "hotelCode": 3960748,
  "sourceCodes": [
    1,
    283
  ],
  "shopId": 10,
  "reviewDateFilter": {
    "start": "2025-05-06",
    "end": "2025-05-06"
  }
}

Parameters

Name In Type Required Description
reviewsPerPage query integer false The number of items to display in a page
pageNumber query integer false Indicates the current page number
body body reviewsDetailsReq false none

Example responses

200 Response

{
  "totalRecords": 670,
  "fetchedRecords": 10,
  "totalPages": 67,
  "currentPage": 1,
  "pageSize": 10,
  "reviewDetails": [
    {
      "hotelCode": 133268,
      "websiteCode": 1,
      "reviewHeader": "",
      "reviewerName": "Peter",
      "reviewedDate": "2024-07-22T00:00:00.000Z",
      "reviewScore": 10,
      "location": null,
      "replyFromHotel": "",
      "reviewContent": "Great place with nice rooms and beautiful view (both to Mt Kinabalu and Kota Kinabalu). Standard Malaysian breakfast and decent lunch and dinner menu. Staff was very friendly and helpful. The room (104) was very good although there are a few ants around (so make sure not to leave food around). Bed, shower and toilet were nice and clean. Internet worked quite well (not guaranteed in this area). Our best place in Sabah so far (out of 6 good hotels).",
      "tripType": "Travelled with partner",
      "language": "en",
      "reviewId": "669dd2dc198e214ac36d85f4",
      "hotelId": 8011143,
      "dtCollected": "2024-09-03T09:35:52.353Z",
      "dtModified": null,
      "userId": 9,
      "queueId": 13939,
      "shopId": 1110,
      "url": "https://www.expedia.co.in/Kota-Kinabalu-Hotels-Kasih-Sayang-Health-Resort.h8011143.Hotel-Information",
      "websiteName": "EXPEDIA",
      "properties": null,
      "polarity": null,
      "sentimentScore": null,
      "authorCountry": "",
      "breakfastRating": null,
      "cleanlinessRating": null,
      "locationRating": null,
      "roomsRating": null,
      "serviceRating": null,
      "sleepQualityRating": null,
      "spaRating": null,
      "valueRating": null,
      "reviewsCount": 28,
      "reviewerType": null,
      "respondUrl": null,
      "outOfReview": 10
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Ok reviewsDetailsResp
400 Bad Request Validation Error None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Get Delta Reviews Details

Code samples

# You can also use wget
curl -X POST /delta/reviews/details \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /delta/reviews/details HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "shopId": 10
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/delta/reviews/details',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/delta/reviews/details',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/delta/reviews/details', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/delta/reviews/details', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/delta/reviews/details");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/delta/reviews/details", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /delta/reviews/details

Implementation Notes:

This method enables you to fetch Delta Review Details (reviews that are newly added since your last retrieval) for a specific shopid.

Mandatory Fields:

Body parameter

{
  "shopId": 10
}

Parameters

Name In Type Required Description
reviewsPerPage query integer false The number of items to display in a page
pageNumber query integer false Indicates the current page number
body body reviewsDeltaReq false none

Example responses

200 Response

{
  "totalRecords": 670,
  "fetchedRecords": 10,
  "totalPages": 67,
  "currentPage": 1,
  "pageSize": 10,
  "reviewDeltaDetails": [
    {
      "hotelCode": 133268,
      "websiteCode": 1,
      "reviewHeader": "",
      "reviewerName": "Peter",
      "reviewedDate": "2024-07-22T00:00:00.000Z",
      "reviewScore": 10,
      "location": null,
      "replyFromHotel": "",
      "reviewContent": "Great place with nice rooms and beautiful view (both to Mt Kinabalu and Kota Kinabalu). Standard Malaysian breakfast and decent lunch and dinner menu. Staff was very friendly and helpful. The room (104) was very good although there are a few ants around (so make sure not to leave food around). Bed, shower and toilet were nice and clean. Internet worked quite well (not guaranteed in this area). Our best place in Sabah so far (out of 6 good hotels).",
      "tripType": "Travelled with partner",
      "language": "en",
      "reviewId": "669dd2dc198e214ac36d85f4",
      "hotelId": 8011143,
      "dtCollected": "2024-09-03T09:35:52.353Z",
      "dtModified": null,
      "userId": 9,
      "queueId": 13939,
      "shopId": 1110,
      "url": "https://www.expedia.co.in/Kota-Kinabalu-Hotels-Kasih-Sayang-Health-Resort.h8011143.Hotel-Information",
      "websiteName": "EXPEDIA",
      "properties": null,
      "polarity": null,
      "sentimentScore": null,
      "authorCountry": "",
      "breakfastRating": null,
      "cleanlinessRating": null,
      "locationRating": null,
      "roomsRating": null,
      "serviceRating": null,
      "sleepQualityRating": null,
      "spaRating": null,
      "valueRating": null,
      "reviewsCount": 28,
      "reviewerType": null,
      "respondUrl": null,
      "outOfReview": 10
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Ok reviewsDeltaResp
204 No Content No Content None
400 Bad Request Validation Error None
401 Unauthorized Authorization Failed None
500 Internal Server Error Internal Server Error None

Synopsis

POST Synopsis Last One Year

Code samples

# You can also use wget
curl -X POST /synopsis/lastoneyear \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /synopsis/lastoneyear HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "hotelCodes": [
    72110
  ],
  "sourceCodes": [
    1
  ],
  "shopId": 537
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/synopsis/lastoneyear',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/synopsis/lastoneyear',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/synopsis/lastoneyear', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/synopsis/lastoneyear', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/synopsis/lastoneyear");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/synopsis/lastoneyear", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /synopsis/lastoneyear

This method retrieves the number of reviews available for a specific hotel over the past year by providing the hotelcodes, sourcecodes, and shopid. The result will include a month-by-month count of reviews, organized by each hotel and source.

Mandatory Fields:

Body parameter

{
  "hotelCodes": [
    72110
  ],
  "sourceCodes": [
    1
  ],
  "shopId": 537
}

Parameters

Name In Type Required Description
body body synopsisReq false none

Example responses

200 Response

{
  "websiteName": "Makemytrip",
  "counts": {
    "2024-02": 2
  }
}

Responses

Status Meaning Description Schema
200 OK Ok synopsisResp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
404 Not Found Not found None
500 Internal Server Error Internal Server Error None

Hooks

Create Hook

Code samples

# You can also use wget
curl -X POST /hooks/shopalerts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

POST /hooks/shopalerts HTTP/1.1

Content-Type: application/json
Accept: application/json

const inputBody = '{
  "endpoint": "www.sample.com",
  "authType": "Basic",
  "userName": "username",
  "password": "password",
  "token": ""
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('/hooks/shopalerts',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post '/hooks/shopalerts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('/hooks/shopalerts', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/hooks/shopalerts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/hooks/shopalerts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/hooks/shopalerts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /hooks/shopalerts

Implementation Notes:

This API call uses a Web Hook to deliver the Queue status to a specified endpoint. Once a hook is defined, the status whether a successful completion will be sent to your endpoint.

Mandatory Fields:

Body parameter

{
  "endpoint": "www.sample.com",
  "authType": "Basic",
  "userName": "username",
  "password": "password",
  "token": ""
}

Parameters

Name In Type Required Description
body body reviewhookreq false none

Example responses

201 Response

{
  "requestId": 1,
  "message": "Hook created successfully"
}

Responses

Status Meaning Description Schema
201 Created Success reviewhookresp
400 Bad Request Bad Request None
401 Unauthorized Authorization Failed None
409 Conflict Already Exists None
500 Internal Server Error Internal Server Error None

Schemas

userauth

{
  "userName": "string",
  "password": "string"
}

Properties

Name Type Required Restrictions Description
userName string false none It represents the username of the user.
password string false none It represents the password associated with the user.

userresp

{
  "accessToken": "string",
  "tokenType": "Bearer",
  "expiresIn": "1d",
  "userName": "string",
  ".issued": "2025-05-06T14:15:22Z",
  ".expires": "2025-05-06T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
accessToken string false none An access token is a credential that is used to authenticate and authorize access to a specific resource.
tokenType string false none It represents the type of token being used.
expiresIn string false none It represents expiration time of the access token.
userName string false none It represents the username associated with the user.
.issued string(date-time) false none It represents the timestamp when the access token was issued.
.expires string(date-time) false none It represents the timestamp when the access token will expire.

userregreq

{
  "userName": "string",
  "password": "string",
  "validTill": "2024-12-31",
  "monthlyCalls": 0,
  "weeklyCalls": 0,
  "dailyCalls": 0
}

Properties

Name Type Required Restrictions Description
userName string false none It represents the username associated with the user.
password string false none It represents the password associated with the user.
validTill string(date) false none none
monthlyCalls number false none none
weeklyCalls number false none none
dailyCalls number false none none

reviewsSummaryReq

{
  "hotelCodes": [
    2005,
    3960748
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopId": 10
}

Properties

Name Type Required Restrictions Description
hotelCodes [number] false none Unique code of the hotel to fetch reviews for (as obtained e.g from POST /entity/hotels)
sourceCodes [number] false none Optionally filter by reviews from these specific website/sources only (as obtained from GET /references/sources). By default, it will fetch from all sources available.
shopId integer false none Identifier of the shop.

reviewsDetailsReq

{
  "hotelCode": 3960748,
  "sourceCodes": [
    1,
    283
  ],
  "shopId": 10,
  "reviewDateFilter": {
    "start": "2025-05-06",
    "end": "2025-05-06"
  }
}

Properties

Name Type Required Restrictions Description
hotelCode number false none Unique code of the hotel to fetch reviews for (as obtained e.g from POST /entity/hotels)
sourceCodes [number] false none Optionally filter by reviews from these specific website/sources only (as obtained from GET /references/sources). By default, it will fetch from all sources available.
shopId number false none none
reviewDateFilter object false none none
» start string(date) true none Specified date should be MM/DD/YYYY format
» end string(date) false none Specified date should be MM/DD/YYYY format. Note that , if unspecified, this default is today's date

reviewsDeltaReq

{
  "shopId": 10
}

Properties

Name Type Required Restrictions Description
shopId number false none none

reviewsSummaryResp

[
  {
    "totalRecords": 2,
    "fetchedRecords": 2,
    "totalPages": 1,
    "currentPage": 1,
    "pageSize": 10,
    "summaryDetails": [
      {
        "hotelCode": 3960748,
        "websiteCode": 1,
        "hotelReview": 6,
        "outOfReview": 10,
        "totalReviewCount": 3,
        "cleanliness": 7.4,
        "comfort": 8,
        "facilities": 4.8,
        "staff": 7.4,
        "valueForMoney": 4.2,
        "freeWifi": 4.6,
        "location": 4.2,
        "foodDrinks": 6,
        "room": 5,
        "hotelCondition": 4.8,
        "service": 7.4,
        "pool": 5,
        "sleepQuality": 5,
        "statusCode": 200,
        "reviewUrl": "https://www.expedia.co.in/Guadalajara-Hotels-Expo-Satelite-Hotel-Suites.h91821001.Hotel-Information",
        "dtCollected": "2025-05-06T14:15:22Z",
        "hotelId": 91821001,
        "userId": 7,
        "queueId": 1986,
        "shopId": 10,
        "rank": 10,
        "city": "Guadalajara",
        "websiteName": "Expedia",
        "starRating": 7
      }
    ]
  }
]

Properties

Name Type Required Restrictions Description
totalRecords number false none Total number of records available.
fetchedRecords number false none Number of records fetched in the current response.
totalPages number false none Total number of pages available.
currentPage number false none Current page number.
pageSize number false none Number of records per page.
summaryDetails [object] false none It provides a summary of reviews.
» hotelCode number false none A unique identifier for the hotel associated with the review.
» websiteCode number false none Code of the website where the review was posted.
» hotelReview number false none It represents the reviews available for the hotel.
» outOfReview number false none It represents the maximum score or rating that can be given in the review (e.g., a review scale of 1 to 5)
» totalReviewCount number false none none
» cleanliness number false none It represents the rating given to the cleanliness of the hotel by the reviewer.
» comfort number false none It represents the rating given to the comfort level of the hotel by the reviewer.
» facilities number false none none
» staff number false none It represents the rating given to the hotel staff by the reviewer.
» valueForMoney number false none It represents rating given to the value for money provided by the hotel according to the reviewer.
» freeWifi number false none It represents the rating given to the quality of free WiFi provided by the hotel according to the reviewer.
» location number false none It represents the rating given to the hotel's location by the reviewer.
» foodDrinks number false none none
» room number false none none
» hotelCondition number false none It represents the score or rating given to the overall condition of the hotel by the reviewer.
» service number false none It represents the score or rating given to the specific service provided by the hotel according to the reviewer.
» pool number false none none
» sleepQuality number false none none
» statusCode number false none none
» reviewUrl string false none It represents the URL or link to the full review.
» dtCollected string(date-time) false none none
» hotelId string false none none
» userId number false none It reprents the id of the user associated with the shop reviews.
» queueId number false none none
» shopId number false none The unique identifier of the shop.
» rank string false none It represents rank or position of the hotel among other hotels.
» city string false none It represents the city where the hotel is located.
» websiteName string false none It represents name of the website from which the review originated.
» starRating number false none It represents the star rating of the hotel.

reviewsDetailsResp

{
  "totalRecords": 670,
  "fetchedRecords": 10,
  "totalPages": 67,
  "currentPage": 1,
  "pageSize": 10,
  "reviewDetails": [
    {
      "hotelCode": 133268,
      "websiteCode": 1,
      "reviewHeader": "",
      "reviewerName": "Peter",
      "reviewedDate": "2024-07-22T00:00:00.000Z",
      "reviewScore": 10,
      "location": null,
      "replyFromHotel": "",
      "reviewContent": "Great place with nice rooms and beautiful view (both to Mt Kinabalu and Kota Kinabalu). Standard Malaysian breakfast and decent lunch and dinner menu. Staff was very friendly and helpful. The room (104) was very good although there are a few ants around (so make sure not to leave food around). Bed, shower and toilet were nice and clean. Internet worked quite well (not guaranteed in this area). Our best place in Sabah so far (out of 6 good hotels).",
      "tripType": "Travelled with partner",
      "language": "en",
      "reviewId": "669dd2dc198e214ac36d85f4",
      "hotelId": 8011143,
      "dtCollected": "2024-09-03T09:35:52.353Z",
      "dtModified": null,
      "userId": 9,
      "queueId": 13939,
      "shopId": 1110,
      "url": "https://www.expedia.co.in/Kota-Kinabalu-Hotels-Kasih-Sayang-Health-Resort.h8011143.Hotel-Information",
      "websiteName": "EXPEDIA",
      "properties": null,
      "polarity": null,
      "sentimentScore": null,
      "authorCountry": "",
      "breakfastRating": null,
      "cleanlinessRating": null,
      "locationRating": null,
      "roomsRating": null,
      "serviceRating": null,
      "sleepQualityRating": null,
      "spaRating": null,
      "valueRating": null,
      "reviewsCount": 28,
      "reviewerType": null,
      "respondUrl": null,
      "outOfReview": 10
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalRecords number false none Total number of records available.
fetchedRecords number false none Number of records fetched in the current response.
totalPages number false none Total number of pages available.
currentPage number false none Current page number.
pageSize number false none Number of records per page.
reviewDetails [object] false none List of review details.
» hotelCode number false none Code of the hotel.
» websiteCode number false none Code of the website where the review was posted.
» reviewHeader string false none Header of the review.
» reviewerName string false none Name of the reviewer.
» reviewedDate string(date-time) false none Date when the review was posted.
» reviewScore number false none Score given in the review.
» location string false none Location of the reviewer (if available).
» replyFromHotel string false none Reply from the hotel to the review.
» reviewContent string false none Content of the review.
» tripType string false none Type of trip for which the review was written.
» language string false none Language of the review.
» reviewId string false none Unique identifier of the review.
» hotelId string false none Unique identifier of the hotel.
» dtCollected string(date-time) false none Date and time when the review was collected.
» dtModified string(date-time) false none Date and time when the review was last modified (if applicable).
» userId number false none Unique identifier of the user who wrote the review.
» queueId number false none Identifier for the review queue.
» shopId number false none Identifier for the shop.
» url string false none URL where the review can be found.
» websiteName string false none Name of the website where the review was posted.
» properties string false none Additional properties related to the review.
» polarity string false none Polarity of the review (if applicable).
» sentimentScore number false none Sentiment score of the review (if applicable).
» authorCountry string false none Country of the reviewer.
» breakfastRating number false none Rating for breakfast provided by the hotel.
» cleanlinessRating number false none Rating for cleanliness provided by the hotel.
» locationRating number false none Rating for the location of the hotel.
» roomsRating number false none Rating for the rooms provided by the hotel.
» serviceRating number false none Rating for the service provided by the hotel.
» sleepQualityRating number false none Rating for sleep quality provided by the hotel.
» spaRating number false none Rating for the spa facilities provided by the hotel.
» valueRating number false none Rating for the value of the hotel stay.
» reviewsCount number false none Number of reviews for the hotel.
» reviewerType string false none Type of reviewer (if applicable).
» respondUrl string false none URL where responses to the review can be found (if applicable).
» outOfReview number false none Maximum score out of which the review score is given.

reviewsDeltaResp

{
  "totalRecords": 670,
  "fetchedRecords": 10,
  "totalPages": 67,
  "currentPage": 1,
  "pageSize": 10,
  "reviewDeltaDetails": [
    {
      "hotelCode": 133268,
      "websiteCode": 1,
      "reviewHeader": "",
      "reviewerName": "Peter",
      "reviewedDate": "2024-07-22T00:00:00.000Z",
      "reviewScore": 10,
      "location": null,
      "replyFromHotel": "",
      "reviewContent": "Great place with nice rooms and beautiful view (both to Mt Kinabalu and Kota Kinabalu). Standard Malaysian breakfast and decent lunch and dinner menu. Staff was very friendly and helpful. The room (104) was very good although there are a few ants around (so make sure not to leave food around). Bed, shower and toilet were nice and clean. Internet worked quite well (not guaranteed in this area). Our best place in Sabah so far (out of 6 good hotels).",
      "tripType": "Travelled with partner",
      "language": "en",
      "reviewId": "669dd2dc198e214ac36d85f4",
      "hotelId": 8011143,
      "dtCollected": "2024-09-03T09:35:52.353Z",
      "dtModified": null,
      "userId": 9,
      "queueId": 13939,
      "shopId": 1110,
      "url": "https://www.expedia.co.in/Kota-Kinabalu-Hotels-Kasih-Sayang-Health-Resort.h8011143.Hotel-Information",
      "websiteName": "EXPEDIA",
      "properties": null,
      "polarity": null,
      "sentimentScore": null,
      "authorCountry": "",
      "breakfastRating": null,
      "cleanlinessRating": null,
      "locationRating": null,
      "roomsRating": null,
      "serviceRating": null,
      "sleepQualityRating": null,
      "spaRating": null,
      "valueRating": null,
      "reviewsCount": 28,
      "reviewerType": null,
      "respondUrl": null,
      "outOfReview": 10
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalRecords number false none Total number of records available.
fetchedRecords number false none Number of records fetched in the current response.
totalPages number false none Total number of pages available.
currentPage number false none Current page number.
pageSize number false none Number of records per page.
reviewDeltaDetails [object] false none List of review details.
» hotelCode number false none Code of the hotel.
» websiteCode number false none Code of the website where the review was posted.
» reviewHeader string false none Header of the review.
» reviewerName string false none Name of the reviewer.
» reviewedDate string(date-time) false none Date when the review was posted.
» reviewScore number false none Score given in the review.
» location string false none Location of the reviewer (if available).
» replyFromHotel string false none Reply from the hotel to the review.
» reviewContent string false none Content of the review.
» tripType string false none Type of trip for which the review was written.
» language string false none Language of the review.
» reviewId string false none Unique identifier of the review.
» hotelId string false none Unique identifier of the hotel.
» dtCollected string(date-time) false none Date and time when the review was collected.
» dtModified string(date-time) false none Date and time when the review was last modified (if applicable).
» userId number false none Unique identifier of the user who wrote the review.
» queueId number false none Identifier for the review queue.
» shopId number false none Identifier for the shop.
» url string false none URL where the review can be found.
» websiteName string false none Name of the website where the review was posted.
» properties string false none Additional properties related to the review.
» polarity string false none Polarity of the review (if applicable).
» sentimentScore number false none Sentiment score of the review (if applicable).
» authorCountry string false none Country of the reviewer.
» breakfastRating number false none Rating for breakfast provided by the hotel.
» cleanlinessRating number false none Rating for cleanliness provided by the hotel.
» locationRating number false none Rating for the location of the hotel.
» roomsRating number false none Rating for the rooms provided by the hotel.
» serviceRating number false none Rating for the service provided by the hotel.
» sleepQualityRating number false none Rating for sleep quality provided by the hotel.
» spaRating number false none Rating for the spa facilities provided by the hotel.
» valueRating number false none Rating for the value of the hotel stay.
» reviewsCount number false none Number of reviews for the hotel.
» reviewerType string false none Type of reviewer (if applicable).
» respondUrl string false none URL where responses to the review can be found (if applicable).
» outOfReview number false none Maximum score out of which the review score is given.

reviewhookreq

{
  "endpoint": "www.sample.com",
  "authType": "Basic",
  "userName": "username",
  "password": "password",
  "token": ""
}

Properties

Name Type Required Restrictions Description
endpoint string false none none
authType string false none none
userName string false none none
password string false none none
token string false none none

reviewhookresp

{
  "requestId": 1,
  "message": "Hook created successfully"
}

Properties

Name Type Required Restrictions Description
requestId number false none none
message string false none none

sourcemapreq

{
  "hotelCode": 0,
  "sourceCodes": [
    0
  ],
  "urls": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
hotelCode integer false none none
sourceCodes [integer] false none none
urls [string] false none none

sourcemapresp

{
  "requestId": 0,
  "hotelCode": 0,
  "sourceCodes": [
    0
  ],
  "urls": [
    "string"
  ],
  "status": 1,
  "approximateTime": 0,
  "createdDate": "2024-04-30T08:10:49.835Z"
}

Properties

Name Type Required Restrictions Description
requestId integer false none none
hotelCode integer false none none
sourceCodes [integer] false none none
urls [string] false none none
status integer false none none
approximateTime integer false none This method provides the approximate turnaround time for the request. The default minimum is 72 hours and will vary based on parameter values
createdDate string false none none

newmapreq

{
  "hotelName": "",
  "address": "",
  "city": "",
  "state": "",
  "country": "",
  "zip": "",
  "latitude": 0,
  "longitude": 0,
  "url": [
    "string"
  ],
  "websiteCodes": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
hotelName string false none The name of the hotel.
address string false none none
city string false none none
state string false none none
country string false none none
zip string false none none
latitude number false none none
longitude number false none none
url [string] false none none
websiteCodes [integer] false none none

newmapresp

{
  "requestId": 0,
  "referenceHotelCodes": [
    0
  ],
  "statusCode": 1,
  "statusMsg": "string",
  "approximateTime": "2025-05-06",
  "createdDate": "2024-04-30T08:10:49.835Z"
}

Properties

Name Type Required Restrictions Description
requestId integer false none none
referenceHotelCodes [integer] false none none
statusCode integer false none none
statusMsg string false none none
approximateTime string(date) false none none
createdDate string false none none

hotelsReq

{
  "hotelName": "Ocean Lodge Santa Monica Beach Hotel",
  "city": "Los Angeles",
  "state": "California",
  "country": "United States of America",
  "zip": "90401",
  "geoLocationFilter": {
    "latitude": "34.01",
    "longitude": "-118.49",
    "radius": "50km"
  }
}

Properties

Name Type Required Restrictions Description
hotelName string false none The name of the hotel.
city string false none Match the hotel in this city.
state string false none Match the hotels in this state.
country string false none Match the hotels in this country.
zip string false none Match the hotels in this zip code (highest priority).
geoLocationFilter object false none Filter matched hotels by geolocation.
» latitude string false none Latitude of the location.
» longitude string false none Longitude of the location.
» radius string false none Radius from the location.

hotelsResp

{
  "totalRecords": 10000,
  "fetchedRecords": 10,
  "totalPages": 1000,
  "currentPage": 1,
  "pageSize": 10,
  "hotels": [
    {
      "hotelCode": 1362151,
      "hotelName": "Ocean Lodge Santa Monica Beach Hotel",
      "address": "1667 Ocean Avenue",
      "city": "Los Angeles",
      "state": "California",
      "country": "United States of America",
      "location": {
        "latitude": "34.01012891",
        "longitude": "-118.49312648"
      },
      "zip": "90401",
      "matchScore": 72.228226,
      "reviewsCount": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalRecords number false none Total number of records available.
fetchedRecords number false none Number of records fetched in the current response.
totalPages number false none Total number of pages available.
currentPage number false none Current page number.
pageSize number false none Number of records per page.
hotels [object] false none List of hotels.
» hotelCode number false none Code of the hotel.
» hotelName string false none Name of the hotel.
» address string false none Address of the hotel.
» city string false none City of the hotel.
» state string false none State of the hotel.
» country string false none Country of the hotel.
» location object false none Geolocation of the hotel.
»» latitude string false none Latitude of the hotel location.
»» longitude string false none Longitude of the hotel location.
» zip string false none Zip code of the hotel.
» matchScore number false none Match score for the hotel.
» reviewsCount number false none Number of reviews for the hotel.

hotelinfo

{
  "hotelCode": 2005,
  "hotelCodes": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
hotelCode number false none none
hotelCodes [number] false none none

hotelinforesp

{
  "hotelCode": 0,
  "hotelName": "string",
  "address": "string",
  "city": "string",
  "state": "string",
  "country": "string",
  "starRating": "string",
  "zip": "string",
  "lat": 0,
  "long": 0,
  "sources": {
    "websiteCode": 0,
    "websiteName": "string",
    "url": "string"
  }
}

Properties

Name Type Required Restrictions Description
hotelCode number false none A unique identifier for the hotel.
hotelName string false none The name of the hotel.
address string false none The street address of the hotel.
city string false none The city where the hotel is located.
state string false none The state where the hotel is located.
country string false none The country where the hotel is located.
starRating string false none It represents the star rating of the hotel.
zip string false none The postal or zip code of the hotel's location.
lat number false none Latitude of the given point.
long number false none Longitude of the given point.
sources object false none It represents the source.
» websiteCode number false none It represents code of the website.
» websiteName string false none It represents name of the website.
» url string false none It represents URL of the website

createScheduleReq

{
  "scheduleName": "X-Mas",
  "shopId": 1234,
  "year": "*",
  "month": "*",
  "dow": "*",
  "day": "*",
  "hour": "1",
  "minute": "00",
  "seconds": "00",
  "startDate": "2025-05-06",
  "endDate": "2025-05-06"
}

Properties

Name Type Required Restrictions Description
scheduleName string false none Enter the name of the schedule.
shopId number false none Unique code of the shopId which match from shops
year string false none The year component of the schedule. Use '*' to match any year.
month string false none The month component of the schedule. Use '*' to match any month.
dow string false none The day of the week component of the schedule. Use '*' to match any day of the week.
day string false none The day of the month component of the schedule. Use '*' to match any day of the month.
hour string false none The hour component of the schedule. Use '*' to match any hour of the day.
minute string false none The minute component of the schedule. Use '*' to match any minute of the hour.
seconds string false none The second component of the schedule. Use '*' to match any second of the minute.
startDate string(date) false none The start date of the schedule.
endDate string(date) false none The end date of the schedule.

createscheduleRes

{
  "message": "Schedule details inserted successfully!",
  "scheduleId": 2233
}

Properties

Name Type Required Restrictions Description
message string false none none
scheduleId number false none none

scheduleGetResp

[
  {
    "scheduleId": 16,
    "scheduleName": "testingschedule",
    "shopId": 23,
    "month": "12",
    "dayOfWeek": "6",
    "day": "20",
    "hour": "20",
    "minute": "30",
    "startDate": "2023-30-12",
    "endDate": "2023-30-14",
    "createdDate": "2023-04-28T09:57:19.347Z",
    "modifiedDate": "2023-04-28T09:57:19.347Z",
    "status": 1
  }
]

Properties

Name Type Required Restrictions Description
scheduleId number false none show unique scheduleId
scheduleName string false none show scheduleName
shopId number false none show unique shopId
month string false none show month
dayOfWeek string false none show dayOfWeek (range 0 to 6)
day string false none show day (range 1 to 31)
hour string false none show hour (range 1 to 23)
minute string false none show minute (range 1 to 59)
startDate string false none show startDate
endDate string false none show endDate (end date is greater than start date)
createdDate string false none show createdDate
modifiedDate string false none show modifiedDate
status number false none active means 1 inactive means 0

scheduleputResp

{
  "message": "Schedules details updated successfully"
}

Properties

Name Type Required Restrictions Description
message string false none none

putScheduleReq

{
  "scheduleName": "X-Mas",
  "year": "*",
  "month": "*",
  "dow": "*",
  "day": "*",
  "hour": "1",
  "minute": "00",
  "seconds": "00",
  "startDate": "2025-05-06",
  "endDate": "2025-05-06"
}

Properties

Name Type Required Restrictions Description
scheduleName string false none Enter schedule name
year string false none The year component of the schedule. Use '*' to match any year.
month string false none The month component of the schedule. Use '*' to match any month.
dow string false none The day of the week component of the schedule. Use '*' to match any day of the week.
day string false none The day of the month component of the schedule. Use '*' to match any day of the month.
hour string false none The hour component of the schedule. Use '*' to match any hour of the day.
minute string false none The minute component of the schedule. Use '*' to match any minute of the hour.
seconds string false none The second component of the schedule. Use '*' to match any second of the minute.
startDate string(date) false none The start date of the schedule.
endDate string(date) false none The end date of the schedule.

schedulesGetAllResp

[
  {
    "totalRecords": 2,
    "fetchedRecords": 2,
    "totalPages": 1,
    "currentPage": 1,
    "pageSize": 10,
    "schedules": [
      {
        "scheduleId": 1,
        "scheduleName": "X-Mas",
        "shopId": 1234,
        "year": "*",
        "month": "*",
        "dow": "*",
        "day": "*",
        "hour": "1",
        "minute": "*",
        "seconds": "*",
        "startDate": "2025-05-06",
        "endDate": "2025-05-06"
      }
    ]
  }
]

Properties

Name Type Required Restrictions Description
totalRecords number false none Total number of records available.
fetchedRecords number false none Number of records fetched in the current response.
totalPages number false none Total number of pages available.
currentPage number false none Current page number.
pageSize number false none Number of records per page.
schedules [object] false none none
» scheduleId number false none none
» scheduleName string false none none
» shopId number false none Unique code of the shopId which match from shops
» year string false none The year component of the schedule. Use '*' to match any year.
» month string false none The month component of the schedule. Use '*' to match any month.
» dow string false none The day of the week component of the schedule. Use '*' to match any day of the week.
» day string false none The day of the month component of the schedule. Use '*' to match any day of the month.
» hour string false none The hour component of the schedule. Use '*' to match any hour of the day.
» minute string false none The minute component of the schedule. Use '*' to match any minute of the hour.
» seconds string false none The second component of the schedule. Use '*' to match any second of the minute.
» startDate string(date) false none The start date of the schedule.
» endDate string(date) false none The end date of the schedule.

createShopReq

{
  "shopName": "Abc",
  "hotelCodes": [
    1,
    123
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopType": 1
}

Properties

Name Type Required Restrictions Description
shopName string false none shows the list of shops name
hotelCodes [number] false none hotelCodes must be an array
sourceCodes [number] false none shows the list of sourceCodes in an array
shopType number false none none

createshopRes

{
  "message": "Shops details inserted successfully!",
  "shopId": 1122
}

Properties

Name Type Required Restrictions Description
message string false none none
shopId number false none none

reviewsShopGetResp

{
  "shopId": 1,
  "hotelCodes": [
    1,
    123
  ],
  "sourceCodes": [
    1,
    283
  ],
  "shopName": "Abc",
  "userId": 1,
  "userName": "gokul@aggregateintelligence.in",
  "createdDate": "2023-05-10T06:12:58.097Z",
  "modifiedDate": "2023-05-10T06:12:58.097Z",
  "status": 1,
  "shopType": 1
}

Properties

Name Type Required Restrictions Description
shopId number false none Shop id will show
hotelCodes [number] false none hotelCodes must be an array
sourceCodes [number] false none shows the list of sourceCodes min an array
shopName string false none shows the list of shops name
userId number false none shows the list of
userName string false none shows username for Authorization
createdDate string false none shows createdDate
modifiedDate number false none shows createdDate
status number false none status active means 1 inactive means 0
shopType number false none none

reviewsShopGetAllResp

[
  {
    "totalRecords": 2,
    "fetchedRecords": 2,
    "totalPages": 1,
    "currentPage": 1,
    "pageSize": 10,
    "shops": [
      {
        "shopId": 20,
        "hotelCodes": [
          1,
          123
        ],
        "sourceCodes": [
          1,
          283
        ],
        "shopName": "Abc",
        "userId": 1,
        "userName": "reviews@ai.com",
        "createdDate": "2025-05-06T14:15:22Z",
        "modifiedDate": "2025-05-06T14:15:22Z",
        "status": 1,
        "shopType": 1
      }
    ]
  }
]

Properties

Name Type Required Restrictions Description
totalRecords number false none Total number of records available.
fetchedRecords number false none Number of records fetched in the current response.
totalPages number false none Total number of pages available.
currentPage number false none Current page number.
pageSize number false none Number of records per page.
shops [object] false none none
» shopId number false none Shop id.
» hotelCodes [number] false none Array of hotel codes associated with the shop.
» sourceCodes [number] false none Array of source codes associated with the shop.
» shopName string false none Name of the shop.
» userId number false none User ID associated with the shop.
» userName string false none Username associated with the shop.
» createdDate string(date-time) false none Date and time when the shop was created.
» modifiedDate string(date-time) false none Date and time when the shop was last modified.
» status number false none Status of the shop
» shopType number false none Type of the shop.

reviewsShopPutResp

{
  "message": "Shops details updated successfully"
}

Properties

Name Type Required Restrictions Description
message string false none none

shopStatusReq

{
  "shopId": 6,
  "scheduleId": 47,
  "sinceDate": "2025-05-06"
}

Properties

Name Type Required Restrictions Description
shopId number false none Enter shop Id
scheduleId number false none Enter schedule Id
sinceDate string(date) false none Enter a date

shopstatusList

[
  {
    "shopId": 1,
    "scheduleId": 2,
    "statusMessage": "InProgress"
  }
]

Properties

Name Type Required Restrictions Description
shopId number false none Shop id will show
scheduleId number false none shows the list of schedule Id
statusMessage string false none shows the list of status message

synopsisReq

{
  "hotelCodes": [
    72110
  ],
  "sourceCodes": [
    1
  ],
  "shopId": 537
}

Properties

Name Type Required Restrictions Description
hotelCodes array false none Unique code of the hotel to fetch reviews for (as obtained from POST /entity/hotels).
sourceCodes array false none Optionally filter by reviews from these specific website/sources only (as obtained from GET /references/sources). By default, it will fetch from all sources available.
shopId integer false none Identifier of the shop.

synopsisResp

{
  "websiteName": "Makemytrip",
  "counts": {
    "2024-02": 2
  }
}

Properties

Name Type Required Restrictions Description
websiteName string false none none
counts object false none none
» 2024-02 number false none none