# OTTO Product Details API Documentation

Scrappa's `GET /api/otto/product` returns one OTTO product as structured JSON. Pass `id` (from search results) or the product `url`.

## What you get

`product` has `title`, `brand`, `description`, `gtin`, `sku`, `price`, `original_price`, `discount_percent`, `currency`, `condition`, `images` (full size links), `breadcrumbs`, `material`, `material_composition`, `attributes`, `rating` and `review_count`.

## Sizes and colours

`variants` lists every size of the selected colour (`selected_color`) with `available` set to `true` or `false`. `colors` lists every colour with `available`. OTTO shows availability per size and no stock counts, so the API returns no stock counts. Pass `variation_id` (from search results, `items[].colors[].variation_id`) to read another colour, or use a link that holds `?variationId=`.

## Seller offer and delivery

`offers` holds the seller offer: `seller`, `price`, `original_price`, `shipping_cost`, `delivery_days` (`min` and `max` working days), `handling_days` and `return_policy` (`days`, `free`). `availability.text` is the delivery text OTTO shows.

## Credits

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

- **Documentation:** [https://scrappa.co/docs/otto-api/otto_product](https://scrappa.co/docs/otto-api/otto_product)
- **API group:** OTTO API
- **Endpoint:** `GET https://scrappa.co/api/otto/product`

## 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. |
| `variation_id` | string | No | Colour variation id from search results. |

## Example request

```bash
#!/bin/bash

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

## Example response

```json
{
    "success": true,
    "product": {
        "id": "C774733826",
        "variation_id": "1172134399",
        "url": "https://www.otto.de/p/marikoo-outdoorjacke-erdbeere-sportliche-funktionsjacke-mit-kapuze-C774733826/",
        "title": "Marikoo Outdoorjacke Erdbeere sportliche Funktionsjacke mit Kapuze",
        "brand": "Marikoo",
        "gtin": "4062648022086",
        "price": 99.95,
        "original_price": null,
        "discount_percent": null,
        "currency": "EUR",
        "condition": "new",
        "availability": {
            "state": "in_stock",
            "text": "lieferbar - in 3-4 Werktagen bei dir",
            "delivery_days": {
                "min": 3,
                "max": 4
            }
        },
        "images": [
            "https://i.otto.de/i/otto/f0f6fe49-54fc-5a0d-a2a2-800c86483c4f/marikoo-outdoorjacke-erdbeere-sportliche-funktionsjacke-mit-kapuze-weinrot.jpg?$formatz$"
        ],
        "breadcrumbs": [
            {
                "name": "Damen-Mode",
                "url": "https://www.otto.de/damen/"
            },
            {
                "name": "Jacken",
                "url": "https://www.otto.de/damen/mode/jacken/"
            }
        ],
        "material": "Kunstfaser",
        "material_composition": "Obermaterial: 100% Polyester. Innenfutter: 100% Polyester",
        "rating": 4.5,
        "review_count": 773,
        "selected_color": "weinrot",
        "colors": [
            {
                "name": "Black2",
                "available": true,
                "selected": false
            }
        ],
        "variants": [
            {
                "color": "weinrot",
                "size": "XS (34)",
                "available": true,
                "selected": true
            },
            {
                "color": "weinrot",
                "size": "S (36)",
                "available": true,
                "selected": false
            }
        ],
        "offers": [
            {
                "seller": "OTTO",
                "price": 99.95,
                "original_price": null,
                "currency": "EUR",
                "availability": "in_stock",
                "condition": "new",
                "shipping_cost": 4.95,
                "delivery_days": {
                    "min": 3,
                    "max": 4
                },
                "handling_days": {
                    "min": 0,
                    "max": 1
                },
                "return_policy": {
                    "days": 30,
                    "free": true,
                    "country": "DE"
                }
            }
        ]
    },
    "meta": {
        "endpoint_family": "otto-product",
        "billable": true,
        "attempts": 1,
        "credits_charged": 2
    }
}
```

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