Catalog coverage · onlyhearts
Catalog coverage · onlyhearts
Catalog coverage · onlyhearts.com
Search products from onlyhearts.com and retrieve product details as JSON through StoreRouter’s API. Access prices, images, descriptions, and available variant data, plus enriched attributes for filtering.
Snapshot from . Counts are approximate and refresh about daily.
Catalog
Median price $62 across 945 priced products. Current prices, in USD.
Example product response
Inspect a product from the search example below, then retrieve its details through the API.
Indexed response retrieved . Price and availability reflect this response and may change.

Only Hearts
$49.00In stock
Sizes: S, M, L
This luxe silk makes this bikini is perfectly soft for special occasions. 100% Silk Dry clean only Made in NYC
Source product pageProduct content returned by the lookup API, ready for a product page.
JSON response excerpt
{
"source": "indexed",
"catalogKey": "onlyhearts",
"product": {
"title": "Silk Heritage Hearts Bias Bikini",
"brand": {
"name": "Only Hearts"
},
"productUrl": "https://onlyhearts.com/products/silk-heritage-hearts-bias-bikini",
"currentPrice": 49,
"currency": "USD",
"inStock": true,
"description": "This luxe silk makes this bikini is perfectly soft for special occasions. 100% Silk Dry clean only Made in NYC ",
"primaryImage": {
"url": "https://cdn.shopify.com/s/files/1/0587/7943/5203/files/pinkheart_front.jpg?v=1767807601",
"cdnUrl": "https://cdn.octogen.ai/76a5ab3ab067f3127663b42ba16bd6ed/c15f4bda8565c1881562026e038398ce.webp?request_id=38352889-cf99-41b0-bbf8-a55f76709a07",
"width": 927,
"height": 1408,
"sizeBytes": 36592,
"mimeType": "image/webp"
},
"details": {
"materials": [
"100% Silk"
],
"fit": [],
"dimensions": null,
"patterns": []
}
}
}StoreRouter classification and attributes. Use attribute_handles as search facet values.
JSON response excerpt
{
"source": "indexed",
"catalogKey": "onlyhearts",
"product": {
"enrichment": {
"type": "bikini underwear",
"category_path": [
"Apparel & Accessories",
"Clothing",
"Underwear & Sleepwear",
"Underwear",
"Bikini Underwear"
],
"styles": [
"feminine",
"luxe"
],
"attributes": {
"Fabric": [
"Silk"
],
"Pattern": [
"Hearts"
],
"Care instructions": [
"Dry Clean Only"
],
"Underwear coverage style": [
"Bikini"
]
},
"attribute_handles": {
"fabric": [
"fabric__silk"
],
"pattern": [
"pattern__hearts"
],
"care_instructions": [
"care_instructions__dry_clean_only"
],
"underwear_coverage_style": [
"underwear_coverage_style__bikini"
]
}
}
}
}curl -sS https://api.storerouter.ai/v1/products/lookup \
-H "Authorization: Bearer $OCTOGEN_PLATFORM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://onlyhearts.com/products/silk-heritage-hearts-bias-bikini",
"resolutionMode": "index_only"
}'Selected response fields are shown. API documentation
Developer quickstart
export OCTOGEN_PLATFORM_API_KEY="your-api-key". Requests use Authorization: Bearer; the SDKs read this variable automatically. Keep the key on your server.curl -sS https://api.storerouter.ai/v1/products/search \ -H "Authorization: Bearer $OCTOGEN_PLATFORM_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "catalogs": ["onlyhearts"], "q": "underwear & sleepwear", "limit": 5 }'# Requires Python 3.11+ and uv; install from the public SDK repository:
# git clone https://github.com/octogen-ai/octogen-dev.git
# cd octogen-dev
# uv sync --project sdks/python
# Save this sample as search.py here, then run:
# uv run --project sdks/python python search.py
import asyncio
from octogen_ai_sdk import OctogenClient
async def main() -> None:
async with OctogenClient(base_url="https://api.storerouter.ai/v1") as client:
page = await client.search_products(
catalogs=["onlyhearts"],
q="underwear & sleepwear",
limit=5,
)
for product in page.items:
print(product.title, product.current_price, product.product_url)
asyncio.run(main())// Node.js 20+; install: npm install @octogen-ai/sdk
// Save this sample as search.mjs, then run: node search.mjs
import { OctogenClient } from "@octogen-ai/sdk";
const client = new OctogenClient({ baseUrl: "https://api.storerouter.ai/v1" });
const page = await client.searchProducts({
catalogs: ["onlyhearts"],
q: "underwear & sleepwear",
limit: 5,
});
for (const product of page.items) {
console.log(product.title, product.currentPrice, product.productUrl);
}Indexed snapshot from this search, verified by URL lookup. Selected fields only; prices and availability may have changed since retrieval.
Only Hearts
Only Hearts
Only Hearts
Search finds indexed products by query and filters within this retailer’s catalog.Product URL lookup retrieves one product: index_only uses the index and returns 404 on a miss; auto checks the index before resolving a miss on demand. For a fresh page read where supported, use resolutionMode: "on_demand_only" with onDemandCachePolicy: "refresh". On-demand results may be partial and do not guarantee live price or availability.
Attributes
Each attribute below is a search facet: the bar shows the share of Onlyhearts products that have it, and each value shows the share tagged with that value. A product can have several values, so these can add up to more than 100%.
Gender
gender
Pattern
pattern
Fabric
fabric
Product color
color
Color family
color_family
Neckline
neckline
Sleeve length type
sleeve_length_type
Opacity
opacity_level
Underwear coverage style
underwear_coverage_style
Top length type
top_length_type
Front Closure
front_closure_type
Sustainability Features
sustainability_features
Fit (Tops)
fit_top
| Field | Facet name | Source | Coverage | Values |
|---|---|---|---|---|
| Activewear | is_activewear | Merchant data | 100% | 2 |
| Product color | color | Merchant data | 78% | 63 |
| Color family | color_family | Merchant data | 78% | 12 |
| Age Group | age_groups | StoreRouter enrichment | 100% | 1 |
| Category at depth 0 | category_path.depth_0 | StoreRouter enrichment | 100% | 1 |
| Category at depth 1 | category_path.depth_1 | StoreRouter enrichment | 100% | 3 |
| Category at depth 2 | category_path.depth_2 | StoreRouter enrichment | 100% | 16 |
| Gender | gender | StoreRouter enrichment | 100% | 3 |
| Pattern | pattern | StoreRouter enrichment | 100% | 33 |
| Fabric | fabric | StoreRouter enrichment | 98% | 23 |
| Category at depth 3 | category_path.depth_3 | StoreRouter enrichment | 95% | 26 |
| Category at depth 4 | category_path.depth_4 | StoreRouter enrichment | 75% | 29 |
| General Clothing Features | general_clothing_features | StoreRouter enrichment | 52% | 2 |
| Care instructions | care_instructions | StoreRouter enrichment | 47% | 2 |
| Neckline | neckline | StoreRouter enrichment | 42% | 20 |
| Sleeve length type | sleeve_length_type | StoreRouter enrichment | 39% | 4 |
| Opacity | opacity_level | StoreRouter enrichment | 30% | 3 |
| Underwear coverage style | underwear_coverage_style | StoreRouter enrichment | 20% | 9 |
| Top length type | top_length_type | StoreRouter enrichment | 18% | 5 |
| Front Closure | front_closure_type | StoreRouter enrichment | 17% | 3 |
| Sustainability Features | sustainability_features | StoreRouter enrichment | 16% | 7 |
| Fit (Tops) | fit_top | StoreRouter enrichment | 15% | 4 |
| Graphic Type | graphic_type | StoreRouter enrichment | 14% | 3 |
| Bra style | bra_style | StoreRouter enrichment | 14% | 12 |
| Category at depth 5 | category_path.depth_5 | StoreRouter enrichment | 13% | 6 |
| Fabric Weight | fabric_weight | StoreRouter enrichment | 12% | 2 |
| Bra closure type | bra_closure_type | StoreRouter enrichment | 11% | 3 |
| Bra features | bra_features | StoreRouter enrichment | 11% | 4 |
| Front Closure Length | front_closure_length | StoreRouter enrichment | 10% | 3 |
| Bra strap type | bra_strap_type | StoreRouter enrichment | 10% | 5 |
| Skirt/Dress length type | skirt_dress_length_type | StoreRouter enrichment | 10% | 4 |
| Construction Detail | construction_detail | StoreRouter enrichment | 9% | 6 |
| Nightgown style | nightgown_style | StoreRouter enrichment | 6% | 4 |
| Collar Style | collar_style | StoreRouter enrichment | 6% | 4 |
| Knit Style | knit_style | StoreRouter enrichment | 6% | 5 |
| Bra coverage style | bra_coverage_style | StoreRouter enrichment | 6% | 5 |
| Pants length type | pants_length_type | StoreRouter enrichment | 5% | 6 |
| Embellishments | embellishments | StoreRouter enrichment | 3% | 6 |
| Openwork Detail | openwork_detail | StoreRouter enrichment | 3% | 5 |
| Sleeve Style | sleeve_style | StoreRouter enrichment | 3% | 11 |
| Dress style | dress_style | StoreRouter enrichment | 2% | 9 |
| Bra support level | bra_support_level | StoreRouter enrichment | 2% | 2 |
| Fit | fit_bottoms | StoreRouter enrichment | 2% | 5 |
| Leg Shape | pants_leg_shape | StoreRouter enrichment | 2% | 6 |
| Season | season | StoreRouter enrichment | 2% | 2 |
| Intimates Features | intimates_unique_features | StoreRouter enrichment | 2% | 1 |
| Waist rise | waist_rise | StoreRouter enrichment | 2% | 3 |
| Bottoms Closure | bottoms_closure | StoreRouter enrichment | 1% | 2 |
| Front Opening | placket_type | StoreRouter enrichment | 1% | 1 |
| Outerwear Length | outerwear_length_type | StoreRouter enrichment | 1% | 3 |
| Surface Finish | surface_finish | StoreRouter enrichment | 1% | 3 |
| Dress occasion | occasion_style_dresses | StoreRouter enrichment | 1% | 2 |
| Skirt style | skirt_style | StoreRouter enrichment | <1% | 6 |
| One-piece style | one_piece_style | StoreRouter enrichment | <1% | 3 |
| Insulation Level | insulation_level | StoreRouter enrichment | <1% | 1 |
| Occasion | occasion_general | StoreRouter enrichment | <1% | 1 |
| Material | material | StoreRouter enrichment | <1% | 2 |
| Slit Style | slit_style | StoreRouter enrichment | <1% | 1 |
| Activity Intensity | activity_intensity | StoreRouter enrichment | <1% | 2 |
| Activity Type | activity_type | StoreRouter enrichment | <1% | 4 |
| Bag/Case material | bag_case_material | StoreRouter enrichment | <1% | 2 |
| Carry options | carry_options | StoreRouter enrichment | <1% | 1 |
| Handwear material | handwear_material | StoreRouter enrichment | <1% | 4 |
| Handwear type | handwear_type | StoreRouter enrichment | <1% | 2 |
| Scarf/Shawl style | scarf_shawl_style | StoreRouter enrichment | <1% | 1 |
| Stretch Level | stretch_level | StoreRouter enrichment | <1% | 1 |
| Activewear Features | activewear_unique_features | StoreRouter enrichment | <1% | 1 |
| Bag closure type | bag_closure_type | StoreRouter enrichment | <1% | 1 |
| Outerwear Features | outerwear_unique_features | StoreRouter enrichment | <1% | 1 |
| Performance Features | performance_features | StoreRouter enrichment | <1% | 1 |
| Swim bottom coverage style | swim_bottom_coverage_style | StoreRouter enrichment | <1% | 1 |
| Swim top coverage style | swim_top_coverage_style | StoreRouter enrichment | <1% | 1 |
| Canonical brand name | brand_name | Brand | 99% | 1 |
Data
For agents
Every facet name and value on this page, ready for an agent or a script.
Are you an AI agent? Fetch https://storerouter.ai/llms.txt to learn how to get product data from StoreRouter, and how to make a storefront's products readable by agents.
One API key gives your agent search, product lookup, and similar-item results across every store StoreRouter indexes.
Get an API key