The record body, keyed by item_type. search_result: listingId, title, url, shopId, shopName, shopUrl, price, originalPrice, currency (ISO, from JSON-LD), currencySymbol (as rendered), discount, shopRating, shopReviewCount, imageUrl, imageAlt, isAd, freeShipping, badges, isBestseller, isStarSeller, positionOnPage. NOTE shopRating/shopReviewCount are named for what Etsy actually puts on a grid card: the stars describe the SELLER, not the item - a card for listing 4306368113 shows 4.72 and 9,023 while that listing's own page shows 4.7 and 2,282 and its shop shows exactly 9,023. For per-item ratings use product_detail. shop_result: shopName, shopTitle, tagline, itemCount, shopUrl, avatarUrl, previewImages. shop_profile: shopName, location, totalSales, onEtsySince, rating plus ratingAllTime and ratingRecencyWeighted (Etsy publishes both and they differ), reviewCount, announcement, members, faqs, logoUrl, bannerUrl, isStarSeller. product_detail: title, description, categoryPath, breadcrumbs, price/priceMin/priceMax/originalPrice/currency, availability, quantityAvailable, lowStockRemaining, peopleWithItemInCart, shipsFrom, rating, reviewCount, images, variations, highlights, reviewFeatureTags, reviewSentiment, shopTotalSales, shopTenure, listingBadge, sellerTags (always null - Etsy no longer publishes seller SEO tags on listing pages). review: reviewId, rating, text, date, buyerName, buyerProfileUrl, photos (buyer uploads), sellerResponse, purchasedListingId/Url/Title. error: _error (challenge_wall, not_found, fetch_failed, unsupported_url, unresolvable_listing, no_results, run_failed), _errorDetail, _input.