SayWeee APIsayweee.com ↗
Access SayWeee Asian grocery product data via API: search by keyword, fetch product details, browse deals, bestsellers, and new arrivals with pricing and discount info.
What is the SayWeee API?
The SayWeee API provides 6 endpoints covering product search, detail lookup, and category browsing across the SayWeee Asian grocery catalog. search_products accepts any keyword and returns matching products with id, name, price, and image_url, while get_category_products exposes paginated browsing across categories including meat, seafood, fruits, vegetables, and sale items — each result including discount_percentage and base_price for price comparison.
curl -X GET 'https://api.parse.bot/scraper/4ba5cc74-247f-4a27-a758-c0dcc49da6cc/search_products?limit=5&query=rice&offset=0' \ -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 sayweee-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.
"""SayWeee Asian grocery — search, browse categories, and check deals."""
from parse_apis.sayweee_api import SayWeee, Category, ProductNotFound
client = SayWeee()
# Search for products by keyword — limit caps total items returned.
for product in client.products.search(query="rice", limit=5):
print(product.name, product.price)
# Browse deals to find discounted items.
deal = client.products.deals(limit=1).first()
if deal:
print(deal.name, deal.price, deal.discount_percentage, deal.base_price)
# Typed error handling for product lookup by ID.
try:
detail = client.products.get(id="81224")
print(detail.name, detail.price, detail.image_url)
except ProductNotFound as exc:
print(f"Product gone: {exc.product_id}")
# Browse a category using the Category enum.
for item in client.products.browse_category(category=Category.MEAT, limit=3):
print(item.name, item.price, item.category_name)
print("exercised: search / deals / get / browse_category")Full-text search over the SayWeee product catalog by keyword. Returns normalized product summaries (id, name, price, image_url) and a total count. Not paginated; use limit to control result count.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max number of products to return |
| queryrequired | string | Search keyword (e.g. 'rice', 'noodles', 'tofu') |
{
"type": "object",
"fields": {
"total": "integer total number of matching products",
"products": "array of product objects with id, name, price, and image_url"
},
"sample": {
"data": {
"total": 60,
"products": [
{
"id": "81224",
"name": "Sekka Premium Japanese Medium Grain Rice 15 lb",
"price": 14.99,
"image_url": "https://img06.weeecdn.com/product/image/188/684/6948BFF6FFF56CA0.png"
}
]
},
"status": "success"
}
}About the SayWeee API
Search and Product Lookup
search_products takes a required query string (e.g. 'tofu', 'rice', 'noodles') and an optional limit integer. It returns a total count of matching products plus a products array, each item carrying id, name, price, and image_url. Note that this endpoint is not paginated — use limit to control the result window. To retrieve full detail for a single item, pass its numeric ID to get_product_detail; the optional slug parameter (e.g. 'Sekka-Premium-Japanese-Medium-Grain-Rice') improves URL accuracy but does not change the data returned.
Category Browsing
get_category_products accepts a category key from a fixed set: 'new', 'trending', 'meat', 'seafood', 'fruits', 'vegetables', or 'sale'. Results are paginated via offset and limit and include richer fields than search results: category_name, unit_price, sold_count_ui, discount_percentage, and base_price alongside the standard id, name, price, and image_url.
Convenience Endpoints
Three focused endpoints wrap get_category_products for the most common use cases: get_new_arrivals (equivalent to category='new'), get_bestsellers (equivalent to category='trending'), and get_deals (equivalent to category='sale'). All three return the same paginated response shape including discount fields, so they can be used interchangeably with the generic category endpoint depending on whether you want a named shortcut or flexible category selection in a single call.
The SayWeee API is a managed, monitored endpoint for sayweee.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sayweee.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 sayweee.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 price tracker comparing
priceandbase_priceacross SayWeee sale products usingget_deals - Populate a product recommendation widget with trending Asian grocery items via
get_bestsellers - Monitor new inventory additions to the SayWeee catalog with
get_new_arrivalson a scheduled basis - Search the catalog by ingredient keyword using
search_productsto power a recipe-to-grocery-cart feature - Aggregate discount percentages across the
salecategory to surface the highest-markdown products - Build a category browser for meat, seafood, fruits, and vegetables using
get_category_productswithoffset/limitpagination - Retrieve product images and names in bulk via
search_productsfor use in a grocery comparison UI
| 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 SayWeee have an official developer API?+
What discount-related fields does `get_category_products` return, and are they available in search results?+
get_category_products, get_deals, get_bestsellers, and get_new_arrivals all return discount_percentage and base_price alongside the current price, letting you compute savings. search_products returns only id, name, price, and image_url — the discount fields are not included in search results.Is `search_products` paginated?+
search_products is not paginated. It returns up to limit results in a single response. If you need to page through a large result set, get_category_products supports offset and limit parameters for standard pagination.