Grandiose APIgrandiose.ae ↗
Search and retrieve Grandiose UAE grocery products by EAN/UPC barcode. Get price, stock status, brand, category path, and image URL in AED.
What is the Grandiose API?
The Grandiose API provides 2 endpoints to look up grocery products on grandiose.ae by EAN or UPC barcode. search_by_barcode returns an array of matching products with pricing, brand, category, and availability. get_product_by_barcode returns a single exact-match record including the product page URL, image URL, stock status, and a semicolon-separated category path — all priced in AED.
curl -X POST 'https://api.parse.bot/scraper/36ee46d9-8444-499e-a2ae-2b1fd5de9382/search_by_barcode' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"barcode": "6291030200025"
}'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 grandiose-ae-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: Grandiose API — bounded, re-runnable; every call capped."""
from parse_apis.grandiose_ae_api import Grandiose, ProductNotFound
client = Grandiose()
# Search for products by barcode — returns matching items.
for product in client.products.search(barcode="6291030200025", limit=3):
print(product.name, product.price, product.currency)
# Get exact product details by barcode.
try:
item = client.products.get(barcode="6291030200025")
print(item.name, item.brand, item.country_of_origin, item.pack_weight_info)
except ProductNotFound as e:
print("not found:", e.barcode)
print("exercised: products.search, products.get")
Search for products on Grandiose by barcode (EAN/UPC). Returns matching products with pricing, availability, and category information. Results are auto-iterated.
| Param | Type | Description |
|---|---|---|
| barcoderequired | string | Product barcode in EAN/UPC format (e.g. 6291030200025). |
{
"type": "object",
"fields": {
"products": "array of product objects with id, name, sku, price, brand, category, etc.",
"total_results": "integer total number of matching products"
},
"sample": {
"data": {
"products": [
{
"id": "112564",
"sku": "6291030200025",
"url": "https://www.grandiose.ae/al-rawabi-full-cream-milk-2l0025",
"name": "Al Rawabi Full Cream Fresh Milk 2L",
"brand": "AL Rawabi",
"price": "12.25",
"category": "Dairy & Eggs;;Fresh Milk",
"currency": "AED",
"in_stock": "yes",
"image_url": "https://www.grandiose.ae/needtochange/media/klevu_images/280X280/6/2/6291030200025_1.jpg",
"sale_price": "12.25",
"pack_weight_info": "2 L / bottle",
"country_of_origin": "UAE"
}
],
"total_results": 1
},
"status": "success"
}
}About the Grandiose API
Endpoints
The API exposes two POST endpoints, both accepting a barcode string in EAN/UPC format (for example, 6291030200025). search_by_barcode performs a broad search and returns an array of product objects alongside a total_results count, making it useful when one barcode may match multiple listings or SKU variants. Each product object in the array includes id, name, sku, price, brand, and category. Results are auto-iterated, so pagination is handled for you.
Detailed Product Lookup
get_product_by_barcode is intended for exact-match retrieval. When the barcode maps to a specific product SKU on grandiose.ae, it returns a single record with the full set of fields: id, sku, url, name, brand, price, currency (AED), in_stock ("yes" or "no"), image_url, and category. The category field is a semicolon-separated path (e.g. Dairy;Cheese;Sliced Cheese), suitable for hierarchical filtering. If no exact match exists, the endpoint raises a ProductNotFound error rather than returning an empty result.
Coverage and Data Shape
All prices are returned as strings denominated in AED, matching Grandiose's UAE market. Stock status is a string yes or no. The url field points directly to the product page on grandiose.ae, and image_url gives the product image hosted on the site. Brand and category data reflect what Grandiose's own catalog exposes for each SKU.
The Grandiose API is a managed, monitored endpoint for grandiose.ae — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when grandiose.ae 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 grandiose.ae 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 UAE grocery price tracker using the
priceandin_stockfields fromget_product_by_barcode - Enrich a product catalog with Grandiose-specific pricing and imagery by batch-querying barcodes
- Compare category taxonomy across UAE supermarkets using the semicolon-separated
categorypath - Validate barcode existence on Grandiose before listing a product in a local marketplace
- Power a mobile app barcode scanner that surfaces live AED pricing and availability from Grandiose
- Aggregate brand presence data across Grandiose's catalog using the
brandfield from search results
| 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 Grandiose have an official public developer API?+
What is the difference between `search_by_barcode` and `get_product_by_barcode`?+
search_by_barcode returns an array of all products matching the barcode, including a total_results count, and handles pagination automatically. get_product_by_barcode returns exactly one product when the barcode matches a SKU directly, and raises a ProductNotFound error when no exact match exists. Use the search endpoint when you want broad coverage; use the detail endpoint when you expect a single definitive match.Does the `in_stock` field reflect real-time availability?+
in_stock field reflects the stock status as shown on grandiose.ae at the time of the request. Grandiose's own catalog updates are not instantaneous, so there may be a lag between a physical stock change and what the field returns. Treat it as a point-in-time indicator rather than a guaranteed real-time signal.Can I look up products by name or category instead of barcode?+
barcode string in EAN/UPC format) as the sole lookup key. Name-based or category-based search is not covered. You can fork this API on Parse and revise it to add a name or category search endpoint.