# Noon.com E-Commerce Scraper (`crawlerbros/noon-scraper`) Actor

Scrape Noon.com products across UAE, Saudi Arabia, and Egypt. Search by keyword or browse by category to extract product names, prices, ratings, reviews, brands, discounts, and promotional data. No authentication required

- **URL**: https://apify.com/crawlerbros/noon-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Noon.com E-Commerce Scraper

Scrape **Noon.com** products across UAE, Saudi Arabia, and Egypt — the Middle East's leading e-commerce platform. Search by keyword or browse by category to extract product names, prices, ratings, reviews, brands, discounts, and promotional labels. No authentication or proxy required.

### What this actor does

- **Three modes:** `search` (keyword), `byCategory` (category path), `byUrl` (from any Noon search or category URL)
- **Multi-market:** UAE (AED), Saudi Arabia (SAR), Egypt (EGP)
- **Full pricing detail:** selling price, original price, discount percentage, and currency
- **Sort options:** popularity, price (low/high), biggest discount, new arrivals
- **Promotional data:** Noon Express delivery tag, free delivery, stock warnings
- **Empty fields are omitted** — records only contain fields that have real values

### Output per product

- `name` — full product name
- `sku` — Noon product identifier (e.g. `N70154922V`)
- `url` — direct link to the Noon product page
- `price` — current selling price (numeric)
- `originalPrice` — pre-discount price (numeric, when discounted)
- `discountPercent` — percentage saved (numeric, when discounted)
- `currency` — ISO currency code (`AED`, `SAR`, `EGP`)
- `rating` — average star rating (0–5 scale)
- `reviewCount` — number of customer reviews
- `brand` — brand name (when shown on listing card)
- `imageUrl` — primary product image URL from Noon CDN
- `promotionTags` — active tags, e.g. `["Noon Express", "Free Delivery"]`
- `stockWarning` — low-stock message when shown (e.g. `Only 2 left`)
- `market` — market code: `uae`, `saudi`, or `egypt`
- `scrapedAt` — ISO 8601 timestamp of the scrape

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byCategory` / `byUrl` |
| `market` | string | `uae` | `uae` (UAE), `saudi` (Saudi Arabia), `egypt` (Egypt) |
| `searchQuery` | string | `moisturizer` | Keyword to search for (mode=search) |
| `categoryPath` | string | – | Category URL path, e.g. `beauty-personal-care` (mode=byCategory) |
| `startUrls` | array | – | Noon search or category URLs (mode=byUrl) |
| `sortBy` | string | `popularity` | `popularity`, `price_asc`, `price_desc`, `discount`, `new_arrivals` |
| `minRating` | number | – | Only emit products with rating ≥ this value (0–5) |
| `maxItems` | int | `50` | Hard cap on emitted records (1–1000) |

#### Example: search for laptops in UAE

```json
{
  "mode": "search",
  "market": "uae",
  "searchQuery": "laptop",
  "sortBy": "popularity",
  "maxItems": 50
}
````

#### Example: browse beauty products in Saudi Arabia

```json
{
  "mode": "byCategory",
  "market": "saudi",
  "categoryPath": "beauty-personal-care",
  "sortBy": "discount",
  "maxItems": 100
}
```

#### Example: top-rated electronics in Egypt

```json
{
  "mode": "search",
  "market": "egypt",
  "searchQuery": "smartphone",
  "sortBy": "popularity",
  "minRating": 4.0,
  "maxItems": 50
}
```

#### Example: scrape from a Noon URL

```json
{
  "mode": "byUrl",
  "startUrls": [
    "https://www.noon.com/uae-en/search?q=perfume&sort%5Bby%5D=discount"
  ],
  "maxItems": 50
}
```

### Use cases

- **Price comparison** — track Noon prices against other MENA e-commerce platforms
- **Discount monitoring** — identify products with the highest discounts in real time
- **Brand presence analysis** — measure brand reach and product count across Noon's categories
- **Market research** — compare product availability and pricing between UAE, Saudi Arabia, and Egypt
- **Inventory intelligence** — monitor stock warnings and availability for competitive products
- **E-commerce analytics** — analyze rating distributions and review counts by category

### FAQ

**What is Noon.com?**
Noon.com is a major e-commerce marketplace in the Middle East, operating in the UAE, Saudi Arabia, and Egypt. It offers millions of products across electronics, fashion, beauty, home goods, and more.

**Which markets are supported?**
UAE (`noon.com/uae-en`), Saudi Arabia (`noon.com/saudi-en`), and Egypt (`noon.com/egypt-en`). Each market has its own product catalogue, pricing, and currency.

**How fresh is the data?**
The actor fetches live Noon pages, so prices and stock status reflect what is visible on Noon at the time of scraping.

**How many products can I scrape per run?**
Set `maxItems` up to 1000. Noon returns approximately 50 products per search/category page and the actor paginates automatically.

**What category paths can I use?**
Use the URL segment after `/uae-en/` on any Noon category page. Examples: `electronics`, `beauty-personal-care`, `fashion-women`, `home-kitchen`, `sports-outdoors`. Browse `noon.com/uae-en/electronics/` to discover paths.

**Why are some products missing brand or image?**
Noon's listing cards include brand and image data for most products, but some listings omit these. Fields that have no value are simply omitted from the output record.

**Is this actor affiliated with Noon?**
No. This is an independent third-party actor. It is not affiliated with or endorsed by Noon E-Commerce LLC or Emaar Malls Group.

**Does the actor work without a proxy?**
Yes. Noon.com is publicly accessible from Apify's datacenter IPs without requiring a proxy. If you encounter issues, running without a proxy is still the recommended configuration.

# Actor input Schema

## `mode` (type: `string`):

What to fetch from Noon.

## `market` (type: `string`):

Noon regional website to scrape.

## `searchQuery` (type: `string`):

Keyword to search for (mode=search).

## `categoryPath` (type: `string`):

Noon category URL path segment, e.g. `beauty-personal-care`, `electronics`, `home-kitchen`. From the URL after /uae-en/.

## `startUrls` (type: `array`):

Noon search or category URLs. E.g. https://www.noon.com/uae-en/search?q=serum

## `sortBy` (type: `string`):

Product sort order.

## `minRating` (type: `number`):

Only emit products with rating >= this value (0–5).

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "search",
  "market": "uae",
  "searchQuery": "moisturizer",
  "startUrls": [],
  "sortBy": "popularity",
  "maxItems": 50
}
```

# Actor output Schema

## `products` (type: `string`):

Dataset containing all scraped Noon product records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "market": "uae",
    "searchQuery": "moisturizer",
    "startUrls": [],
    "sortBy": "popularity",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/noon-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "market": "uae",
    "searchQuery": "moisturizer",
    "startUrls": [],
    "sortBy": "popularity",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/noon-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "market": "uae",
  "searchQuery": "moisturizer",
  "startUrls": [],
  "sortBy": "popularity",
  "maxItems": 50
}' |
apify call crawlerbros/noon-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/noon-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Noon.com E-Commerce Scraper",
        "description": "Scrape Noon.com products across UAE, Saudi Arabia, and Egypt. Search by keyword or browse by category to extract product names, prices, ratings, reviews, brands, discounts, and promotional data. No authentication required",
        "version": "1.0",
        "x-build-id": "ETPYfnq67Cyq5YIG2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~noon-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-noon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~noon-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-noon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~noon-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-noon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "bycategory",
                            "byurl"
                        ],
                        "type": "string",
                        "description": "What to fetch from Noon.",
                        "default": "search"
                    },
                    "market": {
                        "title": "Market",
                        "enum": [
                            "uae",
                            "saudi",
                            "egypt"
                        ],
                        "type": "string",
                        "description": "Noon regional website to scrape.",
                        "default": "uae"
                    },
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword to search for (mode=search).",
                        "default": "moisturizer"
                    },
                    "categoryPath": {
                        "title": "Category path (mode=byCategory)",
                        "type": "string",
                        "description": "Noon category URL path segment, e.g. `beauty-personal-care`, `electronics`, `home-kitchen`. From the URL after /uae-en/."
                    },
                    "startUrls": {
                        "title": "Start URLs (mode=byUrl)",
                        "type": "array",
                        "description": "Noon search or category URLs. E.g. https://www.noon.com/uae-en/search?q=serum",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "popularity",
                            "price_asc",
                            "price_desc",
                            "discount",
                            "new_arrivals"
                        ],
                        "type": "string",
                        "description": "Product sort order.",
                        "default": "popularity"
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Only emit products with rating >= this value (0–5)."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
