Zumiez APIzumiez.com ↗
Search Zumiez products, browse by category, and fetch full product details including pricing, stock status, images, and attributes via a simple REST API.
What is the Zumiez API?
The Zumiez API provides 3 endpoints covering product search, category browsing, and detailed product lookup across the Zumiez catalog. The search_products endpoint accepts a keyword query and returns paginated summaries including brand, price, final price, MSRP, and image URLs. The get_product_details endpoint expands a single product group into structured attributes, multiple images, stock status, and meta description.
curl -X GET 'https://api.parse.bot/scraper/3f2ae8fa-e680-48de-aaed-05f305a59cdd/search_products?page=1&limit=5&query=hoodie' \ -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 zumiez-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.
"""
Zumiez Product API - Search products, browse categories, and get full details.
"""
from parse_apis.zumiez_product_api import Zumiez, ProductSummary, Product
zumiez = Zumiez()
# Search for skate shoes
for product in zumiez.productsummaries.search(query="skate shoes", limit=5):
print(product.name, product.brand, product.final_price)
# Browse a category
for product in zumiez.productsummaries.list_by_category(category_path="/shoes.html", limit=3):
print(product.name, product.product_group, product.price)
# Get full details for a specific product
item = zumiez.productsummary("408237").details()
print(item.name, item.brand, item.price, item.final_price, item.stock_status)
for attr in item.attributes:
print(attr.attribute_label, attr.attribute_code)
for opt in attr.attribute_options:
print(opt.label, opt.value)
Full-text search across the Zumiez product catalog by keyword. Returns paginated product summaries. Pagination via page number; each page contains up to `limit` items. The total result count and page count are included in the response.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Number of products per page. |
| queryrequired | string | Search keyword (e.g. 'hoodie', 'shoes', 'skateboard'). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"limit": "integer number of products per page",
"total": "integer total number of matching products",
"products": "array of product summary objects with id, sku, product_group, brand, name, price, final_price, msrp, image_url, product_url",
"total_pages": "integer total number of pages"
},
"sample": {
"data": {
"page": 1,
"limit": 5,
"total": 14091,
"products": [
{
"id": 1838886518,
"sku": "34673906760006",
"msrp": null,
"name": "Empyre Colby Loose Fit Denim Skate Shorts",
"brand": "Empyre",
"price": "59.94",
"image_url": "//scene7.zumiez.com/is/image/zumiez/346739-US",
"final_price": "59.94",
"product_url": "https://www.zumiez.com/empyre-colby-loose-fit-denim-skate-shorts.html",
"product_group": "346739"
}
],
"total_pages": 2819
},
"status": "success"
}
}About the Zumiez API
Endpoints and Data Coverage
The API exposes three GET endpoints. search_products accepts a query string (e.g. 'hoodie', 'skateboard') plus optional page and limit parameters, returning an array of product summary objects alongside total, total_pages, and page fields for pagination. Each product summary includes id, sku, product_group, brand, name, price, final_price, msrp, image_url, and product_url.
list_products_by_category works the same way but scopes results to a specific section of the catalog identified by a category_path string that mirrors the site's URL structure (e.g. '/mens/hoodies.html', '/shoes.html'). The path must end in .html. Response shape is identical to search results, making it straightforward to paginate through an entire category.
Product Detail Fields
get_product_details takes a product_group ID obtained from either of the listing endpoints and returns the full record for that product group. Additional fields beyond the summary include a description string, an images array of image URLs, a stock_status value such as 'IN_STOCK', and an attributes array. Each attribute object carries attribute_code, attribute_label, attribute_value, and attribute_options, covering structured data like color, size, and product features.
Pricing Fields
Both summary and detail responses include price (regular price), final_price (sale or effective price), and msrp. Comparing price to final_price lets you detect discounted items programmatically. The msrp field reflects the manufacturer's suggested retail price where provided.
The Zumiez API is a managed, monitored endpoint for zumiez.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zumiez.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 zumiez.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?+
- Track price drops on Zumiez skate gear by comparing
priceandfinal_priceacross daily snapshots - Build a brand-filtered product feed using the
brandfield returned bysearch_products - Monitor stock availability for specific products by polling
stock_statusfromget_product_details - Aggregate category assortments by paginating through
list_products_by_categorywith a known category path - Pull structured size and color variant data from the
attributesarray for use in a comparison tool - Identify sale items by finding products where
final_priceis less thanmsrpacross search results - Populate a product database with images, SKUs, and descriptions using
get_product_detailsfor eachproduct_groupID
| 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 Zumiez have an official developer API?+
What does `get_product_details` return that the listing endpoints don't?+
get_product_details adds a description string, a full images array (multiple URLs rather than a single image_url), stock_status, and a structured attributes array with attribute_code, attribute_label, attribute_value, and attribute_options. The listing endpoints return only one image URL and no attributes or stock status.How does pagination work across the listing endpoints?+
search_products and list_products_by_category accept page (default 1) and limit parameters. Each response includes total, total_pages, and page so you can iterate through results. There is no cursor-based or offset pagination — only page-number-based navigation.Does the API return customer reviews or ratings for products?+
Can I look up available product variants (e.g. specific sizes in stock) through the API?+
attributes array in get_product_details exposes color, size, and other structured fields with attribute_options, but variant-level stock status per SKU is not broken out individually — only the aggregate stock_status for the product group is returned. You can fork this API on Parse and revise it to surface per-variant inventory detail.