Search the product catalog
Searches published products by free-text term, supplier, category, and physical dimensions. Returns a page of product summaries; supply an address to include pricing, availability (with the per-distribution-center breakdown), recommended parts, add-ons, and warranties. after is an opaque cursor from a previous response; do not construct one by hand. Requires a Public REST API token that carries the read:products scope. Create one in the SIBI developer dashboard (developer.sibipro.com) and grant it that scope; tokens issued for the GraphQL API are refused.
GET
/Authorization
AuthorizationBearer token · headerrequiredAPI token from the SIBI developer dashboard (developer.sibipro.com), sent as `Authorization: Bearer <token>`.
Scopes:
read:productsQuery parameters
searchTermstringmin length 1 · max length 200
supplierstringcategoriesstringminWidthnumbermaxWidthnumberminHeightnumbermaxHeightnumberminDepthnumbermaxDepthnumberminLengthnumbermaxLengthnumberfirstintegermin 1 · max 100 · default: 36
afterstringline1stringmin length 1 · max length 100
line2stringmin length 1 · max length 100
citystringmin length 1 · max length 100
stateOrProvincestringmin length 2 · max length 2
postalCodestringmatches ^\d{5}(-\d{4})?$
onlyInStockbooleanResponses
200Search results retrieved successfully
itemsProductSearchItem[]requiredShow propertiesHide properties
Array of
ProductSearchItemskustringrequiredsupplierstringrequiredThe supplier of the product.
namestringrequiredThe product name.
shortDescriptionstringrequiredA compact spec/dimension/material line. May be an empty string when the catalog has none for this product.
descriptionstringrequiredFree-text product description. Completeness varies by supplier — may be empty, a single word, or a full paragraph.
imageUrlsstring[]requiredURLs of the product images. Empty when the catalog has none for this product.
categorystringrequiredThe product category (e.g. "Ranges").
subcategoriesstring[]requiredThe specific subcategories this product falls into. May be empty, and may repeat `category` when the catalog has no finer grouping.
attributesobject[]requiredCatalog attributes relevant to ordering this product. Which attributes a product carries varies by product; empty when it has none.
Show propertiesHide properties
Array of
objectnamestringrequiredThe attribute identifier.
valuestringrequiredThe attribute value.
baseUnitOfMeasurestringrequiredThe unit `priceCents` is denominated in (e.g. "Each", "Sq Ft"). When `unitsOfMeasure` is non-empty, the product cannot be purchased in fractional amounts of this base unit directly — pass one of `unitsOfMeasure`'s `unitOfMeasure` values as `unitOfMeasure` when creating an order. When `unitsOfMeasure` is empty, pass this value instead (or omit `unitOfMeasure` to default to it).
unitsOfMeasureobject[]requiredAlternate purchasable units for this product — e.g. a flooring product priced by the `Sq Ft` that can only be ordered by the `Box` or `Pallet`, each covering a fixed quantity of `baseUnitOfMeasure`. Empty when the product has no alternate units and can be ordered directly in `baseUnitOfMeasure`.
Show propertiesHide properties
Array of
objectunitOfMeasurestringrequiredThe unit to pass as `unitOfMeasure` when creating an order for this product in this unit.
quantityPerBaseUnitnumberrequiredThe number of `baseUnitOfMeasure` contained in each of this unit. Multiply by the requested quantity of this unit to get the total in the base unit.
optionsobject[]requiredThe selectable option values for this product, one entry per value; entries sharing a `key` are alternative values for the same option. Empty when the product has no selectable options. For products with a required option (e.g. PPG tintable paints), one `{ key, value }` pair per option must be included in `products[].options` when creating an order. This list holds each option's standard values; other valid values may exist beyond it (e.g. the full PPG color catalog), and any valid value identifier is accepted at order time.
Show propertiesHide properties
Array of
objectkeystringrequiredThe option identifier. Pass it as `key` in `products[].options` when creating an order.
valuestringrequiredThe value identifier. Pass it as `value` in `products[].options` when creating an order.
namestringrequiredThe display name of the value.
hexstring | nullrequiredCSS hex color of the value, when the value is a color.
dimensionsProductDimensionsrequiredThe product's physical dimensions as the catalog records them, without unit conversion. These are the same values the dimension bound query parameters compare against. Every key is always present; a null value means the catalog has no measurement for that axis.
Show propertiesHide properties
widthnumber | nullrequiredThe product width, in `widthUnit`. Null when the catalog has no width.
widthUnitstring | nullrequiredThe unit of `width`. Null when `width` is null.
heightnumber | nullrequiredThe product height, in `heightUnit`. Null when the catalog has no height.
heightUnitstring | nullrequiredThe unit of `height`. Null when `height` is null.
depthnumber | nullrequiredThe product depth, in `depthUnit`. Null when the catalog has no depth.
depthUnitstring | nullrequiredThe unit of `depth`. Null when `depth` is null.
lengthnumber | nullrequiredThe product length, in `lengthUnit`. Null when the catalog has no length.
lengthUnitstring | nullrequiredThe unit of `length`. Null when `length` is null.
availabilityobject | nullrequiredAvailability at the address supplied on the request. Null when no address was supplied — the key is always present, and null means "not asked for", not "out of stock".
Show propertiesHide properties
statusstringrequiredStock status at the supplied address. `UNKNOWN` means the availability check failed or the distributor reports no data for this product — it is not a claim that the product is out of stock.
Allowed:
IN_STOCKOUT_OF_STOCKUNAVAILABLEUNKNOWNquantityinteger | nullrequiredUnits on hand where the distributor reports a count; null when it does not.
min 0
distributionCentersobject[]requiredPer-distribution-center breakdown of the availability above: every distribution center in the supplier's network for the supplied address that carries this product, with its own stock status and quantity. Distribution centers without a full street address are omitted. The same list `ordering.searchProducts` returns as `availability.distributionCenters`. Empty when the distribution network could not be read.
Show propertiesHide properties
Array of
objectstatusstringrequiredStock status of this product at this distribution center.
Allowed:
IN_STOCKOUT_OF_STOCKUNAVAILABLEUNKNOWNquantityintegerrequiredUnits of this product on hand at this distribution center; 0 when the distributor reports no count.
min 0
distributionCenterobjectrequiredThe distribution center that carries this product.
Show propertiesHide properties
idstringrequiredThe distribution center identifier to pass as `distributionCenterId` when creating an order.
namestringrequiredstoreNumberstring | nullrequiredThe distributor's store number. May not be numeric; null when the distributor has none.
imageUrlstring | nullrequiredURL of the distribution center's logo, if any.
latitudenumberrequiredlongitudenumberrequiredaddressobjectrequiredShow propertiesHide properties
line1stringrequiredline2string | nullrequiredcitystringrequiredstateOrProvincestringrequiredpostalCodestringrequiredpriceCentsinteger | nullrequiredPurchase price in cents for the supplied address. Populated when an address is supplied; null when no address is supplied or when no price is available for this product.
min 0
msrpPriceCentsinteger | nullrequiredThe manufacturer's suggested retail price in cents. Populated when an address is supplied; null when no address is supplied or when the catalog has no MSRP for this product.
min 0
recommendedPartsobject[]requiredRecommended parts for the product. These parts may be included in an add-on like "Install". The same set `GET /products/{sku}` returns as `recommendedParts`. Populated when an address is supplied; empty when no address is supplied or the product has none.
Show propertiesHide properties
Array of
objectskustringrequirednamestringrequiredcategorystringrequiredpriceCentsinteger | nullrequiredPurchase price in cents at the supplied address; null when no price is available.
min 0
addOnsobject[]requiredAn array of add-ons (services and/or accessories) that can be ordered with the product. The same set `GET /products/{sku}` returns as `addOns`. Populated when an address is supplied; empty when no address is supplied or none are available.
Show propertiesHide properties
Array of
objectidstringrequiredSibi identifier for the add-on.
namestringrequiredThe human readable name of the add-on.
priceCentsintegerrequiredThe price of the add-on in cents.
min 0
productsobject[]requiredThe individual products that are included with each add-on. These are the skus that the distributor will reference on their invoices.
Show propertiesHide properties
Array of
objectskustringrequiredThe sku that the distributor will reference on their invoices. For add-ons within the GE shop, these skus will generally have the format of MXXX where XXX is numeric.
namestringrequiredThe human readable name of the product.
categorystringrequiredThe broad category this product falls into.
priceCentsinteger | nullrequiredThe price of the product in cents; null when no price is available.
min 0
warrantiesobject[]requiredWarranty products that can be attached to this product when creating an order, matched by the product's brand, category, and subcategories and limited to the shops visible to the caller. Populated when an address is supplied; empty when no address is supplied or none are available.
Show propertiesHide properties
Array of
objectskustringrequiredThe warranty product SKU to pass as `warrantySku` when creating an order.
namestringrequiredThe human readable name of the warranty.
descriptionstring | nullrequiredA short description of the coverage; null when the catalog has none.
priceCentsinteger | nullrequiredThe price of the warranty in cents at the supplied address; null when no price is available.
min 0
nextstring | nullrequiredOpaque cursor for the next page, or null when there are no more results.
400Bad request - Invalid input data
codestringrequiredError code indicating the type of error
messagestringrequiredHuman-readable error message explaining what went wrong
detailsobject[]Detailed validation errors when applicable
Show propertiesHide properties
Array of
objectfieldstringrequirederrorstringrequired401Unauthorized - Missing or invalid authentication
codestringrequiredError code indicating the type of error
messagestringrequiredHuman-readable error message explaining what went wrong
detailsobject[]Detailed validation errors when applicable
Show propertiesHide properties
Array of
objectfieldstringrequirederrorstringrequired403Forbidden - the token was minted for the other environment, is not a Public REST API token, or does not carry the scope this operation requires
codestringrequiredError code indicating the type of error
messagestringrequiredHuman-readable error message explaining what went wrong
detailsobject[]Detailed validation errors when applicable
Show propertiesHide properties
Array of
objectfieldstringrequirederrorstringrequired500Internal server error
codestringrequiredError code indicating the type of error
messagestringrequiredHuman-readable error message explaining what went wrong
detailsobject[]Detailed validation errors when applicable
Show propertiesHide properties
Array of
objectfieldstringrequirederrorstringrequired503Service unavailable - the token-exchange service could not be reached (AUTH_UNAVAILABLE) or supplier visibility could not be resolved (SUPPLIER_VALIDATION_UNAVAILABLE); retry the request
codestringrequiredError code indicating the type of error
messagestringrequiredHuman-readable error message explaining what went wrong
detailsobject[]Detailed validation errors when applicable
Show propertiesHide properties
Array of
objectfieldstringrequirederrorstringrequiredRequest
curl -X GET "https://api.sibipro.com/products/" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("https://api.sibipro.com/products/", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});Response
{
"items": [
{
"sku": "string",
"supplier": "ge",
"name": "string",
"shortDescription": "string",
"description": "string",
"imageUrls": [
"string"
],
"category": "string",
"subcategories": [
"string"
],
"attributes": [
{
"name": "sheen",
"value": "Satin"
}
],
"baseUnitOfMeasure": "Each",
"unitsOfMeasure": [
{
"unitOfMeasure": "Box",
"quantityPerBaseUnit": 23.77
}
],
"options": [
{
"key": "ppg-paint-color",
"value": "PPG1025-3",
"name": "Whiskers",
"hex": "#C9C7BE"
}
],
"dimensions": {
"width": 0,
"widthUnit": "in",
"height": 0,
"heightUnit": "in",
"depth": 0,
"depthUnit": "in",
"length": 0,
"lengthUnit": "in"
},
"availability": {
"status": "IN_STOCK",
"quantity": 0,
"distributionCenters": [
{
"status": "IN_STOCK",
"quantity": 0,
"distributionCenter": {
"id": "ge-dc-phoenix",
"name": "GE Appliances Phoenix",
"storeNumber": "string",
"imageUrl": "string",
"latitude": 0,
"longitude": 0,
"address": {
"line1": "string",
"line2": "string",
"city": "string",
"stateOrProvince": "string",
"postalCode": "string"
}
}
}
]
},
"priceCents": 0,
"msrpPriceCents": 0,
"recommendedParts": [
{
"sku": "M236",
"name": "Supply Gas Range Flex",
"category": "Parts",
"priceCents": 0
}
],
"addOns": [
{
"id": "install",
"name": "Install",
"priceCents": 0,
"products": [
{
"sku": "M001",
"name": "Basic Install",
"category": "Install & Supply Services",
"priceCents": 0
}
]
}
],
"warranties": [
{
"sku": "W5YR-APPL",
"name": "5 Year Extended Warranty",
"description": "Covers parts and labor for 5 years",
"priceCents": 0
}
]
}
],
"next": "string"
}{
"code": "string",
"message": "The request contains invalid parameters",
"details": [
{
"field": "customer.email",
"error": "Invalid email"
},
{
"field": "address.postalCode",
"error": "Invalid"
}
]
}{
"code": "string",
"message": "The request contains invalid parameters",
"details": [
{
"field": "customer.email",
"error": "Invalid email"
},
{
"field": "address.postalCode",
"error": "Invalid"
}
]
}{
"code": "string",
"message": "The request contains invalid parameters",
"details": [
{
"field": "customer.email",
"error": "Invalid email"
},
{
"field": "address.postalCode",
"error": "Invalid"
}
]
}{
"code": "string",
"message": "The request contains invalid parameters",
"details": [
{
"field": "customer.email",
"error": "Invalid email"
},
{
"field": "address.postalCode",
"error": "Invalid"
}
]
}{
"code": "string",
"message": "The request contains invalid parameters",
"details": [
{
"field": "customer.email",
"error": "Invalid email"
},
{
"field": "address.postalCode",
"error": "Invalid"
}
]
}