
Waze Traffic Scraper
scrape.ly/store/cornerledger/waze-scraperTravelAutomotive
1 monthly user

Scrape public Booking.com hotel reviews: review text, ratings, stay dates, room type, and the reviewer's public name and country.
Export public guest reviews from Booking.com hotel, apartment, and other stay pages. Paste a property URL and get one row per review: what the guest liked and disliked, the score, stay dates, room, traveler type, and the name and country the guest published. No Booking.com login and no browser.
https://www.booking.com/hotel/cz/jeromehouse.en-gb.html).| Field | Type | What it does |
|---|---|---|
startUrls | array | Booking.com hotel pages. A search page is skipped. userData.customData on a URL is copied onto every review from that hotel. |
maxReviewsPerHotel | integer | Stop after this many reviews per hotel. Default 10. |
sortReviewsBy | string | f_relevance, f_recent_desc (default), f_recent_asc, f_score_desc, or f_score_asc. |
cutoffDate | string | UTC date YYYY-MM-DD or a relative value such as 7 days. Applies to newest first and oldest first only. |
reviewScores | array | ALL, or the score bands you want. |
proxyConfiguration | object | Datacenter proxy by default. |
With newest first, the run stops at the first review posted before the cutoff. With oldest first, reviews posted after the cutoff are left out. Other sort orders ignore it.
{
"startUrls": [
{ "url": "https://www.booking.com/hotel/cz/jeromehouse.en-gb.html" }
],
"maxReviewsPerHotel": 10,
"sortReviewsBy": "f_recent_desc",
"reviewScores": ["ALL"]
}
One dataset row per review.
| Field | Description |
|---|---|
id, hotelId, startUrl | Review id, property id, and the URL you gave. |
rating, reviewTitle | Score and headline. A blank headline is filled with the score label, such as Exceptional for 10 or Superb for 9. |
likedText, dislikedText | What the guest liked and disliked. |
reviewDate, checkInDate, checkOutDate, numberOfNights | Posting date and stay dates. |
roomInfo, stayRoomId, travelerType | Room and traveler type. |
userName, userLocation, userAvatar | Reviewer details the guest published. |
reviewLanguage, helpfulVotes, images, propertyResponse | Language, votes, guest photos, and the hotel's reply. |
hotelRating, hotelReviews, hotelRatingScores | Property rating, review count, and category scores. |
reviewsScoreFilter, totalCategoryReviews, reviewPage | Active score filter and its review count. |
customData | Value copied from userData.customData, if set. |
Real item from a test run (trimmed):
{
"id": "57ef83cc12f6c3cf",
"hotelId": 77040,
"hotelRating": 9.2,
"hotelReviews": 5899,
"hotelRatingScores": [
{ "name": "Location", "codeName": "hotel_location", "score": 9.70646476745605 },
{ "name": "Cleanliness", "codeName": "hotel_clean", "score": 9.14645481109619 }
],
"reviewPage": 1,
"reviewsScoreFilter": "ALL",
"startUrl": "https://www.booking.com/hotel/cz/jeromehouse.en-gb.html",
"totalCategoryReviews": 5899,
"userName": "Jane",
"userLocation": "Germany",
"roomInfo": "Standard Single Room",
"checkInDate": "2023-10-09",
"checkOutDate": "2023-10-11",
"numberOfNights": 2,
"reviewDate": "2023-10-14T09:11:33.000Z",
"reviewTitle": "Very good",
"likedText": "Fin beliggenhed.\nRar betjening.\nGod morgenmad.",
"dislikedText": null,
"rating": 8,
"propertyResponse": null,
"images": [],
"reviewLanguage": "da",
"travelerType": "Solo traveler",
"helpfulVotes": 1
}
$1.10 per 1,000 reviews, which is $0.0011 per saved review.
Worked example: 1,000 reviews cost $1.10 in review fees. Compute and datacenter proxy traffic are billed separately at standard rates; our measured total for a 10-review run was about $0.0135, including the $0.011 in review fees.
Is it legal to scrape Booking.com reviews? The actor reads only reviews shown on public hotel pages. You are responsible for using the data in line with Booking.com's terms and the privacy rules that apply to you.
Do I need a Booking.com account or my own proxy? No. Datacenter proxy is built in and is enough for the public review list.
What happens with a bad URL? A URL that is not a Booking.com hotel page is skipped, and a hotel that does not exist adds no rows. The run still succeeds and keeps reviews already saved from other URLs.
Which date does the cutoff use?
The date the review was posted, in UTC, not the check-in date. A relative value such as 7 days means that many days before the run starts.
What if a field is empty?
Many guests write only a rating or only one of liked and disliked, so likedText or dislikedText can be null.
Can I schedule it or use the API? Yes. Use schedules in the console, or start runs and read the dataset via the API.
xu when Booking.com machine-translated them.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayRequiredHotel URLs
Booking.com hotel pages, such as https://www.booking.com/hotel/cz/jeromehouse.en-gb.html. A search page is skipped. userData.customData on a URL is copied onto each review from that hotel.
maxReviewsPerHotelintegerOptionaldefault 10Maximum reviews per hotel
Stop after this many reviews for each hotel URL.
Sort order, a stay-or-post date cutoff, and the score bands shown on the hotel page.
sortReviewsByenumOptionaldefault "f_recent_desc"Sort reviews by
Order of the reviews. The cutoff date applies only to newest first and oldest first.
cutoffDatestringOptionalCutoff date
With newest first, the run stops at the first review posted before this UTC date. With oldest first, reviews posted after this date are left out. Other sort orders ignore it. Use YYYY-MM-DD or a relative value such as 7 days.
reviewScoresarrayOptionaldefault ["ALL"]Review scores
Keep reviews in these score bands. All scores reads the list without a score filter.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to reach Booking.com. Datacenter is enough for the public review API.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| rating | number | Guest score from 1 to 10 |
| reviewTitle | string | null | Review headline, or the score label when the guest left the headline blank |
| likedText | string | null | What the guest liked |
| dislikedText | string | null | What the guest disliked |
| reviewDate | string | null | When the review was posted, UTC |
| numberOfNights | number | null | Length of the stay in nights |
| travelerType | string | null | Couple, family, group, or solo traveler |
| userName | string | null | Reviewer first name |
| userLocation | string | null | Country the reviewer published |
| startUrl | string | Hotel page that was scraped |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Review | $0.0011 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/booking-reviews-scraper').call({
"startUrls": [
{
"url": "https://www.booking.com/hotel/cz/jeromehouse.en-gb.html"
}
],
"maxReviewsPerHotel": 10,
"sortReviewsBy": "f_recent_desc",
"reviewScores": [
"ALL"
],
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/booking-reviews-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/booking-reviews-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Guest reviews for one hotel.
Reviews scored 7 to 9, worst first.
Newest reviews from the past 365 days.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.