PetSmart APIpetsmart.com ↗
Access PetSmart product search, category browsing, product details, customer reviews, store locations, and pet breed taxonomy via a single REST API.
What is the PetSmart API?
The PetSmart API covers 6 endpoints that expose product catalog data, customer reviews, store locations, and pet breed taxonomy from petsmart.com. Use search_products to query the full catalog by keyword, browse_category to navigate PetSmart's hierarchical category tree, or find_stores to retrieve nearby store locations with address, hours, and service details — all returning structured JSON.
curl -X GET 'https://api.parse.bot/scraper/db75a47a-d919-4bb9-8d23-6cb0ddceefd9/search_products?page=0&limit=5&query=dog+food' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace petsmart-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""PetSmart SDK — search products, read reviews, find stores, explore breeds."""
from parse_apis.petsmart_api import PetSmart, ProductNotFound
client = PetSmart()
# Search for dog food products — limit caps total items fetched.
for product in client.products.search(query="dog food", limit=3):
print(product.name, product.brand, product.price.formatted.primary, f"{product.rating}★")
# Drill into one product's reviews via the sub-resource.
product = client.products.search(query="sensitive skin dog food", limit=1).first()
if product:
for review in product.reviews.list(limit=3):
print(review.title, review.rating, review.author)
# Fetch a product by ID and handle the not-found case.
try:
detail = client.products.get(id="5252900")
print(detail.name, detail.review_count, detail.categories)
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
# Find nearby stores.
for store in client.stores.find(latitude=37.6756, longitude=-97.3944, radius=30, limit=2):
print(store.info.name, store.info.city, store.info.state, f"{store.distance} miles")
# Get the full pet taxonomy.
taxonomy = client.taxonomies.get()
print(f"Breeds: {len(taxonomy.breeds)}, Colors: {len(taxonomy.colors)}")
for breed in taxonomy.breeds[:3]:
print(breed.name, breed.species, breed.size)
print("exercised: products.search / product.reviews.list / products.get / stores.find / taxonomies.get")
Full-text search across PetSmart's product catalog. Results are sorted by best sellers. Paginates via zero-based page number; each page returns up to `limit` items. The total field reports matching products across all pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-indexed) |
| limit | integer | Results per page (max 50) |
| queryrequired | string | Search keyword (e.g. 'dog food', 'cat toy') |
{
"type": "object",
"fields": {
"total": "integer total matching products",
"products": "array of product objects with id, name, brand, price, images, bvAverageRating, bvReviewCount, custom_category_names"
},
"sample": {
"data": {
"total": 2465,
"products": [
{
"id": 5252900,
"name": "Purina Pro Plan Sensitive Skin & Stomach Adult Dry Dog Food",
"brand": "Purina Pro Plan",
"price": {
"number": 77.49,
"formatted": {
"primary": "$20.68-$94.99"
},
"displayType": "range"
},
"images": {
"large": "https://s7d2.scene7.com/is/image/PetSmart/5252900?$sclp-prd-main_large$",
"small": "https://s7d2.scene7.com/is/image/PetSmart/5252900?$sclp-prd-main_small$"
},
"bvReviewCount": 8478,
"bvAverageRating": 4.5,
"masterProductID": 36648,
"custom_category_names": [
"Dog",
"Dog > Food",
"Dog > Food > Dry Food"
]
}
]
},
"status": "success"
}
}About the PetSmart API
Product Search and Category Browsing
The search_products endpoint accepts a query string and returns paginated results (0-indexed page, configurable limit) from PetSmart's catalog. Each product object includes id, name, brand, price (with number, formatted, and displayType), image URLs, bvAverageRating, bvReviewCount, and custom_category_names. The browse_category endpoint works similarly but takes a category string that must match PetSmart's taxonomy exactly, using > as the hierarchy separator — for example, 'Dog > Food > Dry Food'. Categories that don't match the taxonomy exactly return zero results.
Product Details and Reviews
get_product_details accepts a product_id string and returns the full record for that item: a long_description in HTML, images with both large and small URLs, masterProductID (used internally for review resolution), and the complete custom_category_names array. get_product_reviews takes the same product_id, resolves the BazaarVoice identifier automatically, and returns a Results array containing Id, Rating, Title, ReviewText, UserNickname, and SubmissionTime per review, plus a TotalResults count and an Includes object with related product and author data. Both offset and limit control pagination.
Store Finder and Pet Taxonomy
find_stores requires latitude and longitude coordinates and an optional radius in miles. It returns a stores array sorted by distance, with each entry including DistanceToStoreFromOrigin, store name, phone number, address fields, and a StoreServices list. get_pet_taxonomy takes no inputs and returns two arrays: breeds (each with BreedId, Description, SpeciesName, Size, IsAggressive, and IsBreathingChallenged) and colors (each with ColorId, Description, and IsActive). This taxonomy data is useful for filtering product searches or building breed-aware tooling.
The PetSmart API is a managed, monitored endpoint for petsmart.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when petsmart.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official petsmart.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a pet food comparison tool using search_products to surface price and rating data across brands.
- Populate a category navigation tree from browse_category using the ' > ' hierarchy to mirror PetSmart's taxonomy.
- Aggregate customer sentiment by pulling Rating, ReviewText, and SubmissionTime from get_product_reviews.
- Locate the nearest PetSmart stores for a given address by passing latitude/longitude to find_stores.
- Retrieve store service availability (grooming, vet, training) from the StoreServices field in find_stores results.
- Use get_pet_taxonomy breed attributes like IsAggressive or IsBreathingChallenged to filter product recommendations for specific dog breeds.
- Track price changes on a product over time by polling get_product_details for the formatted price field.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.