PetSmart API endpoint
Returns one product's full public detail by SKU: everything /petsmart/search returns plus the full description (as text and as PetSmart's HTML), short description, manufacturer name and SKU, every UPC, all category paths, the size and flavor variation options, current promotions, shipping dimensions and every other catalog attribute PetSmart publishes (life stage, food form, flavor, health considerations and so on) under attributes. An unknown SKU returns a 404. Pass country=ca for the Canadian catalog.
/petsmart/productIt carries everything /petsmart/search returns plus the full description (as text) and description_html, short_description, manufacturer_name, manufacturer_sku, every UPC in upcs, all category_paths, the size and flavor variation_options, current promotions, shipping package dimensions, and every other catalog attribute PetSmart publishes (life stage, food form, flavor, health considerations and so on) under attributes, as lists of strings. Internal bookkeeping fields are not exposed.
Query parameters: country (optional, us default or ca; a SKU is looked up in that country's catalog), id (required, the SKU from /petsmart/search). An unknown SKU returns a 404.
| Field | In the sample | Value in the sample |
|---|---|---|
| id | Has a value | |
| master_product_id | Has a value | |
| name | Has a value | “Purina Pro Plan Sensitive Skin and Stomach Dry Dog Food Adu…” |
| brand | Has a value | “Purina Pro Plan” |
| price.current | Has a value | 77.99 |
| price.display | Has a value | “$20.68-$94.99” |
| price.strikethrough_display | Has a value | “$21.99-$94.99” |
| price.display_type | Has a value | “range” |
| price.list_range | Has a value | 2 entries |
| price.sale_range | Has a value | 2 entries |
| images.large | Has a value | s7d2.scene7.com |
| images.small | Has a value | s7d2.scene7.com |
| images.alternate | Has a value | 6 entries |
| rating | Has a value | 4.5 |
| review_count | Has a value | 9,248 |
| primary_category_id | Has a value | |
| primary_category_name | Has a value | “Dry Food” |
| pets | Has a value | 1 entry |
| size.solidSize | Has a value | “30 Lb” |
| variations | Has a value | 2 entries |
| upc | Has a value | |
| available | Has a value | true |
| in_stock_in_store | Has a value | true |
| in_store_only | Has a value | false |
| online_only | Has a value | false |
| pickup_eligible | Has a value | true |
| autoship_eligible | Has a value | true |
| short_description | Has a value | “PP D SSS ADLT SLM & RICE 30 LB 23” |
| description | Has a value | 5,229 characters |
| description_html | Has a value | 5,627 characters |
| manufacturer_name | Has a value | “NESTLE PURINA DRY” |
| manufacturer_sku | Has a value | |
| upcs | Has a value | 1 entry |
| category_paths | Has a value | 25 entries |
| variation_options | Has a value | 4 entries |
| promotions | Has a value | 5 entries |
| package.height | Has a value | |
| package.length | Has a value | 5 |
| package.width | Has a value | |
| package.weight | Has a value | 30.4 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| country | string | No | Optional catalog: us (default) or ca for the Canadian store, which has its own products (about 9,000), categories, filters and prices. Allowed values: us, ca. | us | |
| id | integer | Yes | Product SKU, from /petsmart/search's id field. | 5252900 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/petsmart/product?country=us&id=5252900" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"country": "us",
"id": 5252900,
"master_product_id": 36648,
"name": "Purina Pro Plan Sensitive Skin and Stomach Dry Dog Food",
"brand": "Purina Pro Plan",
"price": {
"current": 77.99,
"display": "$20.68-$94.99",
"display_type": "range"
},
"description": "Description: Nurture your dog's sensitive skin and stomach...",
"manufacturer_name": "NESTLE PURINA DRY",
"upcs": [
"038100175526"
],
"category_paths": [
"Dog",
"Dog > Food",
"Dog > Food > Dry Food"
],
"variation_options": [
{
"type": "Size",
"value": "4 Lb"
},
{
"type": "Size",
"value": "30 Lb"
}
],
"promotions": [
{
"text": "Spend $40 on dog food, get $15 off"
}
],
"attributes": {
"dogLifestages": [
"Adult"
],
"foodForms": [
"Bags"
],
"flavor.value": [
"Salmon & Rice"
]
}
}
}Request schema
No body schema
Response schema
#/definitions/petsmart.productResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | petsmart.ProductDetail | No | ||||
| data.attributes | object | No | ||||
| data.autoship_eligible | boolean | No | ||||
| data.available | boolean | No | ||||
| data.brand | string | No | ||||
| data.category_paths | array | No | ||||
| data.description | string | No | ||||
| data.description_html | string | No | ||||
| data.id | integer | No | ID is the SKU; /petsmart/product and /petsmart/product/inventory take it. | |||
| data.images | petsmart.Images | No | ||||
| data.images.alternate | array | No | ||||
| data.images.large | string | No | ||||
| data.images.small | string | No | ||||
| data.in_stock_in_store | boolean | No | ||||
| data.in_store_only | boolean | No | ||||
| data.manufacturer_name | string | No | ||||
| data.manufacturer_sku | string | No | ||||
| data.master_product_id | integer | No | MasterProductID groups the size and flavor variations of one product. | |||
| data.name | string | No | ||||
| data.online_only | boolean | No | ||||
| data.package | petsmart.PackageDimensions | No | ||||
| data.package.height | number | No | ||||
| data.package.length | number | No | ||||
| data.package.weight | number | No | ||||
| data.package.width | number | No | ||||
| data.pets | array | No | ||||
| data.pickup_eligible | boolean | No | ||||
| data.price | petsmart.Price | No | ||||
| data.price.current | number | No | ||||
| data.price.display | string | No | Display is PetSmart's own formatted price text (for example "$20.68-$94.99"). | |||
| data.price.display_type | string | No | DisplayType is "single" or "range". | |||
| data.price.list | number | No | List is the undiscounted price when the product is on sale. | |||
| data.price.list_range | array | No | ||||
| data.price.sale_range | array | No | ||||
| data.price.strikethrough_display | string | No | ||||
| data.primary_category_id | string | No | ||||
| data.primary_category_name | string | No | ||||
| data.promotions | array | No | ||||
| data.promotions[].text | string | No | ||||
| data.rating | number | No | ||||
| data.review_count | integer | No | ||||
| data.short_description | string | No | ||||
| data.size | object | No | Size is the size attribute (for example solidSize: "30 Lb"). | |||
| data.upc | string | No | ||||
| data.upcs | array | No | ||||
| data.variation_options | array | No | ||||
| data.variation_options[].type | string | No | ||||
| data.variation_options[].value | string | No | ||||
| data.variations | array | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/petsmart/product?country=us&id=5252900" \
-H "x-api-key: $CRAWLORA_API_KEY"