E-commerce & Marketplaces

Otto.de API scraper API

The Otto.de API returns product data from Otto, one of Germany's largest online retailers, as clean JSON.

9 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary search endpoint returns products with name, brand, price, condition, availability, rating, review count, image and URL, and you can browse, pull a product, deals, new_arrivals, brands, categories, filters and reviews. It is built for price intelligence, catalog enrichment and German e-commerce analytics that need Otto data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/otto/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "iphone"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "otto",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1955.5,
    "record_count": 55,
    "bytes": 656468,
    "cache_hit": false,
    "completeness_pct": 29.09,
    "method": "ssr_embedded_ldjson",
    "url": "https://www.otto.de/suche/iphone/",
    "offset": 0,
    "page_size": 72,
    "has_more": true,
    "next_offset": 72
  },
  "data": {
    "products": [
      {
        "variation_id": "[redacted-phone]",
        "product_id": "[redacted-phone]",
        "name": "[redacted-name]",
        "url": "https://www.otto.de/p/apple-iphone-air-smartphone-16-6-cm-6-5-zoll-1000-gb-speicherplatz-48-mp-kamera-[redacted-phone]/?variationId=[redacted-phone]",
        "image": "https://i.otto.de/i/otto/336d77e2-dc72-5c9a-b515-09d0739f3f5b?$responsive_ft2$",
        "brand": "Apple",
        "price": 1639.99,
        "currency": "EUR",
        "condition": "new",
        "availability": "in_stock",
        "rating": 4.5,
        "review_count": 68,
        "sku": null,
        "sponsored": true
      },
      {
        "variation_id": "[redacted-phone]",
        "product_id": "[redacted-phone]",
        "name": "[redacted-name]",
        "url": "https://www.otto.de/p/apple-iphone-17-pro-smartphone-15-9-cm-6-3-zoll-1000-gb-speicherplatz-48-mp-kamera-[redacted-phone]/?variationId=[redacted-phone]",
        "image": "https://i.otto.de/i/otto/7db310fe-b236-5a0a-a2c7-64bbf85d77f0?$responsive_ft2$",
        "brand": "Apple",
        "price": 1255.62,
        "currency": "EUR",
        "condition": "new",
        "availability": "in_stock",
        "rating": 4.5,
        "review_count": 362,
        "sku": null,
        "sponsored": true
      },
      {
        "variation_id": "[redacted-phone]",
        "product_id": "[redacted-phone]",
        "name": "[redacted-name]",
        "url": "https://www.otto.de/p/apple-iphone-16e-smartphone-15-4-cm-6-1-zoll-512-gb-speicherplatz-48-mp-kamera-[redacted-phone]/?variationId=[redacted-phone]",
        "image": "https://i.otto.de/i/otto/bdc47e20-418d-51cb-b942-6941ed4d23af?$responsive_ft2$",
        "brand": "Apple",
        "price": 581.13,
        "currency": "EUR",
        "condition": "new",
        "availability": "in_stock",
        "rating": 5,
        "review_count": 274,
        "sku": null
      }
    ],
    "offset": 0,
    "page_size": 72,
    "has_more": true,
    "next_offset": 72
  }
}
Actions

What the Otto.de API scraper API does

ActionDescriptionConcrete use caseKey params
searchKeyword product search on Otto.de with brand, price, rating, condition and availability filters, sort order and offset pagination. Returns product cards (name, brand, price in EUR, condition, availability, rating, review count, image, URL).Pricing teams call search to get keyword product search on Otto.de with brand, price, rating, condition and availability filte….query, offset, marke, brand, sortierung, ...
browseBrowse an Otto.de category landing (e.g. moebel, technik/computer, mode) with the same brand / price / rating / sort filters and offset pagination as search.Marketplace operators call browse to get browse an Otto.de category landing (e.g.category, offset, marke, brand, sortierung, ...
productProduct facts for one Otto.de item by variation id — name, brand, price (EUR), condition, availability, aggregate rating, review count, image and URL. Read from the search grid because Otto's standalone product page is Kasada anti-bot walled; individual review text, GTIN and the full spec table are not available on this tier.Catalog enrichment teams call product to get product facts for one Otto.de item by variation id.id, query, variation_id
dealsCurrent Otto.de deal / sale campaign products (e.g. Deal des Monats, Super Sale). Auto-discovers the active campaigns from the storefront and returns their product cards. Pick a specific campaign with the campaign param.Retail analysts call deals to get current Otto.de deal / sale campaign products (e.g.campaign
new_arrivalsNewest products on Otto.de — keyword or category sorted newest-first (sortierung=neuheiten). Pass query OR category; supports the same filters and offset pagination.Pricing teams call new_arrivals to get newest products on Otto.de.query, category, offset, marke, brand, ...
brandsBrand filter links available on an Otto.de category landing page — feed the slug to search/browse as the brand filter.Marketplace operators call brands to get brand filter links available on an Otto.de category landing page.category
categoriesOtto.de department tree — top-level departments from the homepage, or the child categories of a parent path (e.g. parent=technik). Feed paths to browse / brands.Catalog enrichment teams call categories to get otto.de department tree.parent, category
filtersDiscover the sort orders and filter query params supported by Otto.de search/browse, with a live probe showing the available deal campaigns.Retail analysts call filters to discover the sort orders and filter query params supported by Otto.de search/browse, with a l….none
reviewsAggregate customer rating for an Otto.de item — average star rating and total review count from the search-embedded data. Individual review TEXT is only on the standalone product page, which is Kasada anti-bot walled, so it is not available on this bare-curl tier (reviews[] is returned empty with text_available=false, honestly).Pricing teams call reviews to get aggregate customer rating for an Otto.de item.id, query, variation_id
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/otto/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"iphone"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.otto.search with {"query":"iphone"}.
Use cases

Who uses this API and why

  • Pricing teams call search and deals to track Otto prices and promotions against competitors.
  • Catalog-enrichment tools use product to fill listings with images, specs and availability.
  • Market analysts use brands and categories to size a segment in the German market.
FAQ

Questions developers ask before integrating

What is the Otto.de API scraper API?

Otto.de API scraper API is a ReefAPI endpoint group for otto.de api scraper It returns live JSON through POST requests under /otto/v1.

Is the Otto.de API scraper API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Otto.de API scraper calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Otto.de API scraper login or account?

No login to Otto.de API scraper is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Otto.de API scraper data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Otto.de API scraper API use?

Otto.de API scraper actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Otto.de API scraper from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call otto actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Otto.de API scraper API a Otto.de API scraper scraper?

It is the managed alternative to a DIY Otto.de API scraper scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same otto.de api scraper back as clean JSON.

Why does my Otto.de API scraper scraper keep getting blocked?

Most Otto.de API scraper scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / otto

Otto.de API scraper

Otto.de API scraper

base /otto/v19 endpoints
post/otto/v1/browse1 credit

Browse an Otto.de category landing (e.g. moebel, technik/computer, mode) with the same brand / price / rating / sort filters and offset pagination as search.

ParameterAllowed / rangeDescription
categoryrequiredOtto category path, e.g. moebel or technik/computer (discover paths via the categories action).
sortoptionalbeliebtheit · preis-aufsteigend · preis-absteigend · bewertung · neuheitenSort order (Otto 'sortierung' keys).
brandoptionalFilter by brand slug (lowercased), e.g. apple, samsung, hp.
price_minoptionalMinimum price (EUR).
price_maxoptionalMaximum price (EUR).
preisoptionalAdvanced: raw Otto price range 'lo-hi' (overrides price_min/price_max).
min_ratingoptional1–5Minimum star rating filter (1-5).
conditionoptionalOtto Zustand filter (German value, e.g. neu, gebraucht).
availabilityoptionalOtto Verfuegbarkeit filter (German value, e.g. sofort-lieferbar).
offset = 0optional0–Pagination offset (skip N, page size 72). Page with meta.next_offset.
Try in playground →
post/otto/v1/product1 credit

Product facts for one Otto.de item by variation id — name, brand, price (EUR), condition, availability, aggregate rating, review count, image and URL. Read from the search grid because Otto's standalone product page is Kasada anti-bot walled; individual review text, GTIN and the full spec table are not available on this tier.

ParameterAllowed / rangeDescription
idrequiredOtto variation id (e.g. 1786938267), as returned in search/browse products[].variation_id.
queryrequiredKeyword the variation appears under (the PDP is anti-bot walled, so the item is located via the search grid).
Try in playground →
post/otto/v1/deals1 credit

Current Otto.de deal / sale campaign products (e.g. Deal des Monats, Super Sale). Auto-discovers the active campaigns from the storefront and returns their product cards. Pick a specific campaign with the campaign param.

ParameterAllowed / rangeDescription
campaignoptionalSpecific deal campaign slug (e.g. deal-des-monats, super-sale). Omit to auto-pick the first active campaign; the full list is returned in available_campaigns.
Try in playground →
post/otto/v1/new_arrivals1 credit

Newest products on Otto.de — keyword or category sorted newest-first (sortierung=neuheiten). Pass query OR category; supports the same filters and offset pagination.

ParameterAllowed / rangeDescription
queryoptionalKeyword to pull newest items for, e.g. sneaker.
categoryoptionalCategory path to pull newest items for (alternative to query).
brandoptionalFilter by brand slug (lowercased), e.g. apple, samsung, hp.
price_minoptionalMinimum price (EUR).
price_maxoptionalMaximum price (EUR).
preisoptionalAdvanced: raw Otto price range 'lo-hi' (overrides price_min/price_max).
min_ratingoptional1–5Minimum star rating filter (1-5).
conditionoptionalOtto Zustand filter (German value, e.g. neu, gebraucht).
availabilityoptionalOtto Verfuegbarkeit filter (German value, e.g. sofort-lieferbar).
offset = 0optional0–Pagination offset (skip N, page size 72). Page with meta.next_offset.
Try in playground →
post/otto/v1/brands1 credit

Brand filter links available on an Otto.de category landing page — feed the slug to search/browse as the brand filter.

ParameterAllowed / rangeDescription
categoryrequiredOtto category path to list brand filters for, e.g. technik.
Try in playground →
post/otto/v1/categories1 credit

Otto.de department tree — top-level departments from the homepage, or the child categories of a parent path (e.g. parent=technik). Feed paths to browse / brands.

ParameterAllowed / rangeDescription
parentoptionalParent category path to list children of (omit for the top-level departments).
Try in playground →
post/otto/v1/filters1 credit

Discover the sort orders and filter query params supported by Otto.de search/browse, with a live probe showing the available deal campaigns.

Try in playground →
post/otto/v1/reviews1 credit

Aggregate customer rating for an Otto.de item — average star rating and total review count from the search-embedded data. Individual review TEXT is only on the standalone product page, which is Kasada anti-bot walled, so it is not available on this bare-curl tier (reviews[] is returned empty with text_available=false, honestly).

ParameterAllowed / rangeDescription
idrequiredOtto variation id (from search/browse products[].variation_id).
queryrequiredKeyword the variation appears under.
Try in playground →