The Shade Store APItheshadestore.com ↗
Access The Shade Store catalog via API: window treatment categories, product materials, collections, showroom locations, search, and current promotions.
What is the The Shade Store API?
This API exposes 8 endpoints covering The Shade Store's full product hierarchy, showroom network, and active promotions. Starting with get_main_categories to retrieve top-level window treatment categories, you can drill into subcategories, pull detailed product pages with material and collection arrays, locate any of the brand's physical showrooms, run keyword searches, and fetch the current homepage promotion banner — all in structured JSON.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/67b9e71d-1082-487c-bf6c-d9365fb9ddfd/get_main_categories' \ -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 theshadestore-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.
from parse_apis.the_shade_store_api import ShadeStore, CategorySlug
client = ShadeStore()
# List all main categories
for category in client.categories.list():
print(category.name, category.url)
# Get subcategories for shades using constructible category
shades = client.category(url="/shades")
for subcat in shades.subcategories():
print(subcat.name, subcat.url)
# Get products from a subcategory
roller = client.subcategory(url="/shades/roller-shades")
for product in roller.products():
print(product.name, product.price_info)
# Get detailed product info via navigation
product = client.product(link="/shades/roller-shades/custom-roller-shades")
detail = product.details()
print(detail.title)
for material in detail.materials:
print(material.name, material.price_group, material.collections)
# List showrooms and get detail
for showroom in client.showrooms.list():
print(showroom.name, showroom.state, showroom.city)
chandler = client.showroom(url="/showrooms/arizona/chandler")
info = chandler.detail()
print(info.name, info.address, info.phone)
# Search for products
for result in client.searchresults.search(query="blackout"):
print(result.name, result.url)
# List current promotions
for promo in client.promotions.list():
print(promo.text)
Get main window treatment categories (Shades, Blinds, Drapery). Returns a static list of top-level product categories with their URL paths. No input required.
No input parameters required.
{
"type": "object",
"fields": {
"categories": "array of category objects each containing name and url"
},
"sample": {
"data": {
"categories": [
{
"url": "/shades",
"name": "SHADES"
},
{
"url": "/blinds",
"name": "BLINDS"
},
{
"url": "/drapery",
"name": "DRAPERY"
}
]
},
"status": "success"
}
}About the The Shade Store API
Product Catalog Navigation
The catalog endpoints form a three-level hierarchy. get_main_categories returns the top-level groupings (Shades, Blinds, Drapery) with their URL paths. Passing a category_slug — shades, blinds, or drapery — to get_subcategories yields a list of subcategory objects, each with a name and url. From there, get_subcategory_products accepts a subcategory_url (e.g. /shades/roller-shades) and returns an array of product objects containing name, link, and price_info, giving you enough to build a browsable product index.
Product Details
get_product_details takes a customization_url and returns the richest response in the API: a title string, a materials array where each entry carries name, price_group, collections, and code, and a flat collections array of name/code pairs. This is the right endpoint when you need to compare fabric options or map collection codes to display names for a configurator or product database.
Showrooms
get_all_showrooms returns every physical location as objects with name, url, state, and city. Feeding any showroom_url to get_showroom_detail resolves it into name, address, phone, hours, and an optional description string. These two endpoints together are sufficient to build a store-finder feature without additional geocoding calls.
Search and Promotions
search_products accepts a query string (e.g. blackout, roller) and returns an array of matching results, each with name and url, covering products, categories, and content pages found on the search results page. get_promotions requires no parameters and returns the current sitewide banner as an array of objects each containing a text field — useful for surfacing active sales in a price-comparison or deal-tracking workflow.
The The Shade Store API is a managed, monitored endpoint for theshadestore.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when theshadestore.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 theshadestore.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 product configurator that maps material codes and collection names from get_product_details into a custom UI.
- Populate a store-finder widget using get_all_showrooms filtered by state and enriched with hours from get_showroom_detail.
- Monitor active promotions via get_promotions to trigger alerts when sitewide sale text changes.
- Index the full product catalog by walking get_main_categories → get_subcategories → get_subcategory_products for price tracking.
- Power a keyword search feature for window treatments using search_products results mapped to product landing pages.
- Aggregate price_info across subcategories to compare entry-level costs between Shades, Blinds, and Drapery product lines.
- Sync showroom contact data (address, phone, hours) into a CRM or internal directory using get_showroom_detail.
| 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.