# OTTO Product Reviews API Documentation

Scrappa's `GET /api/otto/reviews` returns customer reviews of an OTTO product, 30 per page, newest pages first as OTTO orders them. Pass `id` (from search results) or the product `url`.

## What you get

Each review has `review_id`, `rating` (1-5), `title`, `text`, `author`, `city`, `date` (YYYY-MM-DD), `size`, `color`, `seller`, `verified_purchase`, `has_images`, `helpful_count` and `helpful_votes`. `has_more` is `true` when the page is full.

## Pages

`page` is 1-100. A page past the last review returns an empty `reviews` list, never page 1.

## Credits

A successful request costs **1 credit**. Errors, blocks and `404` answers cost nothing. The response shows the charge in `meta.credits_charged`.

- **Documentation:** [https://scrappa.co/docs/otto-api/otto_reviews](https://scrappa.co/docs/otto-api/otto_reviews)
- **API group:** OTTO API
- **Endpoint:** `GET https://scrappa.co/api/otto/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 |
| --- | --- | --- | --- |
| `id` | string | No | Product id from search results, for example C774733826. Use this or url. |
| `url` | string | No | Link of an otto.de product. Use this or id. |
| `page` | integer | No | Review page of 30, 1-100. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/otto/reviews?id=C774733826&page=1"
```

## Example response

```json
{
    "success": true,
    "product_id": "C774733826",
    "reviews": [
        {
            "review_id": "d4ed5a59-cbfc-4ac4-b1be-0d24fb281d06",
            "rating": 5,
            "title": "Sehr gut",
            "text": "Passt sehr gut, Material weich, Schnitt ist gut. Gr\u00f6\u00dfengerecht.",
            "author": "einer Kundin",
            "city": "Nuernberg",
            "date": "2026-09-08",
            "size": "S (36)",
            "color": "Bone",
            "seller": "OTTO",
            "verified_purchase": true,
            "has_images": false,
            "helpful_count": 4,
            "helpful_votes": 4
        }
    ],
    "page": 1,
    "page_size": 30,
    "has_more": true,
    "meta": {
        "endpoint_family": "otto-reviews",
        "billable": true,
        "attempts": 1,
        "credits_charged": 1
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 404 | Not Found | OTTO has no product with that id or link (`not_found`). Non-billable. |
| 422 | Validation Error | A query parameter is missing, unknown or unusable. Unknown parameters are rejected, never ignored. Non-billable. |
| 503 | Upstream Unavailable | OTTO could not be reached in time or answered with a block or an unexpected page (`upstream_unavailable`, `upstream_blocked`, `parser_drift`). Retryable and never billed. Clients are never rate limited. |

## 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)
