Bowmark AIdocs

OTTO

German online marketplace — fashion, furniture, electronics and more.

Domain: otto.de

Also known as: OTTO, otto.de, Otto Group

Call it directly

bowmark.providers.otto.getProduct(url: string): Promise<ottoProduct>
bowmark.providers.otto.search(query: ottoSearchQuery): Promise<ottoSearchResult[]>

Functions

FunctionWhat it does
getProductReads one OTTO product page — price (current + UVP/discount when on sale), availability, delivery-time estimate, images, brand, rating and size/color variant options.
searchSearches OTTO's catalog for a free-text keyword the way the site's own search bar does, across its whole marketplace (OTTO's own catalog and third-party sellers) and returns matching rows:…

Types

interface ottoProduct {
  productId: string;
  variationId: string | null;
  sku: string;
  gtin13: string | null;
  name: string;
  description: string;
  brand: string;
  url: string;
  price: number;
  originalPrice: number | null;
  discountPercent: number | null;
  currency: string;
  availability: string | null;
  soldOut: boolean;
  delivery: { text: string; minDays: number | null; maxDays: number | null } | null;
  rating: { value: number; count: number } | null;
  images: string[];
  sizes: { label: string; selected: boolean; available: boolean }[];
  colors: { label: string; selected: boolean; available: boolean; image: string | null }[];
}
interface ottoSearchPrice {
  currentAmount: number;
  currentDisplay: string;
  suggestedRetailAmount: number | null;
  suggestedRetailDisplay: string | null;
  comparativeAmount: number | null;
  comparativeDisplay: string | null;
  onSale: boolean;
  isStartingPrice: boolean;
}
interface ottoSearchResult {
  productId: string;
  variationId: string;
  articleNumber: string;
  url: string;
  name: string;
  brand: string;
  price: ottoSearchPrice;
  availability: { state: string; detail: string };
  thumbnail: string | null;
  rating: { value: number; count: number } | null;
  matchType: string;
  totalCount: number;
}
interface ottoSearchQuery {
  query: string;
  limit?: number;
}