# OpenTable Restaurant Reviews API Documentation

Retrieve public OpenTable reviews for a restaurant by id or profile URL, up to 100 per page. Each review has the text, overall, food, service, ambience and value ratings, a noise level, the diner nickname, review count and VIP status, helpfulness votes, the owner reply with content and date, the dined and submitted dates and photos. The response also carries the ratings summary with the star distribution and the page count. Sort by newest, highest or lowest and search the review text. A page beyond the last page returns 422. Costs 1 credit.

- **Documentation:** [https://scrappa.co/docs/opentable-api/opentable_reviews](https://scrappa.co/docs/opentable-api/opentable_reviews)
- **API group:** OpenTable API
- **Endpoint:** `GET https://scrappa.co/api/opentable/reviews`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `restaurant_id` | integer | No | Numeric OpenTable restaurant id from the search endpoint, e.g. 489. Send this or url. |
| `url` | string | No | OpenTable profile URL containing /restaurant/profile/<id>. Send this or restaurant_id. |
| `country` | string | No | OpenTable site of the restaurant: us (default), gb, ca, de, au or ie. A url sets it automatically. |
| `sort` | string | No | newest (default), highest or lowest. |
| `page` | integer | No | 1-based page number. A page after the last page returns 422. |
| `per_page` | integer | No | Reviews per page, 1 to 100. |
| `query` | string | No | Only return reviews that contain this text. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/opentable/reviews?restaurant_id=489&sort=newest&per_page=2"
```

## Example response

```json
{
    "success": true,
    "data": {
        "restaurant": {
            "id": 489,
            "name": "Mon Ami Gabi",
            "url": "https://www.opentable.com/restaurant/profile/489"
        },
        "ratings_summary": {
            "overall": 4.8,
            "count": 763,
            "food": 4.8,
            "service": 4.7,
            "ambience": 4.8,
            "value": 4.5,
            "noise": 2,
            "ratings": [
                {
                    "stars": 1,
                    "count": 5
                },
                {
                    "stars": 2,
                    "count": 7
                },
                {
                    "stars": 3,
                    "count": 18
                },
                {
                    "stars": 4,
                    "count": 58
                },
                {
                    "stars": 5,
                    "count": 675
                }
            ]
        },
        "sort": "newest",
        "reviews": [
            {
                "id": "OT-489-2110613123-110016704381",
                "text": "This is one of my favorite spots for a special occasion dinner.",
                "ratings": {
                    "overall": 3,
                    "food": 5,
                    "service": 1,
                    "ambience": 5,
                    "value": 4,
                    "noise": "energetic"
                },
                "user": {
                    "nickname": "Jacqueline",
                    "initials": "J",
                    "review_count": 25,
                    "is_vip": true,
                    "location": "Chicago"
                },
                "helpfulness": {
                    "up": 0,
                    "down": 0,
                    "score": 0
                },
                "response": {
                    "content": "Dear Jacqueline, I am so sorry to hear of your recent experience.",
                    "date": "2026-11-03T16:34:46Z"
                },
                "submitted_at": "2026-11-02T19:44:14Z",
                "dined_at": "2026-11-01T18:15:00-06:00",
                "verified": true
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 2,
            "total_pages": 4533,
            "total_count": 9066,
            "has_more": true
        }
    },
    "meta": {
        "endpoint_family": "reviews",
        "billable": true
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A required query parameter is missing or invalid. This response is not billable. |
| 404 | Not Found | The requested OpenTable restaurant was not found. This response is not billable. |
| 422 | Page Out Of Range | The page is after the last page of reviews. Use the total_pages value of an earlier response. This response is not billable. |
| 502 | Invalid Source Response | The upstream answered with a shape that no longer matches the documented contract. This response is not billable. |
| 503 | Service Unavailable | The upstream service is temporarily unavailable. Please retry shortly. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
