# idealo Offers API Documentation

List the shop offers of one product, best offer first. Each offer has the price, the shipping text, the total price when idealo states it, delivery window and carriers, return policy, payment methods, voucher, shop identity and the shop rating with its rating count. Marketplace sellers are marked. A page holds 20 offers (pages after the first take one extra call to detect the end of the list) and has_more is true for a full page, so the last page of a product with an exact multiple of 20 offers can still say true. Set all=true to get every offer with an exact total: the request walks all pages, takes one call per 20 offers and fails without charge if the product has more than 800 offers. include_shop_ratings adds idealo's own shop rating to each offer with about one extra second per shop; it works with page only. When shipping_known is false the shipping cost is not stated by idealo; it is not free.

- **Documentation:** [https://scrappa.co/docs/idealo-api/idealo_offers](https://scrappa.co/docs/idealo-api/idealo_offers)
- **API group:** idealo API
- **Endpoint:** `GET https://scrappa.co/api/idealo/offers`

## 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 |
| --- | --- | --- | --- |
| `product_id` | string | Yes | idealo product ID from search, for example 200474612. |
| `page` | integer | No | 1-based page of 20 offers. Defaults to 1. Not allowed with all. |
| `all` | boolean | No | Set true to return every offer of the product. |
| `include_shop_ratings` | boolean | No | Set true to add idealo's shop rating (idealo_rating) to every offer. Not allowed with all. |

## Example response

```json
{
    "meta": {
        "duration_ms": 1500,
        "upstream_calls": 2
    },
    "offers": [
        {
            "shop": {
                "id": "277785",
                "name": "best-in-saeco.de",
                "rating": 5,
                "rating_count": 6,
                "is_marketplace": false
            },
            "price": 409,
            "title": "PHILIPS Series 5400 Kaffeevollautomat EP5447/90",
            "voucher": null,
            "currency": "EUR",
            "delivery": {
                "status": "Lieferung: bis Do. 22.10.",
                "window": "bis Do. 22.10.",
                "providers": [
                    "DHL",
                    "DPD"
                ]
            },
            "offer_key": "f4592a4a035f79570daeb30f5a95af0f",
            "total_price": 409,
            "return_policy": "R\u00fccksendung 30 Tage kostenfrei",
            "shipping_text": "409,00 \u20ac inkl. Versand",
            "shipping_costs": 0,
            "shipping_known": true,
            "payment_methods": [
                "Rechnung",
                "Vorkasse"
            ],
            "price_formatted": "409,00 \u20ac",
            "is_best_total_price": true
        }
    ],
    "success": true,
    "has_more": false,
    "product_id": "200474612",
    "total_offers": 24
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | Returned when a required parameter is missing or a value is out of range. No credits are charged. |
| 404 | Not Found | Returned when idealo does not know the product, shop or page. No credits are charged. |
| 503 | Service Unavailable | Returned when idealo could not be read after several attempts. Failed requests are not charged. Try again. |
| 502 | Unexpected Response | Returned when idealo answers with a page this API cannot read. Failed requests are not charged. |

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