OTTO.de Scraper avatar

OTTO.de Scraper

Pricing

from $1.38 / 1,000 products

Go to Apify Store
OTTO.de Scraper

OTTO.de Scraper

Delivers structured OTTO.de product, product-detail, and review records, queried by search term or category/product URL, with optional product details and per-review records.

Pricing

from $1.38 / 1,000 products

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

OTTO.de Scraper creates a structured dataset of OTTO.de product and review records collected from search queries and category, search, or product URLs. Each dataset item can include the product name, brand, price, suggested price, discount label, rating, review count, availability, category, and identifiers, or one customer review with its rating, title, text, reviewer, and review date. Query the source using a search term or URL with optional filters, control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or XML.

Dataset at a glance

PropertyValue
Sourceotto.de
Record unitOne product, product detail, or customer review
Input methodsSearch queries, start URLs, optional filters
Main identifiersproductId, variationId, articleNumber, url
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML
Update modelFresh records per Actor run
PricingPay per event, from $1.50 per 1,000 events

Coverage and available records

The Actor returns three record types:

  • product — product listing records from search or category pages.
  • product-details — fuller product records when includeProductDetails is enabled, adding description, identifiers, selected size, stock, and shipping.
  • product-review — one dataset row per customer review when includeReviews is enabled.

The Actor supports a wide set of OTTO filters including brand, color, size, shoe size (EU/UK/US), target group, promotion, minimum discount percent, price range, rating, material, seller, season, style, and additional custom filters via additionalFilters. Results can be sorted with sortBy.

Data dictionary

Product and product-detail fields:

FieldTypeNullableDescriptionExample
recordTypestringNoproduct or product-detailsproduct
imageUrlstringNoProduct imagehttps://i.otto.de/...
namestringNoProduct nameNike Air Max 270
brandstringYesBrand nameNike
pricenumberNoCurrent price in EUR129.99
currencystringYesCurrency codeEUR
suggestedPricenumberYesList/suggested price149.99
discountLabelstringYesDiscount label-13%
ratingnumberYesAverage rating4.6
reviewCountintegerYesNumber of reviews128
availabilitystringYesAvailability statusLieferbar
colorstringYesColorschwarz
categorystringYesCategory nameSneaker
urlstringNoProduct page URLhttps://www.otto.de/...
productIdstringNoOTTO product identifier12345678
variationIdstringYesVariation identifier87654321
articleNumberstringYesArticle numberABC123
detailsIncludedbooleanYesWhether details were fetchedtrue
descriptionstringYesProduct description (details)—
gtinstringYesGTIN (details)—
selectedSizestringYesSelected size (details)42
inStockbooleanYesStock status (details)true
shippingPricenumberYesShipping price (details)3.95

Review fields:

FieldTypeNullableDescriptionExample
recordTypestringNoproduct-reviewproduct-review
productNamestringYesReviewed product nameNike Air Max 270
ratingnumberYesReview rating5
titlestringYesReview titleToller Schuh
textstringYesReview body—
verifiedPurchasebooleanYesVerified purchase flagtrue
reviewerstringYesReviewer nameAnna
locationstringYesReviewer locationBerlin
reviewedAtstringYesReview date2025-03-14
variantSizestringYesReviewed variant size42
variantColorstringYesReviewed variant colorschwarz
sellerstringYesSeller nameOTTO
helpfulVotesintegerYesHelpful votes12
helpfulVotesTotalintegerYesTotal helpful votes15
productUrlstringYesReviewed product URLhttps://www.otto.de/...
reviewIdstringYesReview identifier—
productIdstringYesProduct identifier12345678

Example dataset record

{
"recordType": "product",
"imageUrl": "https://i.otto.de/i/otto/12345678",
"name": "Nike Air Max 270",
"brand": "Nike",
"price": 129.99,
"currency": "EUR",
"suggestedPrice": 149.99,
"discountLabel": "-13%",
"rating": 4.6,
"reviewCount": 128,
"category": "Sneaker",
"url": "https://www.otto.de/p/nike-air-max-270-12345678",
"productId": "12345678",
"variationId": "87654321"
}

The record above was produced by the input in the next section: search query shoes with product details and reviews enabled.

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
searchQueriesarrayNo—Search termsKeywords to search
startUrlsarrayNo—OTTO.de URLsCategory, search, filtered, or product URLs
sortBystringNotopsellertopseller, preis-aufsteigend, preis-absteigend, hoechste-reduzierung, neuheiten, bewertungResult sort order
brandsarrayNo—Brand slugsBrand filter
colorsarrayNo—Color slugsColor filter
sizesarrayNo—Size slugsClothing size filter
shoeSizesEu / shoeSizesUk / shoeSizesUsarrayNo—Size slugsShoe size filters
targetGroupsarrayNo—Audience slugsTarget group filter
promotionsarrayNo—Promotion slugsPromotion filter
minDiscountPercentintegerNo—0–90Discount filter
reducedOnlybooleanNofalsetrue / falseReduced items only
minPrice / maxPriceintegerNo—EURPrice range filter
minRatingstringNo—5-sterne, ab-4-sternen, ab-3-sternen, ab-2-sternen, ab-1-sternRating filter
materials, sellers, seasons, styles, soleProfiles, sustainability, pronations, features, covers, surfaces, upholstery, rooms, services, seatCounts, dimensionsarrayNo—Filter slugsAdditional OTTO filters
additionalFiltersobjectNo{}Filter id → slug(s)Custom filters
maxItemsintegerNo200 = unlimitedMaximum products (reviews excluded)
includeProductDetailsbooleanNofalsetrue / falseFetch product details
includeReviewsbooleanNofalsetrue / falseStore each review as its own row
maxReviewsPerProductintegerNo00 = allCap reviews per product
proxyConfigurationobjectNoResidentialApify proxy settingsProxy configuration

Minimal request:

{
"searchQueries": ["shoes"],
"maxItems": 20
}

Advanced request:

{
"searchQueries": ["shoes"],
"sortBy": "topseller",
"brands": ["nike"],
"minDiscountPercent": 20,
"minPrice": 20,
"maxPrice": 150,
"maxItems": 100,
"includeProductDetails": true,
"includeReviews": true,
"maxReviewsPerProduct": 10
}

Retrieve the data through the API

  1. Start the Actor with a JSON input containing searchQueries and/or startUrls.
  2. Wait for the run to finish.
  3. Read records from the run's default dataset.
  4. Paginate or export the dataset.
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("datascrapers/otto-de-scraper").call(
run_input={
"searchQueries": ["shoes"],
"maxItems": 20,
"includeProductDetails": True,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["recordType"], item.get("name"), item.get("price"))

Apify's generated API tab documents the equivalent calls for other languages.

Data quality and record handling

  • Completeness — detail fields (description, identifiers, sizes, shipping) are conditional on includeProductDetails; review fields are conditional on includeReviews.
  • Source changes — prices, availability, and discounts reflect the response at scrape time.
  • Deduplication — the Actor does not deduplicate across runs; use productId (and variationId) as the stable key.
  • Retry/error behavior — products or reviews that cannot be resolved are skipped; the run continues.
  • Normalization — prices are numbers in EUR; ratings are numeric.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL/SupabaseDataset API or webhook consumerProduct and price history
Google SheetsApify integrationCompetitive price tracking
S3/cloud storageScheduled export or integrationCatalog snapshots

Pricing and cost examples

Billing is pay per event: each record pushed is one charge, and each event type is priced the same. Platform compute is included in the actor usage fee.

EventWhat countsPrice
productProduct listing record$1.50 / 1,000
product-detailsProduct detail record$1.50 / 1,000
product-reviewCustomer review record$1.50 / 1,000
RecordsEstimated base cost
1,000$1.50
10,000$15.00
100,000$150.00

Estimates depend on the verified pricing model and which options you enable.

Limitations and responsible data use

  • Only publicly accessible OTTO.de product and review data is returned.
  • Prices, availability, and discounts change frequently and reflect the moment of collection.
  • Fields may be missing or conditional depending on the product and options enabled.
  • No historical snapshots are stored unless you keep them yourself.
  • You are responsible for complying with OTTO's terms and applicable laws.

Dataset questions

What does one dataset item represent?

One product, product detail, or customer review record, depending on the options enabled.

Which field should I use as a unique identifier?

Use productId for products and reviewId for reviews.

Are fields nullable or conditional?

Yes. Detail fields are conditional on includeProductDetails, and review fields are conditional on includeReviews.

Can I retrieve the records as CSV or JSON?

Yes. Export the default dataset as JSON, CSV, Excel, or XML, or read it through the Apify Dataset API.

How do I paginate large datasets?

Set maxItems to cap products, or paginate the dataset through the Dataset API.

What counts as a billable result?

Each product, product-detail, or review record pushed to the dataset is one event charge.

  • Zalando Scraper — German fashion product records for the same apparel market.
  • Zara Scraper — fashion product records that join with OTTO for cross-retailer pricing.
  • Nike Scraper — brand product records for footwear and apparel analysis.
  • Amazon Scraper — general merchandise records for broader price benchmarking.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.