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
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.
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.
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.
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.
Set it up once
Add your ASINs, keywords, places or apps to a scraper in the web app. New accounts get 5 free requests.
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.
Saved in your database
Each run adds dated rows, so this week sits next to last week. Rows are kept for 90 days.
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.
- 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.
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
product_titleproduct_titleProduct title as Otto writes it | brandbrandBrand shown on the tile | pricepricePrice Otto shows for this tile | currencycurrencyCurrency the price is quoted in | availabilityavailabilityStock state Otto publishes for the tile | conditionconditionNew or used, as Otto states it | variation_idvariation_idOtto's own identifier for the variant behind the tile | checked_atchecked_atWhen this run collected the page (UTC) |
|---|---|---|---|---|---|---|---|
| Harman/Kardon Enchant 900 Soundbar (Bluetooth, WLAN, 195 W) | Harman/Kardon | 369,99 € | EUR | InStock | NewCondition | 1943331403 | 2026-09-24T18:32:44Z |
| OTTO home Deckenleuchte Avveline - Textilschirm Deckenlampe, ohne Leuchtmittel | OTTO home | 22,99 € | EUR | InStock | NewCondition | 1852924209 | 2026-09-24T18:32:44Z |
| Philips Hue LED-Leuchtmittel Essential White & Color Ambiance, E27, 1 St. | Philips Hue | 21,99 € | EUR | InStock | NewCondition | 2034886558 | 2026-09-24T18:32:44Z |
| Philips Hue LED-Leuchtmittel Essential White & Color Ambiance, E27, 3 St. | Philips Hue | 53,99 € | EUR | InStock | NewCondition | 2034886531 | 2026-09-24T18:32:44Z |
| Philips Hue LED-Filament White Standard A60 550lm, E27, 1 St., Warmweiß | Philips Hue | 22,49 € | EUR | InStock | NewCondition | 2034886113 | 2026-09-24T18:32:44Z |
| Philips Hue LED Stehlampe Play Stehleuchte, 135 cm, RGBW | Philips Hue | 149,99 € | EUR | InStock | NewCondition | 2102145994 | 2026-09-24T18:32:44Z |
| Philips Hue LED-Leuchtmittel White Ambiance 1100lm, E27, 1 St. | Philips Hue | 39,99 € | EUR | InStock | NewCondition | 2034886414 | 2026-09-24T18:32:44Z |
| Paulmann LED-Leuchtmittel 3er Set 4,7 W AGL E27 gold, E27, 3 St. | Paulmann | 22,99 € | EUR | InStock | NewCondition | 1119869898 | 2026-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.
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.
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
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.
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.
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.
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.
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.
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
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.