Reviews por URL
Primeira pagina com ordenacao padrao (mais relevantes).
{
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"target": "hoteis.com",
"type": "review",
"page": 0
} // docs
Extrai avaliacoes de hotel do Hoteis.com com paginacao e ordenacao.
Nota importante: alguns campos podem retornar null em produção,
dependendo da página de origem. Nesta documentação, os exemplos de output são
preenchidos intencionalmente com valores não nulos para facilitar integração.
curl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer SUA_CHAVE" \
-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
}'
A mesma seam também aparece no MCP hospedado como uma tool dedicada.
Os argumentos reaproveitam os campos do extract, mas target e type
já ficam fixos pela tool.
Endpoint
POST /v1/mcp
Tool name
hoteis_com_review
Auth
Bearer ou X-API-Key
{
"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"
}
}
}
Campos suportados nesta API do POST /v1/extract,
com regras específicas de obrigatoriedade e condicionais.
| Campo | Tipo | Status | Regra | Default | Exemplo |
|---|---|---|---|---|---|
| url URL alvo da extração. Para alguns PLPs pode ser omitida quando a API monta a URL a partir de outros campos. | string (URL) | Obrigatório | Obrigatorio para Hoteis.com Review. | - | https://www.mercadolivre.com.br/p/MLB123456 |
| sort Ordenacao para OLX PLP, Booking Review e Hoteis Review. OLX: relevance/date/price/biggest_price/price_relevance. Booking/Hoteis Review: most_relevant/newest_first/oldest_first/score_desc/score_asc. | "relevance" | "date" | "price" | "biggest_price" | "price_relevance" | "most_relevant" | "newest_first" | "oldest_first" | "score_desc" | "score_asc" | Opcional | Ordenacao das reviews: most_relevant, newest_first, oldest_first, score_desc ou score_asc. O backend traduz isso para o sortBy interno do GraphQL do Hoteis.com. | most_relevant | date |
| target Fonte alvo da extração. | enum | Obrigatório | Sempre obrigatorio e deve ser hoteis.com. | - | mercadolivre.com.br |
| type Tipo da extração: pdp, idp, plp, review ou places. | enum | Obrigatório | Sempre obrigatorio e deve ser review. | - | pdp |
| page Paginacao. Em PLP inicia em 1; em review (MercadoLivre, Booking e Hoteis) inicia em 0. | integer | Opcional | Pagina da listagem de reviews (inteiro >= 0). Inicia em 0. | 0 | 2 |
Primeira pagina com ordenacao padrao (mais relevantes).
{
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"target": "hoteis.com",
"type": "review",
"page": 0
} Pagina 4 com ordenacao por reviews mais recentes.
{
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"target": "hoteis.com",
"type": "review",
"sort": "newest_first",
"page": 4
} Mapa de paths de saída com tipo esperado para esta API.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"data.source": "string",
"data.type": "string",
"data.parser": "string",
"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"
} {
"requestId": "99999999-1111-4111-8111-999999999999",
"executionId": "99999999-2222-4222-8222-999999999999",
"data": {
"source": "hoteis.com",
"type": "review",
"parser": "graphql_product_reviews",
"url": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil",
"requestUrl": "https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil?pwaDialog=product-reviews",
"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 | Tipo | Descrição | Exemplo |
|---|---|---|---|
| data.availableSorters[].isDefault | boolean | Campo data.availableSorters[].isDefault retornado no payload de resposta. | false |
| data.availableSorters[].isSelected | boolean | Campo data.availableSorters[].isSelected retornado no payload de resposta. | true |
| data.availableSorters[].label | string | Campo data.availableSorters[].label retornado no payload de resposta. | Mais recentes |
| data.availableSorters[].value | string | Campo data.availableSorters[].value retornado no payload de resposta. | urn:expediagroup:taxonomies:core:#e9f32feb-5946-4b19-a6f2-8206edc7a130 |
| data.availableTravelerTypes[].isDefault | boolean | Campo data.availableTravelerTypes[].isDefault retornado no payload de resposta. | true |
| data.availableTravelerTypes[].isSelected | boolean | Campo data.availableTravelerTypes[].isSelected retornado no payload de resposta. | true |
| data.availableTravelerTypes[].label | string | Campo data.availableTravelerTypes[].label retornado no payload de resposta. | Todos |
| data.availableTravelerTypes[].value | string | Campo data.availableTravelerTypes[].value retornado no payload de resposta. | urn:expediagroup:review_categories:trip_type:all_travelers |
| data.extractedAt | string (iso datetime) | Campo data.extractedAt retornado no payload de resposta. | 2026-03-06T12:00:00.000Z |
| data.hasNextPage | boolean | Campo data.hasNextPage retornado no payload de resposta. | true |
| data.nextPage | number | Campo data.nextPage retornado no payload de resposta. | 5 |
| data.nextPageUrl | string | Campo data.nextPageUrl retornado no payload de resposta. | https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil?pwaDialog=product-reviews&page=5 |
| data.offset | number | Campo data.offset retornado no payload de resposta. | 40 |
| data.overallRating | number | Campo data.overallRating retornado no payload de resposta. | 9 |
| data.overallRatingText | string | Campo data.overallRatingText retornado no payload de resposta. | 9,0/10 (Maravilhosa) |
| data.page | number | Campo data.page retornado no payload de resposta. | 4 |
| data.parser | string | Campo data.parser retornado no payload de resposta. | graphql_product_reviews |
| data.propertyId | string | Campo data.propertyId retornado no payload de resposta. | 3976043 |
| data.ratingScores[].percent | number | Campo data.ratingScores[].percent retornado no payload de resposta. | 92 |
| data.ratingScores[].title | string | Campo data.ratingScores[].title retornado no payload de resposta. | Limpeza |
| data.ratingScores[].value | number | Campo data.ratingScores[].value retornado no payload de resposta. | 9.2 |
| data.requestUrl | string | Campo data.requestUrl retornado no payload de resposta. | https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil?pwaDialog=product-reviews |
| data.resultsPerPage | number | Campo data.resultsPerPage retornado no payload de resposta. | 10 |
| data.reviews[].author | string | Campo data.reviews[].author retornado no payload de resposta. | Glaucio A S |
| data.reviews[].managementResponses[].text | string | Campo data.reviews[].managementResponses[].text retornado no payload de resposta. | Obrigado pela visita! |
| data.reviews[].managementResponses[].title | string | Campo data.reviews[].managementResponses[].title retornado no payload de resposta. | Resposta da gerencia |
| data.reviews[].photos[].description | string | Campo data.reviews[].photos[].description retornado no payload de resposta. | Foto do quarto |
| data.reviews[].photos[].url | string | Campo data.reviews[].photos[].url retornado no payload de resposta. | https://a.travel-assets.com/ugc/hotel-reviews/photo-1.jpg |
| data.reviews[].reviewDate | string | Campo data.reviews[].reviewDate retornado no payload de resposta. | 28 de jan. de 2026 |
| data.reviews[].reviewDateIso | string (YYYY-MM-DD) | Campo data.reviews[].reviewDateIso retornado no payload de resposta. | 2026-01-28 |
| data.reviews[].reviewId | string | Campo data.reviews[].reviewId retornado no payload de resposta. | review-1 |
| data.reviews[].reviewScore | number | Campo data.reviews[].reviewScore retornado no payload de resposta. | 8 |
| data.reviews[].reviewScoreLabel | string | Campo data.reviews[].reviewScoreLabel retornado no payload de resposta. | 8 de 10 Muito boa |
| data.reviews[].reviewScoreText | string | Campo data.reviews[].reviewScoreText retornado no payload de resposta. | 8/10 (Muito boa) |
| data.reviews[].sentiments[] | string | Campo data.reviews[].sentiments[] retornado no payload de resposta. | Pontos positivos: limpeza, servico e equipe de funcionarios |
| data.reviews[].text | string | Campo data.reviews[].text retornado no payload de resposta. | Localizacao, equipe e cafe da manha. |
| data.reviews[].title | string | Campo data.reviews[].title retornado no payload de resposta. | Localizacao, equipe e cafe da manha |
| data.reviews[].travelerType | string | Campo data.reviews[].travelerType retornado no payload de resposta. | Viagem com a familia |
| data.reviews[].tripSummary | string | Campo data.reviews[].tripSummary retornado no payload de resposta. | Hospedou-se por 7 diarias em jan. de 2026 |
| data.reviews[].verified | boolean | Campo data.reviews[].verified retornado no payload de resposta. | true |
| data.sort | string | Campo data.sort retornado no payload de resposta. | urn:expediagroup:taxonomies:core:#e9f32feb-5946-4b19-a6f2-8206edc7a130 |
| data.sortLabel | string | Campo data.sortLabel retornado no payload de resposta. | Mais recentes |
| data.source | string | Campo data.source retornado no payload de resposta. | hoteis.com |
| data.summaryLabel | string | Campo data.summaryLabel retornado no payload de resposta. | Maravilhosa |
| data.supportsPhotosFilter | boolean | Campo data.supportsPhotosFilter retornado no payload de resposta. | true |
| data.totalReviews | number | Campo data.totalReviews retornado no payload de resposta. | 1002 |
| data.type | string | Campo data.type retornado no payload de resposta. | review |
| data.url | string | Campo data.url retornado no payload de resposta. | https://www.hoteis.com/ho366809/golden-tulip-porto-vitoria-vitoria-brasil |
| executionId | string (uuid) | Campo executionId retornado no payload de resposta. | 99999999-2222-4222-8222-999999999999 |
| requestId | string (uuid) | Campo requestId retornado no payload de resposta. | 99999999-1111-4111-8111-999999999999 |
| Status | errorCode | Quando acontece |
|---|---|---|
| 400 | INVALID_PAYLOAD | JSON inválido ou violação das regras de validação do payload. |
| 401 | UNAUTHORIZED | Header Authorization ausente ou token/chave inválida. |
| 402 | INSUFFICIENT_CREDITS | Saldo de créditos insuficiente para a API solicitada. |
| 403 | FORBIDDEN | Usuário sem acesso ou API temporariamente desabilitada. |
| 409 | EXECUTION_CONFLICT | executionId conflita com uma execução em estado incompatível. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | Limite de taxa ou limite de requisições em voo excedido. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR | Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente. |