# Booking Reviews

Extract Booking.com hotel reviews, ratings, stars, and reviewer details from hotel URLs

**Pricing:** $0.5 / 1k reviews

**Endpoint:** `POST /api/v1/agents/booking/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | array | Yes | Booking.com hotel URLs to scrape reviews from. One per line. |
| `maxReviewsPerHotel` | integer | No | Reviews per hotel. Use 0 for all. |
| `sortBy` | string | No | Sort order for reviews. |
| `cutoffDate` | date | No | Stop loading older/newer reviews past this date. Only applies when Sort By = Newest first OR Oldest first. |
| `reviewScores` | array | No | Filter to reviews in these score bands. Leave empty for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/api/v1/agents/booking/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":["..."]}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/api/v1/agents/booking/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": [
        "..."
    ]
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/api/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/api/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, endpoints): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `hotelUrl` | Hotel URL | url |
| `hotelName` | Hotel Name | text |
| `hotelCountry` | Hotel Country | text |
| `hotelId` | Hotel ID | number |
| `reviewId` | Review ID | text |
| `reviewTitle` | Review Title | text |
| `liked` | Liked | text |
| `disliked` | Disliked | text |
| `rating` | Rating | rating |
| `posted` | Posted | text |
| `language` | Language | text |
| `travelerType` | Traveler Type | text |
| `room` | Room | text |
| `checkIn` | Check-In | text |
| `checkOut` | Check-Out | text |
| `nights` | Nights | number |
| `helpfulVotes` | Helpful Votes | number |
| `photos` | Photos | array |
| `propertyResponse` | Property Response | text |
| `hotelRating` | Hotel Rating | rating |
| `hotelReviews` | Hotel Reviews | number |
| `scoreBand` | Score Band | text |
| `reviewsMatchingFilter` | Reviews Matching Filter | number |
| `reviewer` | Reviewer | object |
| `categoryScores` | Category Scores | object |
