Otto Product Data API
otto.de is Germany's second-largest online shop, and its product pages are built around variations: a running shoe exists in twelve sizes and four colours, a sofa in three fabrics and two seating directions, and every combination has its own variationId, price and delivery promise. The everydata.io Otto Product Data API fetches a product page by URL – including the #variationId fragment – and returns the selected variation together with all siblings as one JSON document, so you never have to reconstruct the matrix from a browser session.
100 free requests every month · realtime JSON · one API key for all platforms
What you get
Otto data, ready to use
The top level mirrors the German product page. productTitle and manufacturer give you the name and brand, productDescription the marketing copy, features the bullet list and productDetails the key/value specification table with German labels such as Größe, Farbe or Material. imageUrlList contains the i.otto.de asset URLs and mainImage the hero picture.
Pricing comes back as numbers in EUR: price is what the customer pays for the selected variation, retailPrice the crossed-out reference price (110 for a shoe currently sold at 69.99), priceSaving the discount badge as Otto prints it ("-36%") and shippingPrice the delivery surcharge, which matters for furniture and large appliances. warehouseAvailability carries Otto's stock sentence, for example "lieferbar - in 2-3 Werktagen bei dir".
variations groups every dimension (size, color) with its values, and each value states its own asin/variationId, price, retailPrice, available and selected flag. That is exactly what you need to know that size 36 is sold out while size 39 is in stock at a different price.
- productTitle, manufacturer, productDescription, features and the productDetails spec table
- price, retailPrice, priceSaving and shippingPrice as numeric EUR fields plus the warehouseAvailability sentence
- productId and variationId of the selected item, mirroring the URL you passed in
- Full variation matrix with per-value price, availability and selected flag
- imageUrlList and mainImage from i.otto.de, ready for your own CDN or product cards
- productRating and countReview as the aggregate shown above the fold
- Realtime fetch on every call – no shared cache sits between you and otto.de
How it works
Example request and response
Copy the URL from the browser. Otto encodes the product as /p/<slug>-C<productId>/ and appends #variationId=<id> once you pick a size or colour; keep that fragment if you want the exact variation, drop it to receive Otto's default selection. The endpoint is GET /ott/otto-lookup-product with a single url parameter.
GET /ott/otto-lookup-product
curl "https://api.everydata.io/ott/otto-lookup-product?url=https%3A%2F%2Fwww.otto.de%2Fp%2Freebok-astroride-trail-gt-x-2-0-laufschuh-damen-laufschuh-C887844716%2F%23variationId%3D887846268" \
-H "x-api-key: YOUR_API_KEY"Response (shortened)
{
"responseStatus": "PRODUCT_FOUND_RESPONSE",
"responseMessage": "Product successfully found!",
"productTitle": "Reebok Astroride Trail GT-X 2.0 Laufschuh Damen Laufschuh",
"manufacturer": "Reebok",
"productId": "887844716",
"variationId": "887846268",
"countReview": 345,
"productRating": "4.5",
"warehouseAvailability": "lieferbar - in 2-3 Werktagen bei dir",
"retailPrice": 110,
"price": 69.99,
"shippingPrice": 0,
"priceSaving": "-36%",
"features": [
"Atmungsaktive, wasserdichte Konstruktion",
"Unifarbenes Design"
],
"productDetails": [
{
"name": "Größe",
"value": "6 US - 36 EU - 3.5 UK"
},
{
"name": "Farbe",
"value": "schwarz"
}
],
"variations": [
{
"variationName": "size",
"values": [
{
"value": "5 US - 35 EU - 2.5 UK",
"asin": "S097Q0IYYLE2",
"selected": false,
"available": false,
"price": 69.97,
"retailPrice": 0
}
]
},
{
"variationName": "color",
"values": [
{
"value": "schwarz",
"asin": "887846268",
"selected": true,
"available": true,
"price": 69.99,
"retailPrice": 0
}
]
}
]
}The asin field on Otto responses is simply the productId repeated – Otto has no ASIN concept, the name is kept so that the payload shares its shape with our other retail endpoints. Use productId when you later call GET /ott/otto-lookup-reviews, which pages through customer reviews with page and an optional sortBy (mostHelpful, mostPositive, mostNegative, newest).
soldBy and sellerId are null for the majority of items because Otto sells them itself; they are filled for the growing share of marketplace partners on otto.de. deliveryMessage is null on the detail page and populated in search results, so read the stock sentence from warehouseAvailability here.
A 404 with a statusMessage body means otto.de showed no product for that URL – typically a discontinued article or a typo in the C-number. Upstream blocks and timeouts come back as 502/503 and are not deducted from your quota.
Related endpoints
Product details. Product page by URL.
Reviews. Paged reviews for a product.
Search products. Keyword search with paging.
Use cases
What teams build with this
DACH catalogue enrichment
Fill German titles, feature bullets, spec tables and images into your PIM by Otto URL. Because labels come back exactly as Otto prints them, German-language shops can reuse them without translation.
Assortment and availability tracking
Brands and agencies re-fetch their otto.de listings to see which sizes or colours are marked available: false, how the variation matrix changes over the season and whether images were swapped.
Variation-level competitor analysis
Compare the per-value price array of a competitor's sofa or mattress across fabrics and sizes – Otto frequently prices variations of one product differently.
Comparison and affiliate content
Render live product cards with rating, review count, discount badge and delivery line, and deep-link to the exact variationId your reader clicked.
Pricing
Pay per request, every platform included
One product page is one request, independent of how many variations it contains. The free plan's 100 requests a month are enough to map a handful of product families; Starter (5,000 requests, €30) refreshes roughly 160 Otto listings every day, Production (50,000, €80) about 1,600. Requests that fail on otto.de's side are never billed.
- Free
- 100 req / month
- Starter
- 5,000 req · €30
- Production
- 50,000 req · €80
- Business
- 300,000 req · €300
FAQ
Otto Product Data API: frequently asked questions
Related
Related use cases
Fetch your first otto.de product
Sign up for free, paste an otto.de URL with its variationId and receive the whole product family as JSON – 100 requests a month included.
Get your free API key