
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape otto.de products by search term, category or product URL: prices, old prices, discounts, ratings, delivery, colors, images, EAN, seller, specifications and customer reviews. No login needed.
Scrape otto.de, Germany's second-largest online marketplace, by search term, category or product URL. Each product comes back as one clean row with price, old price, discount, rating, review count, delivery promise, colors, images and key specs. You can also add EAN, seller, the full specifications table and customer reviews. You don't need a login, and a search page of 120 products usually finishes in a few seconds.
kaffeemaschine), or paste otto.de URLs: category pages, search pages (filters you set on the site are kept) or product pages.| Field | What it does |
|---|---|
searchTerms | Words to search on otto.de, one search per term |
startUrls | otto.de category, search or product URLs |
maxItems | Max products per search term or listing URL (default 20) |
sortBy | topseller, price-asc, price-desc, discount, rating, newest (empty = site default) |
minPrice / maxPrice | Price range in euros |
includeDetails | Open each product page for EAN, description, seller, specs, shipping and returns |
includeReviews | Add customer reviews to each product |
maxReviewsPerProduct, reviewSort, reviewRating | How many reviews, in which order, and which star rating |
proxyConfiguration | Proxy settings (datacenter by default) |
{
"searchTerms": ["kaffeemaschine"],
"startUrls": ["https://www.otto.de/haushalt/kaffeemaschinen/"],
"maxItems": 50,
"sortBy": "price-asc",
"minPrice": 50,
"maxPrice": 300,
"includeDetails": true,
"includeReviews": true,
"maxReviewsPerProduct": 20
}
One row per product. The detail fields are filled when Include product page details is on, and reviews is present when Include customer reviews is on.
| Field | Description |
|---|---|
productId, variationId, articleNumber | otto.de identifiers |
title, brand, name | Full title, brand and title without the brand |
url, variantUrl | Product page and the exact color/size variation |
price, oldPrice, discountPercent, onSale, isStartingPrice, installment | Pricing in EUR |
rating, reviewCount, expertReviews | Customer rating and test magazine ratings |
availability, deliveryInfo, deliveryDate | Stock state and delivery promise |
category, highlights, colors, images, imageUrl | Product type, key specs, color variations and images |
sponsored, advertiser, dealText, popular, lowStock, position | Listing context |
ean, description, seller, sellerId, breadcrumbs, specifications, shippingCost, returnDays, detailImages | Product page details |
reviews[] | rating, title, text, author, location, date, verifiedPurchase, helpfulVotes, totalVotes, seller |
searchTerm, sourceUrl, scrapedAt | Where and when the row was scraped |
Example (shortened; the review is a fictional sample in the same shape):
{
"productId": "C1785305182",
"variationId": "1785307058",
"title": "NESCAFÉ® Dolce Gusto® Kapselmaschine KP243B Genio S, 15 Bar, ultra-kompakt, Hochdruck",
"brand": "NESCAFÉ® Dolce Gusto®",
"url": "https://www.otto.de/p/nescafe-dolce-gusto-kapselmaschine-kp243b-genio-s-15-bar-ultra-kompakt-hochdruck-C1785305182/",
"price": 72.9,
"oldPrice": 129.99,
"currency": "EUR",
"discountPercent": 44,
"rating": 4.5,
"reviewCount": 49,
"availability": "AVAILABLE",
"deliveryInfo": "lieferbar - am nächsten Werktag bei dir",
"category": "Kaffeemaschinen",
"imageUrl": "https://i.otto.de/i/otto/6ba74f38-786f-5b82-8100-778b29429fc5?$formatz$",
"highlights": [{"label": "Wassertank", "value": "0,8 l"}, {"label": "Pumpendruck", "value": "15 bar"}],
"popular": true,
"sponsored": false,
"ean": "3045380024335",
"seller": "OTTO",
"sellerId": "1000000",
"breadcrumbs": ["Küche", "Kaffeemaschinen", "Kapselmaschinen"],
"specifications": [{"group": "Farbe & Material", "name": "Farbe", "value": "Anthrazit"}],
"shippingCost": 4.95,
"returnDays": 30,
"reviews": [
{
"rating": 5,
"title": "Kompakt und schnell",
"text": "Macht in einer Minute einen heißen Cappuccino und passt in jede Ecke.",
"author": "Anna M.",
"location": "Hamburg",
"date": "2026-09-20",
"verifiedPurchase": true,
"helpfulVotes": 3
}
],
"scrapedAt": "2026-10-15T00:51:44.615Z"
}
You pay $1.00 per 1,000 products ($0.001 per product row), plus the usual platform usage (compute and proxy traffic), which is small for this actor. For example, 1,000 products from a search cost $1 in product fees plus a few cents of usage. Reviews are included in the product row at no extra product fee. Include product page details loads each product page in the hosted browser. In our tests that added about $0.90 of browser and compute usage per 1,000 products, so 1,000 detailed products cost about $1.90 in total.
Is it legal to scrape otto.de? The actor only reads publicly visible product pages, the same pages any visitor sees. Check that your use of the data respects otto.de's terms and data-protection law, especially for review texts.
Do I need an otto.de account or a proxy? No account is needed. The default datacenter proxy works well. You can switch to residential proxies in the Proxy section.
How many products can I get? otto.de shows 120 products per page and at most about 8,880 products for one search or category. To go further, split a big category into price ranges or sub-categories, or use several search terms.
Why is a field empty? Not every product has every value. Products without customer reviews have no rating, a product that is not on sale has no old price, and EAN, seller and specifications are only filled when product page details are on.
Can I schedule it or use the API? Yes. Save your input as a task and schedule it (for daily price monitoring, for example), or start runs and read the results through the API.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchTermsarrayOptionalSearch terms
Words to search on otto.de, as you would type them in the shop's search box. Each term runs its own paginated search. Examples: "kaffeemaschine", "iphone 15", "sofa grau".
startUrlsarrayOptionalotto.de URLs
otto.de category pages (e.g. https://www.otto.de/haushalt/kaffeemaschinen/), search result pages (https://www.otto.de/suche/...) with any filters you set on the site, and product pages (https://www.otto.de/p/...).
maxItemsintegerOptionaldefault 20Max products per input
Upper limit of products for each search term or listing URL. otto.de shows 120 products per page and at most about 8,880 for one search or category.
Applied to search terms and to search / category URLs.
sortByenumOptionaldefault ""Sort by
Order of the search and category results. Empty keeps the order of the URL (top sellers by default).
minPriceintegerOptionalMinimum price (EUR)
Only products priced at or above this value, in euros.
maxPriceintegerOptionalMaximum price (EUR)
Only products priced at or below this value, in euros.
includeDetailsbooleanOptionaldefault falseInclude product page details
Also open each product page for EAN, full description, seller, specifications table, category breadcrumbs, shipping cost and return days. Slower and uses the hosted browser (billed as browser usage).
includeReviewsbooleanOptionaldefault falseInclude customer reviews
Add the product's customer reviews (rating, title, text, date, verified purchase, helpful votes) to each product row.
maxReviewsPerProductintegerOptionaldefault 20Max reviews per product
Upper limit of reviews added to each product (30 are loaded per request). Reviews are saved inside the product's row, and one row must stay under the platform's 9 MB item limit, so the maximum is 10,000.
reviewSortenumOptionaldefault "relevance"Review order
Which reviews come first.
reviewRatingenumOptionaldefault "all"Only reviews with rating
Only reviews with this star rating.
maxConcurrencyintegerOptionaldefault 8Max parallel requests
How many requests run at the same time. The default is fast and polite.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy servers used for otto.de requests. Datacenter proxies work well for otto.de.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| productId | string | null | otto.de product id |
| title | string | null | |
| url | string | null | |
| price | number | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Product | One otto.de product row: price, old price, discount, rating, delivery, colors, images and highlights; plus EAN, seller, specifications and customer reviews when you turn them on. | $0.001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/otto-scraper').call({
"searchTerms": [
"kaffeemaschine"
],
"startUrls": [],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/otto-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/otto-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Product details plus up to 5 reviews per product.
Price-filtered search sorted from cheapest.
Only the most recent negative reviews per product.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.