Almajed4oud APIsa.almajed4oud.com ↗
Access Al Majed Oud's Saudi perfume catalog via API. Retrieve categories, paginated product listings, pricing, SKUs, ratings, and full product details.
What is the Almajed4oud API?
This API provides structured access to Al Majed Oud's Saudi Arabian fragrance catalog across 3 endpoints. Use list_categories to retrieve the full navigation tree, list_products to page through products within any category, and get_product_details to fetch individual product records including price, SKU, description, availability, sold quantity, and brand.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/6386e0c2-8b83-4e5d-ba45-951fa20e70d4/list_categories' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns the store's full category tree from the navigation menu. Each category includes a numeric ID, title, URL, and optional child sub-categories. Use the returned category IDs as input to list_products.
No input parameters required.
{
"type": "object",
"fields": {
"categories": "array of category objects with id, title, url, and children sub-array"
},
"sample": {
"data": {
"categories": [
{
"id": "1326390976",
"url": "https://sa.almajed4oud.com/ar/-/c1326390976",
"title": "وصل حديثًا",
"children": []
},
{
"id": "1676347343",
"url": "https://sa.almajed4oud.com/ar/-/c1676347343",
"title": "الأكثر مبيعًا",
"children": []
},
{
"id": "2013591332",
"url": "https://sa.almajed4oud.com/ar/-/c2013591332",
"title": "عطور",
"children": [
{
"id": "1440814629",
"url": "https://sa.almajed4oud.com/ar/-/c1440814629",
"title": "عطور رجالية"
},
{
"id": "667825446",
"url": "https://sa.almajed4oud.com/ar/-/c667825446",
"title": "عطور نسائية"
}
]
}
]
},
"status": "success"
}
}About the Almajed4oud API
Category and Product Navigation
list_categories returns the store's full navigation tree with no required parameters. Each category object includes a numeric id, title, url, and a children array for nested sub-categories. Those numeric IDs feed directly into list_products as the required category_id parameter — for example, passing '1676347343' retrieves the best sellers category.
Paginated Product Listings
list_products accepts a category_id, an optional page integer (starting at 1), and an optional limit up to 50 products per page. The response includes the current page, an array of products, and a has_next_page boolean so you can iterate through large categories without guessing total counts. Each product record in the array includes name, price, category name, SKU, rating, availability, and sold quantity where the store makes it visible.
Full Product Details
get_product_details takes a single product_id string from any list_products result and returns a complete product object: id, name, sku, description, url, price, regular_price, sale_price, currency, is_available, brand, category, and sold quantity when the store exposes it. This is the appropriate endpoint for building product detail pages, price tracking records, or catalog sync pipelines where you need the full field set rather than the summary from list views.
The Almajed4oud API is a managed, monitored endpoint for sa.almajed4oud.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sa.almajed4oud.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 sa.almajed4oud.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 regular and sale prices across Al Majed Oud's fragrance categories over time using
list_productsandget_product_details. - Build a category-mapped product index using
list_categoriesto traverse the full navigation tree andlist_productsto populate each node. - Monitor stock availability (
is_available) across the catalog to detect restocks or sellouts. - Compare SKUs and brand attribution across oud and perfume product lines for competitive catalogue analysis.
- Aggregate sold quantity signals from
get_product_detailsto identify trending or high-demand products. - Sync Al Majed Oud's full product catalog into an internal database using paginated
list_productscalls withhas_next_pageiteration. - Populate a price comparison tool with
regular_price,sale_price, andcurrencyfields from the product details endpoint.
| 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 Al Majed Oud have an official public developer API?+
What does `list_products` return beyond basic name and price?+
list_products returns, per product: name, price, category name, SKU, rating, sold quantity (where the store makes it available), and availability status. Pagination is controlled by page and limit (max 50); the has_next_page boolean in each response tells you whether additional pages exist for that category.Are product images or media assets returned by any endpoint?+
Is the sold quantity field always present in `get_product_details`?+
sold quantity field is conditionally returned based on whether the store has that display enabled for a given product. Your code should handle cases where the field is absent or null rather than treating it as guaranteed.