Zid APIzid.store ↗
Search stores, browse featured merchants, read store profiles with ratings and coupons, and list products on the Mazeed marketplace via 5 structured endpoints.
What is the Zid API?
The Zid.store API gives you structured access to the Mazeed marketplace through 5 endpoints covering store discovery, merchant profiles, and product listings. Use search_stores to find merchants by keyword or category, get_store to retrieve a merchant's bilingual profile including their own storefront URL, customer rating, average delivery time, and active coupon codes, or list_store_products to page through a store's catalog with prices, sale prices, and product summaries.
curl -X GET 'https://api.parse.bot/scraper/abbf76b5-4e1f-4ecb-b87c-ffd30473ee93/search_stores?query=%D8%B9%D8%B7%D8%B1' \ -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 zid-store-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.
"""Walkthrough: Mazeed (zid.store) SDK — browse featured stores, drill into products."""
from parse_apis.zid_store_api import ZidStore, InputNotFound
client = ZidStore()
# Browse the featured "Top Stores" section, capped at 5 items.
for summary in client.store_summaries.featured(limit=5):
print(summary.name.ar, summary.store_id)
# Pick the first featured store and navigate to its full profile.
top = client.store_summaries.featured(limit=1).first()
if top is not None:
store = top.details()
print(store.name.en, "— rating:", store.rating_average, f"({store.rating_count} reviews)")
print("website:", store.website_url)
# Show advertised coupons
for coupon in store.coupons:
print(f" coupon {coupon.code}: {coupon.amount}% off" if coupon.type == "percentage" else f" coupon {coupon.code}: {coupon.amount}")
# List up to 3 products from this store
for product in store.products.list(limit=3):
print(f" {product.title.en} — {product.currency} {product.price}", "(on sale)" if product.sale_price else "")
# Search stores by keyword and get one store's details via point lookup.
hit = client.store_summaries.search(query="عطر", limit=1).first()
if hit is not None:
try:
detail = client.stores.get(store_id=hit.store_id)
print(detail.name.en, "delivers in ~", detail.average_delivery_days, "days")
except InputNotFound:
print("store no longer exists")
# List top-level marketplace categories
for cat in client.categories.list(limit=5):
print(cat.name.en, cat.category_id)
print("exercised: store_summaries.featured / details / stores.get / products.list / store_summaries.search / categories.list")
Finds merchant stores on the marketplace. Returns the stores with the most matching products for the keyword and/or category (up to 20, ordered by products_count descending, match = top_by_products), followed by stores whose name matches the keyword (match = name), de-duplicated by store_id. Works with only a keyword, only a category, or both; with neither it returns the 20 largest stores on the marketplace. The site does not paginate this listing, so one call returns the whole result. An empty stores array is a valid result for a keyword nothing matches. Names are bilingual objects {ar, en}; the site often fills both with the same text.
| Param | Type | Description |
|---|---|---|
| query | string | Free-text keyword (Arabic or English) matched against product content and store names. Omitted = no keyword filter. |
| category_id | string | Marketplace category id from list_categories.categories[*].category_id; restricts the top-by-products stores to that category. Omitted = all categories. |
{
"type": "object",
"fields": {
"count": "integer, number of stores returned",
"query": "echo of the keyword used, or null",
"stores": "array of store summaries: store_id (string, use with get_store / list_store_products), name {ar,en}, logo URL or null, products_count (integer, number of the store's matching products), match (top_by_products | name)",
"category_id": "echo of the category filter used, or null"
},
"sample": {
"data": {
"count": 24,
"query": "عطر",
"stores": [
{
"logo": "https://media.zid.store/7b0ec28a-f63c-4812-b7b8-3456e2563c5d/8c11f31a-d8db-4b38-977f-0ab2710acf07-200x.jpg",
"name": {
"ar": "مختارات باريس",
"en": "مختارات باريس"
},
"match": "top_by_products",
"store_id": "378981",
"products_count": 488
},
{
"logo": "https://media.zid.store/bdfcb2fb-c7b0-4411-9c59-a408b3bd48a2/90403b9c-2e71-493d-a023-da38b3286fff-200x.png",
"name": {
"ar": "شركة عطر ومكياج",
"en": "شركة عطر ومكياج"
},
"match": "name",
"store_id": "84672",
"products_count": 71
}
],
"category_id": null
},
"status": "success"
}
}About the Zid API
Store Discovery and Search
search_stores accepts a free-text query (Arabic or English) and an optional category_id and returns up to 20 stores ordered by product count for keyword-matched inventory, followed by stores whose name matches the query. Each result includes a store_id, bilingual name ({ar, en}), logo URL, and products_count. The category_id parameter must come from list_categories, which returns the marketplace's full category tree — top-level when called without a parent_category_id, or direct children when a parent is supplied. Each category carries a stable category_id, bilingual name, and image URL.
Merchant Profiles
get_store takes a store_id and returns the full public profile for one merchant: bilingual name and description, the merchant's own website_url (the external storefront, where available), logo, rating_average (0–5), rating_count, average_delivery_days, the marketplace categories the store sells in, and an array of coupons — each with code, amount, type (e.g. percentage), and a free_shipping boolean. list_featured_stores surfaces the marketplace's current home-page "Top Stores" section with offset/limit pagination (limit capped at 50) and returns total, has_more, next_offset, and a bilingual section_title.
Product Listings
list_store_products paginates through a merchant's catalog newest-first. Each product record includes product_id, title and summary ({ar, en}), price, sale_price (or null), currency, and is_ availability flags. The response includes total, has_more, and next_offset for sequential page traversal. Limit is capped at 50 per request.
The Zid API is a managed, monitored endpoint for zid.store — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zid.store 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 zid.store 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?+
- Aggregate coupon codes from multiple Mazeed merchants using
get_storecoupons array for a deals dashboard. - Build a store directory filtered by marketplace category using
list_categoriescategory_id values andsearch_stores. - Track changes in a store's
rating_averageandrating_countover time to monitor merchant reputation. - Discover a merchant's own storefront URL via
get_store.website_urlfor cross-site price comparison. - Compile a full product catalog for a specific merchant using
list_store_productswith offset-based pagination. - Surface the marketplace's currently featured merchants by polling
list_featured_storesfor home-page promotions. - Identify which top-level categories have the most merchants by running
search_storesacross categories returned bylist_categories.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Zid have an official public developer API?+
What does `get_store` return beyond the store's name and logo?+
get_store returns the merchant's website_url (their own external storefront if set), rating_average (0–5 scale) and rating_count, average_delivery_days, an array of currently advertised coupons each with a code, amount, type, and free_shipping flag, and the marketplace categories the store is listed under.How does `search_stores` order its results?+
products_count descending (match = top_by_products, up to 20), followed by stores whose name matches the keyword (match = name). Results are de-duplicated across groups.Does the API return individual product reviews or review text?+
rating_average and rating_count from get_store, and product-level fields like price, sale_price, and availability from list_store_products, but individual product reviews and review text are not included. You can fork this API on Parse and revise it to add an endpoint covering per-product review data.Is there a way to list all stores in a category without a search keyword?+
search_stores with only the category_id parameter and omit query. The response returns stores with the most products in that category ordered by products_count descending. Category IDs come from list_categories.