Custom scraper

Otto.de Scraper

Otto is the largest German online retailer after Amazon, and its marketplace API is closed to anyone who is not an approved partner. The AI scraper reads the public product page instead, turns it into columns you define, and runs on a schedule.

  • otto.de
Three stages of an Otto run: paste an otto.de search URL billed on the plain page tier at EUR 0.15 per 1,000 pages; declare product_title and price in the Custom Schema builder; and get back real rows, with a Harman/Kardon soundbar at 369,99 euro and in stock.

How to scrape Otto.de

Otto is an unusual hybrid: part traditional retailer selling its own stock, part marketplace carrying third-party partners. For a brand that matters, because your product can appear on otto.de sold by Otto itself, by a partner you appointed, or by one you did not, and the price can differ in each case. Otto's programmatic access is a partner API, gated behind an application and an approved commercial relationship. It is not something a competitor analyst signs up for, and there is no public read API for price data. Scrapewise carries no dedicated Otto endpoint either. What works is the product page, which Otto renders to any visitor. You paste otto.de URLs into the AI scraper, declare the columns you want, and set a daily schedule. Every run comes back over REST, CSV or Excel, and you pay per page from a prepaid wallet.

What the AI scraper does with an otto.de link

Three steps, same as any other site. Nothing about Otto is pre-built, which is why it reaches a retailer nobody ships an endpoint for.

  1. Paste the link

    A product page, a brand page, or a category URL with the filters already applied. Otto uses long category and search URLs that encode the filters you set in the browser, so a view you built by hand is a valid input.

  2. You declare the columns

    An Otto pricing job usually wants the current price, any strikethrough reference price, delivery cost and window, whether Otto or a partner is selling, the variant in question and the availability wording. You name those fields yourself in a Custom Schema, or start from the ready Product List schema and add to it.

  3. Schedule it and take the data out

    Run it once or daily. Pull each run by REST API or download it as CSV or Excel. The columns stay the same between runs, so an Otto table lines up with whatever you already collect from other German channels.

Set it up once. The data keeps coming.

Save your search once and it runs by itself. Every run lands in your own Scrapewise database, and you pick how to read it.

  1. Set it up once

    Add your ASINs, keywords, places or apps to a scraper in the web app. New accounts get 5 free requests.

  2. Runs on your schedule

    Pick daily, weekly on the days you choose, every few days, or the first or last day of the month. Scheduled runs start at night, European time. Need it more often? Start runs from your own code.

  3. Saved in your database

    Each run adds dated rows, so this week sits next to last week. Rows are kept for 90 days.

  4. Use it your way

    Open the table in the web app and download the latest run as an Excel file. Ask your own AI assistant about it. Or pull the rows into your code with an API key.

Ask your AI assistant about your own data

Connect Claude Desktop or Claude Code with a read-only key. The assistant reads the rows you've already collected, at no extra cost on Scrapewise. With a full-access key it can start a run for you too.

  • Which of my ASINs lost the Buy Box this week?
  • Which competitor cut prices the most since Monday?
  • Show the keywords where I dropped out of the top 10.

What you send and what you get

You send a link and a column list. Whether Otto or a partner holds the listing, and what each variant costs, comes from the page itself.

You give
  • Link to an otto.de product, brand or category pagerequired

    Set your filters in the browser first, then copy the address. Otto encodes them in the URL, so a view you built by hand is a valid input.

    https://www.otto.de/suche/philips%20hue%20e27/
  • Your column listrequired

    Start from the ready Product List schema or name your own fields in a Custom Schema. The AI fills the fields you declared.

    Custom Schema, 8 fields
  • How often it runsoptional
    • On demand
    • Daily
    • Weekly
    • Monthly

    Daily is the fastest cadence available, and enough to catch a discount that lands on one variant only.

You get

One row per product tile in the listing, 8 columns each

  • product_title
  • brand
  • price
  • currency
  • availability
  • condition
  • variation_id
  • checked_at

REST API, CSV or Excel. The column set stays the same between runs, so an Otto table lines up with your other German channels.

What a run on one otto.de listing actually returned

This is real output, not a mock-up. These are the first eight tiles otto.de returned for the search "philips hue e27" on 24 September 2026, read straight off the page with no browser needed. Otto ranks its own results, so the first tiles are not always the ones you searched for. Scroll sideways to see every column.

All 8 columns

  • product_title
  • brand
  • price
  • currency
  • availability
  • condition
  • variation_id
  • checked_at

8 sample rows, all 8 columns seen across sample calls.

8 sample rows, all 8 columns seen across sample calls.
product_titleproduct_titleProduct title as Otto writes itbrandbrandBrand shown on the tilepricepricePrice Otto shows for this tilecurrencycurrencyCurrency the price is quoted inavailabilityavailabilityStock state Otto publishes for the tileconditionconditionNew or used, as Otto states itvariation_idvariation_idOtto's own identifier for the variant behind the tilechecked_atchecked_atWhen this run collected the page (UTC)
Harman/Kardon Enchant 900 Soundbar (Bluetooth, WLAN, 195 W)Harman/Kardon369,99 €EURInStockNewCondition19433314032026-09-24T18:32:44Z
OTTO home Deckenleuchte Avveline - Textilschirm Deckenlampe, ohne LeuchtmittelOTTO home22,99 €EURInStockNewCondition18529242092026-09-24T18:32:44Z
Philips Hue LED-Leuchtmittel Essential White & Color Ambiance, E27, 1 St.Philips Hue21,99 €EURInStockNewCondition20348865582026-09-24T18:32:44Z
Philips Hue LED-Leuchtmittel Essential White & Color Ambiance, E27, 3 St.Philips Hue53,99 €EURInStockNewCondition20348865312026-09-24T18:32:44Z
Philips Hue LED-Filament White Standard A60 550lm, E27, 1 St., WarmweißPhilips Hue22,49 €EURInStockNewCondition20348861132026-09-24T18:32:44Z
Philips Hue LED Stehlampe Play Stehleuchte, 135 cm, RGBWPhilips Hue149,99 €EURInStockNewCondition21021459942026-09-24T18:32:44Z
Philips Hue LED-Leuchtmittel White Ambiance 1100lm, E27, 1 St.Philips Hue39,99 €EURInStockNewCondition20348864142026-09-24T18:32:44Z
Paulmann LED-Leuchtmittel 3er Set 4,7 W AGL E27 gold, E27, 3 St.Paulmann22,99 €EURInStockNewCondition11198698982026-09-24T18:32:44Z

What an otto.de page costs

Pay-as-you-go from your wallet. No plan, no monthly fee, no seat count.

Plain page tier€0.15per 1,000 pages

We measured this rather than assumed it. A plain fetch of an otto.de listing page comes back with the offers already in the HTML, structured product data included, so the common case needs no browser at all. Deeper or faster runs can still be challenged, and a run that gets escalated is billed at the higher tier it actually used.

Worked example

300 otto.de product pages checked once a day for a month is 9,000 pages.

about EUR 1.35 for the month at this tier

You are charged for the tier a run actually used, not the tier it was expected to need, and your balance never expires.

See the full price list →

What this page is not promising

We would rather say this here than in a support ticket.

  • No dedicated Otto endpoint

    There is no Otto data API in our catalogue and no pre-built Otto schema. The AI scraper reads the page you point it at, and that is the whole mechanism.

  • No partner-account data

    Anything behind Otto's partner login, your orders, your stock, your performance figures, is not reachable by a scraper reading public pages.

  • Variants are extra URLs, not free fields

    A run against the base product URL returns the default variant. Covering every size and colour means covering more pages, which changes the page count and the cost.

  • Daily, not real time

    Daily is the fastest schedule. There is no real-time feed, no per-minute polling and no price-drop alerting.

  • No price-history database

    We store nothing about Otto prices on our side. A price curve is something you build by scheduling the scraper, starting from the day you switch it on.

  • No SKU matching or selling tools

    You get Otto's rows as Otto presents them. Mapping them to your catalogue is a separate job, we do not push prices to Otto, and we are not lawyers, so check Otto's terms before you run anything.

Typical fields the AI scraper extracts from an otto.de page

A starting point, not a fixed schema. What comes back is whatever the page actually shows on the day of the run.

Price and delivery

Otto leans heavily on strikethrough pricing and delivery promises, so the headline number alone is a poor comparison.

  • Current selling price
  • Strikethrough or reference price, when shown
  • Discount percentage, when shown
  • Delivery cost and delivery window
  • Instalment or payment options advertised on the page

Who is selling it

The distinction that makes Otto worth scraping separately from an ordinary retailer: the same product can be sold by Otto itself or by a marketplace partner.

  • Sold by Otto or by a marketplace partner
  • Partner name, where a partner holds the listing
  • Shipping and returns wording for that seller
  • Availability and stock text

Product and variants

Otto is heavy on fashion and home, so size and colour variants are the norm rather than the exception.

  • Product title
  • Brand
  • Colour and size variants listed on the page
  • Article number shown on the listing
  • Category breadcrumb
  • Rating and review count
  • Product image URL

The column list is one you write: name each field, give it a type and a line telling the AI what to look for. The schema belongs to your account, so an Otto field set can be reused on the next German channel you point us at. How Custom Schema works →

What it cannot give you The scraper cannot invent a field the page does not render. Variant-level prices and stock are frequently only revealed once a size or colour is selected, so a run against the base URL returns the default variant rather than the whole matrix. Tell us up front if you need every variant, because that is a different set of URLs. Historical prices are not on the page and are not stored on our side.

What people use Otto data for

01

Watching your brand on Germany's number two retailer

For a lot of brands Otto is the largest German channel after Amazon, and the least monitored. Scraping your own products daily tells you what Otto and its partners are actually charging for them, which is not always what you agreed.

02

Catching partner listings you did not appoint

Otto's marketplace side means a third-party partner can be selling your SKU alongside Otto's own listing. Capturing who holds the listing is what turns a suspicion into a channel conversation.

03

Discount and promotion tracking

Otto runs frequent strikethrough promotions. Pulling current price and reference price as separate columns shows the real discount depth over time, which is the number that erodes your price positioning.

04

Competitor price monitoring in German retail

Scraping a category gives you what every competing product in it costs today, including delivery. Run it daily and you have a market curve rather than an impression.

05

Assortment and availability checks

Which of your sizes and colours are actually in stock on Otto, and which have been quietly out for a fortnight. That is a lost-sales question that no one notices from a price report alone.

06

Feeding your own repricing rules

The export is a normal REST API or CSV, so it drops into whatever repricing logic you already run. Scrapewise supplies the observation; your rules decide what to do with it.

What makes otto.de harder than an ordinary storefront

The bot wall is moderate. The variant model is what actually costs people time.

Access

  • A plain fetch does return the listings, so the cheap tier covers the common case
  • Automated-looking traffic still draws challenges, and a refused page escalates to a browser and then to a residential exit
  • Success is high but not guaranteed on any individual run

Variants and page structure

  • Fashion and home listings carry size and colour matrices where price and stock can differ per variant
  • The base URL shows a default variant, so the full matrix means more URLs rather than more fields
  • Category pages are lazily loaded and paginated, so a category sweep is a list of URLs, not one request
  • Reference and strikethrough prices appear and disappear with promotions

Retailer and marketplace mixed

  • The same product can be sold by Otto itself or by a marketplace partner, at different prices
  • Partner listings carry different delivery and returns terms, which changes the real comparison
  • otto.de is the German site; the group's other brands are separate sites and separate scrapers

Scheduling and delivery

  • Daily is the fastest cadence, which matches how often retail prices meaningfully move
  • Every run is retrievable by REST API, or downloadable as CSV or Excel
  • Columns stay stable between runs, so downstream jobs do not need to re-map fields
FAQ

Otto.de scraping — questions

What people ask before pointing the scraper at otto.de.

No. Otto's programmatic access is a partner API, gated behind an application and an approved commercial relationship, and aimed at partners managing their own listings. It is not something you sign up for to read competitor prices, and there is no public read API for otto.de product data.

Ready to pull Otto.de data into your stack?

Start free — or talk to our team about your exact fields, refresh cadence and volume.