# Bonobos (bonobos.com) product data API

> Search Bonobos products with StoreRouter’s API. Get prices, images, and details as JSON. See coverage and curl, Python, and TypeScript examples.

- Catalog key: `bonobos` (pass in `"catalogs"` to narrow a search to this store)
- Products: 3,249
- Snapshot: 2026-10-14T17:07:06Z (counts are approximate and refreshed about daily)
- Search endpoint: `POST https://api.storerouter.ai/v1/products/search`
- Human page: https://storerouter.ai/catalog-coverage/stores/bonobos
- Get an API key: https://platform.storerouter.ai/auth/organization

## Questions

### What does Bonobos sell?

Almost entirely Apparel & Accessories: 100% of its 3,249 products. Clothing is the largest department with 3,105 products, followed by Accessories (142) and Bags (2). The most common Bonobos categories are Tops (1,722), Pants (701) and Jackets & Coats (430).

### How are Bonobos products categorized?

Into a shared taxonomy 5 levels deep. The first level separates Apparel & Accessories; the second separates departments such as Clothing; 5 levels down, categories are as specific as Blazers (262 products). Every level is a search facet.

### What can I filter Bonobos products by?

62 searchable fields. Well-covered attributes include fabric (98% of products), sleeve length type (63%) and front closure (60%). For fabric, the most common values are Elastane (Spandex / Lycra), Cotton and Polyester; for sleeve length type, the most common values are Long, Short and Sleeveless.

### Is this API provided by Bonobos or StoreRouter?

StoreRouter. One API key gives your app or agent access to Bonobos product data and thousands more stores.

### Can I get Bonobos product prices and stock status?

Yes. Bring pricing and availability into your shopping experience with structured data for selling prices, original prices, currency, and stock status.

### Can I get sizes and variants for Bonobos products?

Yes. Help shoppers find their perfect match with size, color, SKU, and stock details from product lookup.

### How fresh is the data?

StoreRouter continually recrawls product pages to update product details. This page tracks 3,249 Bonobos products, with coverage counts refreshed about daily.

### Where does the data come from?

Straight from bonobos.com. StoreRouter turns product pages into rich, searchable data—organized into consistent categories and attributes so your app can connect shoppers with the right products.

## Example product

### Everyday Shirt

A soft cotton button-down updated with added stretch for flexing literally &amp; figuratively.

Indexed response retrieved 2026-10-15T07:01:27.254Z. Price and availability may change.
Availability: In stock
Sizes: XS / Short, XS / Reg, XS / Long, S / Short, S / Reg, S / Long, M / Short, M / Reg, M / Long, L / Short, L / Reg, L / Long, XL / Short, XL / Reg, XL / Long, XXL / Short, XXL / Reg, XXL / Long

### Product details

Product content returned by the lookup API, ready for a product page.

```json
{
  "source": "indexed",
  "catalogKey": "bonobos",
  "product": {
    "title": "Everyday Shirt",
    "brand": {
      "name": "bonobos"
    },
    "productUrl": "https://bonobos.com/products/stretch-washed-button-down-shirt-purple-turquoise-stripe-0",
    "currentPrice": 39,
    "currency": "USD",
    "inStock": true,
    "description": "A soft cotton button-down updated with added stretch for flexing literally &amp; figuratively.",
    "primaryImage": {
      "url": "https://cdn.shopify.com/s/files/1/0769/3215/3585/files/WOVEN-CASUAL-SHIRT_BUTTON-DOWN-WOVEN-SHIRT_BSH11949SB7696_1_db50e70a-c423-4da4-88ca-3f4c3d0401a3.jpg?v=1786003116",
      "cdnUrl": "https://cdn.octogen.ai/454975821caa4d2fa3f4e0cb1092e161/0d653589f2e717ad2d130508f808a0f9.webp?request_id=8c7c26c4-0490-4a99-9257-d78d1d0dafd1",
      "width": 4000,
      "height": 6000,
      "sizeBytes": 718956,
      "mimeType": "image/webp"
    },
    "details": {
      "materials": [
        "98% Cotton | 2% Elastane Machine wash cold with like colors | Gentle cycle | Only non-chlorine bleach if needed | Tumble dry low | Warm iron if needed Imported"
      ],
      "fit": [
        "Slim",
        "Tailored",
        "Standard"
      ],
      "dimensions": null,
      "patterns": []
    }
  }
}
```

### Enrichment

StoreRouter classification and attributes. Use attribute_handles as search facet values.

```json
{
  "source": "indexed",
  "catalogKey": "bonobos",
  "product": {
    "enrichment": {
      "type": "button-down shirt",
      "category_path": [
        "Apparel & Accessories",
        "Clothing",
        "Tops",
        "Shirts & Blouses"
      ],
      "styles": [
        "smart casual",
        "preppy",
        "classic"
      ],
      "attributes": {
        "Fabric": [
          "Cotton",
          "Elastane (Spandex / Lycra)"
        ],
        "Pattern": [
          "Striped"
        ],
        "Neckline": [
          "Collared"
        ],
        "Occasion": [
          "Casual"
        ],
        "Collar Style": [
          "Button-Down"
        ],
        "Front Closure": [
          "Buttons"
        ],
        "Front Opening": [
          "Visible Buttons"
        ],
        "Sleeve length type": [
          "Long"
        ],
        "Front Closure Length": [
          "Full"
        ],
        "General Clothing Features": [
          "Stretchable"
        ]
      },
      "attribute_handles": {
        "fabric": [
          "fabric__cotton",
          "fabric__elastane"
        ],
        "pattern": [
          "pattern__striped"
        ],
        "neckline": [
          "neckline__collared"
        ],
        "collar_style": [
          "collar_style__button_down"
        ],
        "placket_type": [
          "placket_type__exposed"
        ],
        "occasion_general": [
          "occasion_general__casual"
        ],
        "front_closure_type": [
          "front_closure_type__buttons"
        ],
        "sleeve_length_type": [
          "sleeve_length_type__long"
        ],
        "front_closure_length": [
          "front_closure_length__full"
        ],
        "general_clothing_features": [
          "general_clothing_features__stretchable"
        ]
      }
    }
  }
}
```

## Query this store

```bash
curl -sS https://api.storerouter.ai/v1/products/search \
  -H "Authorization: Bearer $OCTOGEN_PLATFORM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "catalogs": ["bonobos"],
    "q": "tops",
    "limit": 5
  }'
```

Selected matching products on October 15, 2026 (not the complete search response):

- [Everyday Shirt](https://bonobos.com/products/stretch-washed-button-down-shirt-purple-turquoise-stripe-0) — $39.00
- [Everyday Shirt](https://bonobos.com/products/stretch-washed-button-down-shirt-teal-lyons-stripe-0) — $49.00
- [Everyday Shirt](https://bonobos.com/products/stretch-washed-button-down-shirt-olive-forlan-stripe-0) — $39.00
- [Everyday Shirt](https://bonobos.com/products/stretch-washed-button-down-shirt-pine-green-gold-floral-0) — $39.00
- [Tech Short Sleeve Shirt](https://bonobos.com/products/tech-short-sleeve-shirt-red-blue-fish-party-0) — $39.00

## Categories

| Category | Products |
| --- | --- |
| Tops | 1,722 |
| Pants | 701 |
| Jackets & Coats | 430 |
| Shorts | 139 |
| Ties & Pocket Squares | 80 |
| Swimwear | 48 |
| Suits | 33 |
| Underwear & Sleepwear | 32 |
| Belts & Suspenders | 31 |
| Hats & Headwear | 13 |

## Searchable fields

Use `name` and a `value` as a facet: `{"name": "<name>", "values": ["<value>"]}`.

| name | Field | Source | Coverage | Distinct values | Top values (`value` = label, products) |
| --- | --- | --- | --- | --- | --- |
| `is_activewear` | Activewear | Merchant data | 100% | 2 | `false` = False, 2,967; `true` = True, 282 |
| `color` | Product color | Merchant data | 99% | 74 | `navy` = Navy, 654; `blue` = Blue, 423; `white` = White, 365; `brown` = Brown, 311; `black` = Black, 304 |
| `color_family` | Color family | Merchant data | 99% | 12 | `Blue` = Blue, 1,264; `Brown` = Brown, 663; `Green` = Green, 479; `White` = White, 463; `Gray` = Gray, 427 |
| `age_groups` | Age Group | StoreRouter enrichment | 100% | 4 | `adult` = Adult, 3,244; `kids` = Kids, 5; `toddler` = Toddler, 5; `infant` = Infant, 3 |
| `category_path.depth_0` | Category at depth 0 | StoreRouter enrichment | 100% | 1 | `apparel & accessories` = Apparel & Accessories, 3,249 |
| `category_path.depth_1` | Category at depth 1 | StoreRouter enrichment | 100% | 3 | `clothing` = Clothing, 3,105; `accessories` = Accessories, 142; `bags` = Bags, 2 |
| `category_path.depth_2` | Category at depth 2 | StoreRouter enrichment | 100% | 13 | `tops` = Tops, 1,722; `pants` = Pants, 701; `jackets & coats` = Jackets & Coats, 430; `shorts` = Shorts, 139; `ties & pocket squares` = Ties & Pocket Squares, 80 |
| `category_path.depth_3` | Category at depth 3 | StoreRouter enrichment | 100% | 40 | `shirts & blouses` = Shirts & Blouses, 1,196; `jackets` = Jackets, 376; `chinos` = Chinos, 319; `trousers` = Trousers, 273; `knitwear` = Knitwear, 217 |
| `gender` | Gender | StoreRouter enrichment | 100% | 2 | `male` = Male, 3,197; `unisex` = Unisex, 52 |
| `pattern` | Pattern | StoreRouter enrichment | 100% | 41 | `pattern__solid` = Solid, 1,655; `pattern__texture` = Texture, 624; `pattern__plaid` = Plaid, 329; `pattern__striped` = Striped, 283; `pattern__floral` = Floral, 260 |
| `fabric` | Fabric | StoreRouter enrichment | 98% | 38 | `fabric__elastane` = Elastane (Spandex / Lycra), 1,982; `fabric__cotton` = Cotton, 1,971; `fabric__polyester` = Polyester, 579; `fabric__wool` = Wool, 554; `fabric__nylon` = Nylon / Polyamide, 429 |
| `general_clothing_features` | General Clothing Features | StoreRouter enrichment | 64% | 2 | `general_clothing_features__stretchable` = Stretchable, 2,076; `general_clothing_features__wrinkle_resistant` = Wrinkle Resistant, 407 |
| `sleeve_length_type` | Sleeve length type | StoreRouter enrichment | 63% | 3 | `sleeve_length_type__long` = Long, 1,467; `sleeve_length_type__short` = Short, 583; `sleeve_length_type__sleeveless` = Sleeveless, 3 |
| `front_closure_type` | Front Closure | StoreRouter enrichment | 60% | 4 | `front_closure_type__buttons` = Buttons, 1,611; `front_closure_type__none` = None, 189; `front_closure_type__zipper` = Zipper, 142; `front_closure_type__snaps` = Snaps, 7 |
| `neckline` | Neckline | StoreRouter enrichment | 60% | 9 | `neckline__collared` = Collared, 1,657; `neckline__crew` = Crew, 146; `neckline__mock` = Mock Neck, 64; `neckline__v_neck` = V Neck, 46; `neckline__henley` = Henley, 40 |
| `front_closure_length` | Front Closure Length | StoreRouter enrichment | 52% | 5 | `front_closure_length__full` = Full, 1,319; `front_closure_length__none` = None, 180; `front_closure_length__short_placket` = Short Placket, 120; `front_closure_length__quarter` = Quarter, 76; `front_closure_length__half` = Half, 4 |
| `collar_style` | Collar Style | StoreRouter enrichment | 51% | 13 | `collar_style__button_down` = Button-Down, 506; `collar_style__camp_revere` = Camp / Revere, 273; `collar_style__notched_lapel` = Notched Lapel, 272; `collar_style__polo` = Polo, 217; `collar_style__stand_funnel` = Stand / Funnel, 117 |
| `placket_type` | Front Opening | StoreRouter enrichment | 46% | 4 | `placket_type__exposed` = Visible Buttons, 1,478; `placket_type__fly_front` = Covered Zip, 12; `placket_type__concealed` = Hidden Buttons, 7; `placket_type__snap` = Snap Closure, 4 |
| `occasion_general` | Occasion | StoreRouter enrichment | 36% | 4 | `occasion_general__casual` = Casual, 983; `occasion_general__work` = Work, 472; `occasion_general__formal` = Formal, 109; `occasion_general__active` = Active, 24 |
| `graphic_type` | Graphic Type | StoreRouter enrichment | 29% | 5 | `graphic_type__solid_no_print` = Solid / No Print, 918; `graphic_type__character_pop_culture` = Character / Pop Culture, 12; `graphic_type__photo_art` = Photo Print / Art, 11; `graphic_type__logo_embroidery` = Logo Embroidery, 6; `graphic_type__abstract_print` = Abstract Graphic, 1 |
| `category_path.depth_4` | Category at depth 4 | StoreRouter enrichment | 22% | 19 | `blazers` = Blazers, 262; `sweaters` = Sweaters, 182; `bomber jackets` = Bomber Jackets, 38; `cardigans` = Cardigans, 35; `chore & barn jackets` = Chore & Barn Jackets, 33 |
| `care_instructions` | Care instructions | StoreRouter enrichment | 16% | 5 | `care_instructions__dry_clean_only` = Dry Clean Only, 445; `care_instructions__machine_washable` = Machine Washable, 83; `care_instructions__dryer_safe` = Dryer Safe, 76; `care_instructions__tumble_dry` = Tumble Dry, 76; `care_instructions__ironing_instructions` = Ironing Instructions, 56 |
| `sleeve_style` | Sleeve Style | StoreRouter enrichment | 11% | 4 | `sleeve_style__set_in` = Set-In, 332; `sleeve_style__raglan` = Raglan, 7; `sleeve_style__drop_shoulder` = Drop Shoulder, 5; `sleeve_style__balloon` = Balloon, 1 |
| `season` | Season | StoreRouter enrichment | 10% | 4 | `season__cold_weather` = Cold Weather, 189; `season__warm_weather` = Warm Weather, 82; `season__cool_weather` = Cool Weather, 41; `season__all_season` = All-Season, 30 |
| `opacity_level` | Opacity | StoreRouter enrichment | 10% | 1 | `opacity_level__opaque` = Opaque, 323 |
| `sustainability_features` | Sustainability Features | StoreRouter enrichment | 9% | 4 | `sustainability_features__recycled_materials` = Recycled Materials, 223; `sustainability_features__organic_materials` = Organic Materials, 67; `sustainability_features__oeko_tex_standard_100` = OEKO-TEX Standard 100, 9; `sustainability_features__sustainable_sourcing` = Sustainable Sourcing, 9 |
| `outerwear_length_type` | Outerwear Length | StoreRouter enrichment | 8% | 3 | `outerwear_length_type__hip` = Hip Length, 254; `outerwear_length_type__knee` = Knee Length, 4; `outerwear_length_type__mid_thigh` = Mid-Thigh, 4 |
| `knit_style` | Knit Style | StoreRouter enrichment | 7% | 9 | `knit_style__pique` = Piqué, 59; `knit_style__waffle` = Waffle, 37; `knit_style__cable_knit` = Cable Knit, 28; `knit_style__fine_gauge` = Fine Gauge, 24; `knit_style__rib_knit` = Rib Knit, 22 |
| `fit_top` | Fit (Tops) | StoreRouter enrichment | 6% | 4 | `fit_top__tailored` = Tailored, 77; `fit_top__relaxed` = Relaxed, 72; `fit_top__fitted` = Fitted, 54; `fit_top__flowy` = Flowy, 4 |
| `fabric_weight` | Fabric Weight | StoreRouter enrichment | 6% | 2 | `fabric_weight__lightweight` = Lightweight, 188; `fabric_weight__midweight` = Midweight, 18 |
| `denim_fabric` | Denim Fabric | StoreRouter enrichment | 3% | 3 | `denim_fabric__stretch` = Stretch, 110; `denim_fabric__colored` = Colored, 33; `denim_fabric__selvedge_edge` = Selvedge Edge, 6 |
| `denim_wash` | Denim Wash | StoreRouter enrichment | 3% | 7 | `denim_wash__dark` = Dark, 33; `denim_wash__colored` = Colored, 31; `denim_wash__medium` = Medium, 20; `denim_wash__black` = Black, 12; `denim_wash__white` = White / Ecru, 10 |
| `pants_leg_shape` | Leg Shape | StoreRouter enrichment | 3% | 9 | `pants_leg_shape__tapered` = Tapered, 44; `pants_leg_shape__straight` = Straight, 40; `pants_leg_shape__slim` = Slim, 37; `pants_leg_shape__jogger` = Jogger, 12; `pants_leg_shape__cuffed` = Cuffed, 4 |
| `surface_finish` | Surface Finish | StoreRouter enrichment | 3% | 2 | `surface_finish__matte` = Matte, 88; `surface_finish__glossy` = Glossy, 2 |
| `bottoms_closure` | Bottoms Closure | StoreRouter enrichment | 3% | 4 | `bottoms_closure__drawstring` = Drawstring, 50; `bottoms_closure__zip` = Zip Fly, 34; `bottoms_closure__pull_on` = Pull-On, 5; `bottoms_closure__buttons` = Button Fly, 1 |
| `top_length_type` | Top length type | StoreRouter enrichment | 3% | 2 | `top_length_type__hip_length` = Hip Length, 76; `top_length_type__waist_length` = Waist Length, 5 |
| `fit_bottoms` | Fit | StoreRouter enrichment | 2% | 5 | `fit_bottoms__relaxed_boyfriend_fit` = Relaxed / Boyfriend Fit, 26; `fit_bottoms__straight_through_fit` = Straight-Through Fit, 21; `fit_bottoms__tailored_slim_fit` = Tailored Slim Fit, 19; `fit_bottoms__classic_trouser_fit` = Classic Trouser Fit, 10; `fit_bottoms__hip_hugging_skinny_fit` = Hip-Hugging (Skinny Fit), 2 |
| `denim_wash_effects` | Denim Finish Effects | StoreRouter enrichment | 2% | 2 | `denim_wash_effects__clean_none` = Clean / None, 36; `denim_wash_effects__faded_stonewash` = Faded / Stonewash, 24 |
| `activity_type` | Activity Type | StoreRouter enrichment | 2% | 7 | `activity_type__golf` = Golf, 46; `activity_type__ski_snow` = Ski / Snow, 8; `activity_type__hiking_outdoor` = Hiking / Outdoor, 4; `activity_type__cycling` = Cycling, 2; `activity_type__multi_sport` = Multi-Sport, 2 |
| `performance_features` | Performance Features | StoreRouter enrichment | 2% | 5 | `performance_features__four_way_stretch` = Four Way Stretch, 30; `performance_features__moisture_wicking` = Moisture Wicking, 9; `performance_features__water_resistant` = Water Resistant, 9; `performance_features__breathable_design` = Breathable Design, 4; `performance_features__windproof` = Windproof, 2 |
| `lining_material_outerwear` | Lining Material | StoreRouter enrichment | 2% | 8 | `lining_material_outerwear__quilted` = Quilted, 14; `lining_material_outerwear__cotton` = Cotton, 10; `lining_material_outerwear__half_lined` = Half Lined, 10; `lining_material_outerwear__polyester` = Polyester, 8; `lining_material_outerwear__fully_lined` = Fully Lined, 6 |
| `material` | Material | StoreRouter enrichment | 1% | 10 | `material__leather` = Leather, 21; `material__metal` = Metal, 15; `material__latex` = Latex, 10; `material__polypropylene-pp` = Polypropylene (PP), 10; `material__cashmere` = Cashmere, 7 |
| `outerwear_unique_features` | Outerwear Features | StoreRouter enrichment | 1% | 2 | `outerwear_unique_features__insulated` = Insulated, 34; `outerwear_unique_features__double_breasted` = Double Breasted, 10 |
| `construction_detail` | Construction Detail | StoreRouter enrichment | 1% | 2 | `construction_detail__pleated` = Pleated, 41; `construction_detail__draped` = Draped, 6 |
| `closure_type_belts` | Closure Type | StoreRouter enrichment | 1% | 1 | `closure_type_belts__buckle` = Classic Buckle, 31 |
| `insulation_level` | Insulation Level | StoreRouter enrichment | <1% | 2 | `insulation_level__lightweight` = Lightweight, 28; `insulation_level__midweight` = Midweight, 1 |
| `shorts_fit` | Shorts Fit | StoreRouter enrichment | <1% | 5 | `shorts_fit__relaxed` = Relaxed, 10; `shorts_fit__tailored` = Tailored, 7; `shorts_fit__slim` = Slim, 5; `shorts_fit__athletic` = Athletic, 2; `shorts_fit__regular` = Regular, 2 |
| `embellishments` | Embellishments | StoreRouter enrichment | <1% | 3 | `embellishments__embroidery` = Embroidery, 16; `embellishments__studs` = Studs, 4; `embellishments__fringe` = Fringe, 3 |
| `stretch_level` | Stretch Level | StoreRouter enrichment | <1% | 2 | `stretch_level__high` = High, 12; `stretch_level__low` = Low, 7 |
| `denim_hem_style` | Denim Hem Style | StoreRouter enrichment | <1% | 2 | `denim_hem_style__regular` = Regular, 15; `denim_hem_style__cuffed` = Cuffed, 1 |
| `scarf_shawl_style` | Scarf/Shawl style | StoreRouter enrichment | <1% | 1 | `scarf_shawl_style__regular` = Regular, 10 |
| `handwear_features` | Handwear features | StoreRouter enrichment | <1% | 1 | `handwear_features__touchscreen_compatible` = Touchscreen Compatible, 5 |
| `handwear_material` | Handwear material | StoreRouter enrichment | <1% | 2 | `handwear_material__cashmere` = Cashmere, 5; `handwear_material__wool` = Wool, 4 |
| `handwear_type` | Handwear type | StoreRouter enrichment | <1% | 1 | `handwear_type__gloves` = Gloves, 5 |
| `openwork_detail` | Openwork Detail | StoreRouter enrichment | <1% | 2 | `openwork_detail__open_knit` = Open Knit, 4; `openwork_detail__eyelet` = Eyelet, 2 |
| `waist_rise` | Waist rise | StoreRouter enrichment | <1% | 1 | `waist_rise__high` = High, 6 |
| `bag_closure_type` | Bag closure type | StoreRouter enrichment | <1% | 1 | `bag_closure_type__zipper` = Zipper, 2 |
| `pants_length_type` | Pants length type | StoreRouter enrichment | <1% | 1 | `pants_length_type__ankle` = Ankle Length, 2 |
| `size_group` | Size Type | StoreRouter enrichment | <1% | 1 | `size_group__plus` = Plus, 4 |
| `swim_bottom_coverage_style` | Swim bottom coverage style | StoreRouter enrichment | <1% | 1 | `swim_bottom_coverage_style__full` = Full Coverage, 3 |
| `underwear_coverage_style` | Underwear coverage style | StoreRouter enrichment | <1% | 2 | `underwear_coverage_style__boyshort` = Boyshort, 2; `underwear_coverage_style__brief` = Brief, 1 |
| `brand_name` | Canonical brand name | Brand | 100% | 1 | `bonobos` = bonobos, 3,249 |
