Reviews by URL
First page with default ordering (most relevant).
{
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"target": "hoteis.com",
"type": "review",
"page": 0
} // docs
Extracts hotel reviews from Hoteis.com with pagination and sorting.
hoteis.com:review · 1 credit per request
Standard credit cost. Your account pricing is shown in the sandbox.
Try this operation in the sandboxcurl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"target": "hoteis.com",
"type": "review",
"page": 0
}' Keep your API key on your server. See the quickstart for authentication and response handling.
The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.
POST /v1/mcp · Bearer or X-API-Key authentication
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "hoteis_com_review",
"arguments": {
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"page": 0,
"executionId": "exec_example_123"
}
}
} Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.
| Field | Type | Requirement | Rule | Default | Example |
|---|---|---|---|---|---|
| url URL extraction target. For some PLPs it can be omitted when API assembles URL from other fields. | string (URL) | Required | Mandatory for Hoteis.com Review. | - | https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil |
| sort Ordering for VivaReal, Chaves na Mão, OLX and Webmotors PLP, Booking Review and Hotels Review. VivaReal: relevance/date/price/biggest_price/biggest_area. Webmotors: relevance/price/biggest_price/year_desc/mileage_asc. OLX: relevance/date/price/biggest_price/price_relevance. Booking/Hotels Review: most_relevant/newest_first/oldest_first/score_desc/score_asc. | "relevance" | "date" | "price" | "biggest_price" | "biggest_area" | "price_relevance" | "most_relevant" | "newest_first" | "oldest_first" | "score_desc" | "score_asc" | "year_desc" | "mileage_asc" | Optional | Ordering of reviews: most_relevant, newest_first, oldest_first, score_desc or score_asc. The backend translates this to the internal sortBy from GraphQL from Hoteis.com. | most_relevant | newest_first |
| target Target source for extraction. | enum | Required | Always mandatory and must be hoteis.com. | - | hoteis.com |
| type Extraction type: pdp, idp, plp, ilp, quote, review or places. | enum | Required | Always mandatory and must be review. | - | review |
| page Pagination. In PLP, including Trivago, and in Reclame AQUI ILP starts in 1; in review (MercadoLivre, Booking and Hotels) starts in 0. The Reclame AQUI ILP even accepts the page 100. | integer | Optional | Review listing page (entire >= 0). Starts at 0. | 0 | 0 |
First page with default ordering (most relevant).
{
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"target": "hoteis.com",
"type": "review",
"page": 0
} Page 4 sorted by most recent reviews.
{
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"target": "hoteis.com",
"type": "review",
"sort": "newest_first",
"page": 4
} Leaf paths and expected types. Field names and enum values are part of the API contract.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"notFound": "boolean (optional; true when the upstream entity was not found and data is null)",
"data.source": "string",
"data.type": "string",
"data.parser": "\"1.0.0\"",
"data.url": "string",
"data.requestUrl": "string",
"data.extractedAt": "string (iso datetime)",
"data.propertyId": "string",
"data.page": "number",
"data.resultsPerPage": "number",
"data.offset": "number",
"data.sort": "string",
"data.sortLabel": "string",
"data.totalReviews": "number",
"data.overallRating": "number",
"data.overallRatingText": "string",
"data.summaryLabel": "string",
"data.availableSorters[].label": "string",
"data.availableSorters[].value": "string",
"data.availableSorters[].isSelected": "boolean",
"data.availableSorters[].isDefault": "boolean",
"data.availableTravelerTypes[].label": "string",
"data.availableTravelerTypes[].value": "string",
"data.availableTravelerTypes[].isSelected": "boolean",
"data.availableTravelerTypes[].isDefault": "boolean",
"data.supportsPhotosFilter": "boolean",
"data.ratingScores[].title": "string",
"data.ratingScores[].value": "number",
"data.ratingScores[].percent": "number",
"data.hasNextPage": "boolean",
"data.nextPage": "number",
"data.nextPageUrl": "string",
"data.reviews[].reviewId": "string",
"data.reviews[].reviewScore": "number",
"data.reviews[].reviewScoreText": "string",
"data.reviews[].reviewScoreLabel": "string",
"data.reviews[].author": "string",
"data.reviews[].travelerType": "string",
"data.reviews[].reviewDate": "string",
"data.reviews[].reviewDateIso": "string (YYYY-MM-DD)",
"data.reviews[].tripSummary": "string",
"data.reviews[].title": "string",
"data.reviews[].text": "string",
"data.reviews[].verified": "boolean",
"data.reviews[].sentiments[]": "string",
"data.reviews[].photos[].url": "string",
"data.reviews[].photos[].description": "string",
"data.reviews[].managementResponses[].title": "string",
"data.reviews[].managementResponses[].text": "string"
} Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.
{
"requestId": "99999999-1111-4111-8111-999999999999",
"executionId": "99999999-2222-4222-8222-999999999999",
"data": {
"source": "hoteis.com",
"type": "review",
"parser": "1.0.0",
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"requestUrl": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"extractedAt": "2026-03-06T12:00:00.000Z",
"propertyId": "3976043",
"page": 4,
"resultsPerPage": 10,
"offset": 40,
"sort": "urn:expediagroup:taxonomies:core:#e9f32feb-5946-4b19-a6f2-8206edc7a130",
"sortLabel": "Mais recentes",
"totalReviews": 1002,
"overallRating": 9,
"overallRatingText": "9,0/10 (Maravilhosa)",
"summaryLabel": "Maravilhosa",
"availableSorters": [
{
"label": "Mais recentes",
"value": "urn:expediagroup:taxonomies:core:#e9f32feb-5946-4b19-a6f2-8206edc7a130",
"isSelected": true,
"isDefault": false
},
{
"label": "Mais relevantes",
"value": "urn:expediagroup:taxonomies:core:#relevant",
"isSelected": false,
"isDefault": true
}
],
"availableTravelerTypes": [
{
"label": "Todos",
"value": "urn:expediagroup:review_categories:trip_type:all_travelers",
"isSelected": true,
"isDefault": true
},
{
"label": "Casais",
"value": "urn:expediagroup:review_categories:trip_type:couples",
"isSelected": false,
"isDefault": false
}
],
"supportsPhotosFilter": true,
"ratingScores": [
{
"title": "Limpeza",
"value": 9.2,
"percent": 92
},
{
"title": "Servico e funcionarios",
"value": 9.2,
"percent": 92
}
],
"hasNextPage": true,
"nextPage": 5,
"nextPageUrl": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil?pwaDialog=product-reviews&page=5",
"reviews": [
{
"reviewId": "review-1",
"reviewScore": 8,
"reviewScoreText": "8/10 (Muito boa)",
"reviewScoreLabel": "8 de 10 Muito boa",
"author": "Glaucio A S",
"travelerType": "Viagem com a familia",
"reviewDate": "28 de jan. de 2026",
"reviewDateIso": "2026-01-28",
"tripSummary": "Hospedou-se por 7 diarias em jan. de 2026",
"title": "Localizacao, equipe e cafe da manha",
"text": "Localizacao, equipe e cafe da manha.",
"verified": true,
"sentiments": [
"Pontos positivos: limpeza, servico e equipe de funcionarios"
],
"photos": [
{
"url": "https://a.travel-assets.com/ugc/hotel-reviews/photo-1.jpg",
"description": "Foto do quarto"
}
],
"managementResponses": [
{
"title": "Resposta da gerencia",
"text": "Obrigado pela visita!"
}
]
}
]
}
} | Path | Type | Description | Example |
|---|---|---|---|
| data.availableSorters[].isDefault | boolean | Field data.availableSorters[].isDefault returned in the response payload. | false |
| data.availableSorters[].isSelected | boolean | Field data.availableSorters[].isSelected returned in the response payload. | true |
| data.availableSorters[].label | string | Field data.availableSorters[].label returned in the response payload. | Mais recentes |
| data.availableSorters[].value | string | Field data.availableSorters[].value returned in the response payload. | urn:expediagroup:taxonomies:core:#e9f32feb-5946-4b19-a6f2-8206edc7a130 |
| data.availableTravelerTypes[].isDefault | boolean | data.availableTravelerTypes[].isDefault field returned in the response payload. | true |
| data.availableTravelerTypes[].isSelected | boolean | Field data.availableTravelerTypes[].isSelected returned in the response payload. | true |
| data.availableTravelerTypes[].label | string | Field data.availableTravelerTypes[].label returned in the response payload. | Todos |
| data.availableTravelerTypes[].value | string | Field data.availableTravelerTypes[].value returned in the response payload. | urn:expediagroup:review_categories:trip_type:all_travelers |
| data.extractedAt | string (iso datetime) | data.extractedAt field returned in the response payload. | 2026-03-06T12:00:00.000Z |
| data.hasNextPage | boolean | Field data.hasNextPage returned in the response payload. | true |
| data.nextPage | number | Field data.nextPage returned in the response payload. | 5 |
| data.nextPageUrl | string | Field data.nextPageUrl returned in the response payload. | https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil?pwaDialog=product-reviews&page=5 |
| data.offset | number | Field data.offset returned in the response payload. | 40 |
| data.overallRating | number | Field data.overallRating returned in the response payload. | 9 |
| data.overallRatingText | string | Field data.overallRatingText returned in the response payload. | 9,0/10 (Maravilhosa) |
| data.page | number | Field data.page returned in the response payload. | 4 |
| data.parser | "1.0.0" | Stable version of the API response format. | 1.0.0 |
| data.propertyId | string | data.propertyId field returned in the response payload. | 3976043 |
| data.ratingScores[].percent | number | Field data.ratingScores[].percent returned in the response payload. | 92 |
| data.ratingScores[].title | string | Field data.ratingScores[].title returned in the response payload. | Limpeza |
| data.ratingScores[].value | number | Field data.ratingScores[].value returned in the response payload. | 9.2 |
| data.requestUrl | string | Same value as `data.url`; never exposes the queried internal endpoint. | https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil |
| data.resultsPerPage | number | Field data.resultsPerPage returned in the response payload. | 10 |
| data.reviews[].author | string | Field data.reviews[].author returned in the response payload. | Glaucio A S |
| data.reviews[].managementResponses[].text | string | Field data.reviews[].managementResponses[].text returned in the response payload. | Obrigado pela visita! |
| data.reviews[].managementResponses[].title | string | Field data.reviews[].managementResponses[].title returned in the response payload. | Resposta da gerencia |
| data.reviews[].photos[].description | string | Field data.reviews[].photos[].description returned in the response payload. | Foto do quarto |
| data.reviews[].photos[].url | string | Field data.reviews[].photos[].url returned in the response payload. | https://a.travel-assets.com/ugc/hotel-reviews/photo-1.jpg |
| data.reviews[].reviewDate | string | Field data.reviews[].reviewDate returned in the response payload. | 28 de jan. de 2026 |
| data.reviews[].reviewDateIso | string (YYYY-MM-DD) | Field data.reviews[].reviewDateIso returned in the response payload. | 2026-01-28 |
| data.reviews[].reviewId | string | Field data.reviews[].reviewId returned in the response payload. | review-1 |
| data.reviews[].reviewScore | number | Field data.reviews[].reviewScore returned in the response payload. | 8 |
| data.reviews[].reviewScoreLabel | string | data.reviews[].reviewScoreLabel field returned in the response payload. | 8 de 10 Muito boa |
| data.reviews[].reviewScoreText | string | Field data.reviews[].reviewScoreText returned in the response payload. | 8/10 (Muito boa) |
| data.reviews[].sentiments[] | string | Field data.reviews[].sentiments[] returned in the response payload. | Pontos positivos: limpeza, servico e equipe de funcionarios |
| data.reviews[].text | string | Field data.reviews[].text returned in the response payload. | Localizacao, equipe e cafe da manha. |
| data.reviews[].title | string | Field data.reviews[].title returned in the response payload. | Localizacao, equipe e cafe da manha |
| data.reviews[].travelerType | string | data.reviews[].travelerType field returned in the response payload. | Viagem com a familia |
| data.reviews[].tripSummary | string | Field data.reviews[].tripSummary returned in the response payload. | Hospedou-se por 7 diarias em jan. de 2026 |
| data.reviews[].verified | boolean | Field data.reviews[].verified returned in the response payload. | true |
| data.sort | string | data.sort field returned in the response payload. | urn:expediagroup:taxonomies:core:#e9f32feb-5946-4b19-a6f2-8206edc7a130 |
| data.sortLabel | string | Field data.sortLabel returned in the response payload. | Mais recentes |
| data.source | string | Field data.source returned in the response payload. | hoteis.com |
| data.summaryLabel | string | Field data.summaryLabel returned in the response payload. | Maravilhosa |
| data.supportsPhotosFilter | boolean | data.supportsPhotosFilter field returned in the response payload. | true |
| data.totalReviews | number | Field data.totalReviews returned in the response payload. | 1002 |
| data.type | string | Field data.type returned in the response payload. | review |
| data.url | string | Field data.url returned in the response payload. | https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil |
| executionId | string (uuid) | Field executionId returned in the response payload. | 99999999-2222-4222-8222-999999999999 |
| notFound | boolean (optional; true when the upstream entity was not found and data is null) | Present and true when the upstream entity was not found. In this case data is null and the request still completes successfully. | N/A |
| requestId | string (uuid) | Field requestId returned in the response payload. | 99999999-1111-4111-8111-999999999999 |
When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.
| HTTP status | Error code | Meaning |
|---|---|---|
| 400 | INVALID_PAYLOAD | Invalid JSON or a request that violates the documented validation rules. |
| 401 | UNAUTHORIZED | Missing authorization or an invalid API key or token. |
| 402 | INSUFFICIENT_CREDITS | The account has insufficient credits for this operation. |
| 403 | FORBIDDEN | The account does not have access, or the API is temporarily disabled. |
| 409 | EXECUTION_CONFLICT | The execution identifier conflicts with an incompatible execution state. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | A rate limit or simultaneous request limit was exceeded. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERROR | An upstream, worker or gateway failure. Failed requests follow the platform refund policy. |