Petco APIpetco.com ↗
Search Petco's product catalog, retrieve product details and reviews, find nearby stores, and get current deals via 7 structured API endpoints.
What is the Petco API?
The Petco API provides 7 endpoints covering product search, category browsing, full product details, customer reviews, autocomplete suggestions, store locations, and current deals from petco.com. The get_product_details endpoint returns pricing variants, repeat-delivery pricing, and size/flavor options in a single call, while get_store_locator returns up to 5 nearby stores with operating hours and BOPUS availability by ZIP code.
curl -X GET 'https://api.parse.bot/scraper/dd564857-acee-4c20-9670-1603bccc68f2/search_products?page=1&limit=5&query=dog+food&sort_by=price' \ -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 petco-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.
"""
Petco API - Search products, browse categories, get details and reviews, find stores.
Get your API key from: https://parse.bot/settings
"""
from parse_apis.petco_api import Petco, Product, ProductSummary, Review, Store, Suggestion, Variant
petco = Petco(api_key="YOUR_API_KEY")
# Search for dog food products
for product in petco.productsummaries.search(query="premium dog food", limit=5):
print(product.name, product.price, product.brand, product.rating)
# Get full details for the first result
detail = product.details()
print(detail.name, detail.sku, detail.description, detail.price)
# Check available variants
for variant in detail.variants:
print(variant.value, variant.price, variant.variation_id)
# Read reviews for this product
for review in detail.reviews.list(limit=3):
print(review.title, review.rating, review.user_nickname, review.submission_time)
# Browse a category
for item in petco.productsummaries.by_category(category_path="dry-cat-food", limit=3):
print(item.name, item.price, item.list_price, item.is_same_day)
# Get current deals
for deal in petco.productsummaries.deals(limit=3):
print(deal.name, deal.price, deal.list_price, deal.brand)
# Search suggestions
for suggestion in petco.suggestions.autocomplete(query="cat", limit=5):
print(suggestion.value, suggestion.matched_terms)
# Find stores near a ZIP code
for store in petco.stores.locate(zip_code="90210", limit=3):
print(store.name, store.address, store.city, store.distance_miles, store.bopus_available)
Full-text search across Petco's product catalog. Returns paginated product listings matching the query. Each result includes pricing, ratings, and availability flags. Pagination via page number; 48 results per page by default.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Number of results per page. |
| queryrequired | string | Search keyword or phrase. |
| sort_by | string | Sort order for results. Accepts Constructor.io sort fields such as 'relevance', 'price', 'num_reviews'. |
{
"type": "object",
"fields": {
"products": "array of product summary objects with id, name, brand, price, list_price, rd_price, rating, reviews, url, url_slug, image, is_same_day, is_repeat_delivery",
"result_id": "string unique identifier for this result set",
"total_results": "integer total number of matching products"
},
"sample": {
"data": {
"products": [
{
"id": "5016793",
"url": "/product/wholehearted-grain-free-all-life-stages-beef-and-pea-formula-dry-dog-food-40-lbs-2823705",
"name": "WholeHearted Grain Free All Life Stages Beef & Pea Formula Dry Dog Food, 40 lbs.",
"brand": "WholeHearted",
"image": "https://assets.petco.com/petco/image/upload/f_auto,q_auto,w_190/dpr_auto/2823705-center-1",
"price": 67.99,
"rating": 4.6729,
"reviews": 3103,
"rd_price": 64.59,
"url_slug": "wholehearted-grain-free-all-life-stages-beef-and-pea-formula-dry-dog-food-40-lbs-2823705",
"list_price": 67.99,
"is_same_day": true,
"is_repeat_delivery": true
}
],
"result_id": "d7c3ed18-8b8a-4c16-8dc0-cada57a283d4",
"total_results": 2880
},
"status": "success"
}
}About the Petco API
Product Catalog and Search
The search_products endpoint accepts a required query string and optional page, limit, and sort_by parameters. Supported sort values include relevance, price, and num_reviews. Each result in the products array includes id, name, brand, price, list_price, rd_price (repeat delivery price), rating, reviews, url_slug, and image. The total_results integer lets you calculate page counts. The get_category_products endpoint works similarly but takes a category_path slug — for example, dry-cat-food — instead of a keyword query.
Product Detail and Reviews
get_product_details takes a url_slug (available from search and category results) and returns the full product record including a variants array. Each variant carries its own price, list_price, rd_price, image_url, variation_id, and name, making it straightforward to surface size or flavor-specific pricing. get_product_reviews uses the sku field from get_product_details as its product_id input, returning paginated review objects with Rating, ReviewText, Title, UserNickname, SubmissionTime, and IsRecommended via Bazaarvoice. Ten reviews are returned per page and TotalResults gives the total review count.
Suggestions, Stores, and Deals
get_search_suggestions takes a query prefix and returns two arrays: Search Suggestions with matched terms and category data, and Products with preview fields like offerprice, listprice, and image_url — useful for building a live search UI. get_store_locator accepts a 5-digit US ZIP code and returns up to 5 stores with address, city, state, phone, latitude, longitude, distance_miles, and bopus_available. get_deals takes no inputs and returns the current top-deals product list in the same structure as search results.
The Petco API is a managed, monitored endpoint for petco.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when petco.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 petco.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 product price tracker using
price,list_price, andrd_pricefields across search results - Populate a store finder widget with address, phone, hours, and BOPUS status from
get_store_locator - Aggregate customer sentiment by pulling review text and
IsRecommendedflags viaget_product_reviews - Drive autocomplete search in a pet-care app using suggestions and product previews from
get_search_suggestions - Compare repeat-delivery versus regular pricing across product variants using
rd_pricefromget_product_details - Monitor daily deal pricing changes using the
priceandlist_pricefields returned byget_deals - Enumerate a category's full product set by paginating
get_category_productswith a category path slug
| 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.
Does Petco have an official public developer API?+
How do product variants work in `get_product_details`?+
variants array contains one object per size or flavor option. Each variant has its own price, list_price, rd_price, variation_id, image_url, and name fields, so you can display option-specific pricing without additional calls.Does the store locator cover non-US locations or return more than 5 stores?+
get_store_locator endpoint accepts US ZIP codes only and returns up to 5 nearby stores per query. There is no built-in radius or count parameter to expand results. You can fork this API on Parse and revise it to add wider-radius or higher-count store queries.Are veterinary services, grooming appointments, or adoption listings covered?+
How does pagination work across catalog endpoints?+
search_products and get_category_products endpoints default to 48 results per page. Pass an integer page parameter to step through results and use the total_results field in the response to determine how many pages exist. get_product_reviews paginates at 10 reviews per page using the same page parameter.