# Noon.com Search Scraper (`sacrosanct_quartermaster/noon-search-scraper`) Actor

Extract product names, prices, ratings, sellers & stock status from Noon.com search results. Fast mode for 500+ products in minutes, or detailed mode for complete data.

- **URL**: https://apify.com/sacrosanct\_quartermaster/noon-search-scraper.md
- **Developed by:** [Mohammed H](https://apify.com/sacrosanct_quartermaster) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Search Scraper

**Extract product data from [noon.com](https://www.noon.com) search results** — get product names, prices, discounts, ratings, review counts, sellers, and stock availability for any keyword, without writing a single line of scraping code. Just enter a search term and get clean, structured JSON, CSV, or Excel data in seconds. Choose **accurate mode** for complete product details, or **fast mode** to pull hundreds of products straight from the search results in minutes. Powered by [Playwright](https://playwright.dev) and Apify Proxy for reliable, scalable scraping.

Run it on-demand, schedule it to track price changes over time, or plug it into your own pipeline via the [Apify API](https://docs.apify.com/api/v2) and integrations with Zapier, Make, Google Sheets, and more.

#### Why use the Noon.com Search Scraper?

- **Price monitoring** — track how competitors price products on noon.com and react to discounts in real time.
- **Market research** — analyze product assortment, seller distribution, and customer ratings for any category or keyword.
- **Deal hunting** — quickly surface the best discounts (original price vs. current price) for a given search term.
- **Seller intelligence** — see which marketplace sellers dominate the results for your keywords.
- **No-code data extraction** — non-technical users get a clean dataset export without touching a browser or writing selectors.

#### How to scrape noon.com search results

1. Click **Try for free** on the Apify Store page (or run this Actor from the Console).
2. Open the **Input** tab and enter a **Search query**, e.g. `laptop` or `wireless earbuds`.
3. Optionally adjust **Max results** (default: 20).
4. Optionally enable **Fast mode** if you're scraping hundreds of products and don't need seller/rating/review data (see below).
5. Click **Start** and wait for the run to finish.
6. Open the **Dataset** tab (or the **Output** tab) to preview, filter, and download your results.

#### Accurate mode vs. fast mode

This Actor searches noon.com for whatever you type in — like "laptop", "running shoes", or "wireless earbuds" — and collects the matching products into a table you can download. Before you start a run, you get to pick one of two modes depending on how much detail you need and how many products you're scraping.

**🎯 Accurate mode (the default)**

This mode opens every single product's own page to gather the full picture: name, price, discount, product link, seller, star rating, number of reviews, and stock status. It's the most complete option, but it takes longer because it has to visit each product one by one.

- **Best for:** smaller runs — roughly 20 to 50 products — where you want every field filled in.
- **How long it takes:** a few seconds per product, so a 20-product run usually finishes in a couple of minutes, and a 50-product run in around 5-10 minutes. Bigger runs in this mode can take much longer, which is exactly what fast mode is for.

**⚡ Fast mode**

This mode reads product names, prices, and discounts straight off the search results page, without opening each product individually. That makes it dramatically quicker for large runs.

- **Best for:** big runs — anywhere from 500 up to 1000+ products — where prices and discounts are what you're after.
- **The trade-off:** seller, star rating, number of reviews, and stock status will come back empty (`null`) for every product. noon.com simply doesn't display that information on its search results page — only on each product's own page — so fast mode has no way to fill those in. This is expected, not a bug.
- **How long it takes:** roughly 2 minutes for 500 products, and around 4-5 minutes for 1000 products.

To turn it on, switch **Fast mode** to on (or set it to `true` if you're using JSON input) in the **Input** tab before starting your run.

**👀 Watching your run live**

Once you click **Start**, you don't have to wait in the dark. Open the **Log** tab of your run in the Apify Console to watch products being found and saved in real time, page by page, as the run progresses.

#### Input

The Actor accepts a simple JSON input, configurable in the Apify Console via the **Input** tab.

| Field         | Type    | Required | Default | Description                                                                                                                                                                                                                           |
| ------------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `searchQuery` | String  | Yes      | —       | Keyword to search for on noon.com, e.g. `"laptop"`                                                                                                                                                                                    |
| `maxResult`   | Integer | No       | `20`    | Maximum number of products to scrape from the search results (up to 1000)                                                                                                                                                             |
| `fastMode`    | Boolean | No       | `false` | When `true`, extracts data straight from the search page instead of visiting each product page. `seller`, `rating`, `reviewCount`, and `availability` will be `null`. See [Accurate mode vs. fast mode](#accurate-mode-vs-fast-mode). |

Example input (accurate mode):

```json
{
    "searchQuery": "laptop",
    "maxResult": 20
}
```

Example input (fast mode, for a large run):

```json
{
    "searchQuery": "laptop",
    "maxResult": 1000,
    "fastMode": true
}
```

#### Output

Each scraped product is pushed as one item to the Actor's dataset. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Example output item (accurate mode):

```json
{
    "name": "(Upgraded Version) Victus Gaming Laptop With 15.6-Inch FHD Display, Core i5-12450H Processor/32GB RAM/1TB SSD",
    "price": 3389,
    "originalPrice": 3699,
    "productUrl": "https://www.noon.com/uae-en/upgraded-version-victus-gaming-laptop.../N70136030V/p/",
    "rating": 4.5,
    "reviewCount": 30,
    "seller": "Generation Next Store",
    "availability": "In Stock"
}
```

Example output item (fast mode — `seller`, `rating`, `reviewCount`, and `availability` are always `null`):

```json
{
    "name": "(Upgraded Version) Victus Gaming Laptop With 15.6-Inch FHD Display, Core i5-12450H Processor/32GB RAM/1TB SSD",
    "price": 3389,
    "originalPrice": 3699,
    "productUrl": "https://www.noon.com/uae-en/upgraded-version-victus-gaming-laptop.../N70136030V/p/",
    "rating": null,
    "reviewCount": null,
    "seller": null,
    "availability": null
}
```

#### Data table

| Field           | Description                                                                                 |
| --------------- | ------------------------------------------------------------------------------------------- |
| `name`          | Product title                                                                               |
| `price`         | Current selling price (numeric)                                                             |
| `originalPrice` | Original list price before discount, or `null` if the product isn't discounted              |
| `productUrl`    | Direct link to the product page                                                             |
| `rating`        | Average customer rating (0–5), or `null` if no ratings yet. **Always `null` in fast mode.** |
| `reviewCount`   | Number of customer reviews, or `null` if none. **Always `null` in fast mode.**              |
| `seller`        | Name of the marketplace seller fulfilling the product. **Always `null` in fast mode.**      |
| `availability`  | Stock status, e.g. `"In Stock"` or `"Out of Stock"`. **Always `null` in fast mode.**        |

#### How much does it cost to scrape noon.com?

In **accurate mode**, this Actor loads one product detail page per result plus one search-results page per ~50 results, so cost and run time scale roughly linearly with `maxResult`. A typical run of 20 results uses a small fraction of the free monthly Apify platform credits — check the **Pricing** tab of the Actor for exact compute unit estimates based on your plan.

In **fast mode**, the Actor only loads search-results pages (~50 products per page), so a run of 500-1000 products costs a fraction of what the equivalent accurate-mode run would and finishes in minutes rather than hours — at the cost of `seller`, `rating`, `reviewCount`, and `availability` always being `null`.

#### Tips for better runs

- For small runs where you need full product details (seller, rating, reviews), keep `maxResult` reasonable (20–100) in accurate mode; scraping hundreds of results takes proportionally longer and costs more.
- For large runs (500-1000+ products) where price/discount data is enough, enable `fastMode` — it skips individual product page visits entirely.
- Very specific search queries return fewer, more targeted results and finish faster than broad ones.
- If runs start failing with blocked/timeout errors, noon.com may be rate-limiting the proxy pool in use — try again later or switch to a Residential proxy group in the Actor's **Proxy configuration** settings for more reliable access.

#### FAQ, disclaimers, and support

This Actor scrapes only publicly available data from noon.com's search results and product pages. It does not collect personal or account data, and does not bypass logins or paywalls. Use it in accordance with noon.com's Terms of Service and applicable laws in your jurisdiction; you are responsible for how you use the extracted data.

Website layouts change over time, which can occasionally affect field extraction. If you notice missing or incorrect data, please report it via the **Issues** tab on the Actor's page. Need a custom version of this scraper, or a tailored data-extraction solution? Reach out — custom Actor development is available.

# Actor input Schema

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

Keyword to search for on noon.com (e.g. "laptop", "iphone 15").

## `maxResult` (type: `integer`):

Maximum number of products to scrape from the search results.

## `fastMode` (type: `boolean`):

When enabled, extracts name, price, originalPrice, and productUrl directly from the search results page instead of visiting each product page. This makes large runs (500-1000+ products) finish in minutes instead of hours. Rating, reviewCount, seller, and availability are not shown on noon.com's search results page, so they will always be null in fast mode. Leave disabled (default) for full product details, including seller.

## Actor input object example

```json
{
  "searchQuery": "laptop",
  "maxResult": 20,
  "fastMode": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "searchQuery": "laptop"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sacrosanct_quartermaster/noon-search-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 = { "searchQuery": "laptop" }

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

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

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

```

## CLI example

```bash
echo '{
  "searchQuery": "laptop"
}' |
apify call sacrosanct_quartermaster/noon-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sacrosanct_quartermaster/noon-search-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Mczu9KQqC3QE5edw0/builds/rk1G2GGPbYX3purh0/openapi.json
