Vrbo API endpoint
Returns one page of public traveler reviews, aggregate count, and current sort choices. Pagination and sort values follow the public reviews query.
/vrbo/properties/{property_id}/reviewsReturns one page of public traveler reviews, the total review count, and currently available sort options.
property_id is the numeric Vrbo listing identifier. Some property URLs add
the suffix ha; that suffix is accepted as part of the identifier.
Query parameters:
start_index: zero-based offset; defaults to 0.size: results per page from 1 to 50; defaults to 10.sort_by: one of the observed values returned in sort_options; defaults to
NEWEST_TO_OLDEST_BY_LANGUAGE.include_recent_reviews: whether to include recent reviews; defaults to
true.include_ratings_only_reviews: whether to include rating-only reviews;
defaults to true.Example request:
GET /api/v1/vrbo/properties/11458735ha/reviews?start_index=10&size=10&sort_by=NEWEST_TO_OLDEST_BY_LANGUAGE
Response data includes public review text, localized submission date, locale, rating, author attribution, traveler labels, and property-manager responses when provided. Sort options and their selected state come from the live response.
Recognized sort values are HIGHEST_TO_LOWEST_RATED,
LOWEST_TO_HIGHEST_RATED, NEWEST_TO_OLDEST,
NEWEST_TO_OLDEST_BY_LANGUAGE, and NEWEST_TO_OLDEST_BY_RELEVANCY. Use only
values advertised by the response for the selected property.
Pagination and every sort value advertised by the tested property were
verified through Box H. The dateless property returned 12 reviews: offsets
0 and 10 returned 10 and 2 non-overlapping reviews, and all four current
sort choices were reflected as selected by the upstream response. Sort
availability can vary by property; this property did not advertise every
configured sort value. This evidence does not establish that every property
has public review items. Boundary checks on the same property returned one
item for size=1, all 12 for size=50, the final item at start_index=11,
and an empty page at start_index=12 while preserving total_count=12. The
include_recent_reviews and
include_ratings_only_reviews flags were accepted by the upstream query, but
changing them individually and together left the tested property's total and
first page unchanged. Their filtering effect is not confirmed.
| Field | Filled in, of 12 checked | Values in the sample |
|---|---|---|
| id | 12 | |
| title | 12 | |
| text | 12 | median 179 characters |
| submission_time | 12 | |
| locale | 12 | |
| rating_label | 12 | |
| author | 2 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| property_id (path) | string | Yes | Vrbo property ID (optionally ending in ha) | 11458735ha | |
| start_index | integer | No | Zero-based review offset Minimum: 0. | ||
| size | integer | No | Page size from 1 to 50 Minimum: 1. Maximum: 50. | ||
| sort_by | string | No | Sort value from the response's sort_options Allowed values: HIGHEST_TO_LOWEST_RATED, LOWEST_TO_HIGHEST_RATED, NEWEST_TO_OLDEST, NEWEST_TO_OLDEST_BY_LANGUAGE, NEWEST_TO_OLDEST_BY_RELEVANCY. | ||
| include_recent_reviews | boolean | No | Include recent reviews | ||
| include_ratings_only_reviews | boolean | No | Include rating-only reviews | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/vrbo/properties/11458735ha/reviews?sort_by=HIGHEST_TO_LOWEST_RATED&include_recent_reviews=true&include_ratings_only_reviews=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
Request schema
No body schema
Response schema
#/definitions/vrbo.vrboReviewsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | vrbo.ReviewsResponse | No | ||||
| data.product_id | string | No | ||||
| data.property_id | string | No | ||||
| data.reviews | array | No | ||||
| data.reviews[].author | string | No | ||||
| data.reviews[].id | string | No | ||||
| data.reviews[].locale | string | No | ||||
| data.reviews[].management_responses | array | No | ||||
| data.reviews[].management_responses[].header | string | No | ||||
| data.reviews[].management_responses[].id | string | No | ||||
| data.reviews[].management_responses[].response | string | No | ||||
| data.reviews[].rating | number | No | ||||
| data.reviews[].rating_label | string | No | ||||
| data.reviews[].submission_time | string | No | ||||
| data.reviews[].text | string | No | ||||
| data.reviews[].title | string | No | ||||
| data.reviews[].travelers | array | No | ||||
| data.size | integer | No | ||||
| data.sort_by | string | No | ||||
| data.sort_options | array | No | ||||
| data.sort_options[].description | string | No | ||||
| data.sort_options[].label | string | No | ||||
| data.sort_options[].selected | boolean | No | ||||
| data.sort_options[].value | string | No | ||||
| data.source_url | string | No | ||||
| data.start_index | integer | No | ||||
| data.total_count | integer | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/vrbo/properties/11458735ha/reviews?sort_by=HIGHEST_TO_LOWEST_RATED&include_recent_reviews=true&include_ratings_only_reviews=true" \
-H "x-api-key: $CRAWLORA_API_KEY"