# Noon Food Scraper - Restaurants & Menus (`thirdwatch/noon-food-scraper`) Actor

Scrape restaurants and menus from food.noon.com - names, ratings, delivery times, fees, and full menu items with prices. UAE and Saudi Arabia.

- **URL**: https://apify.com/thirdwatch/noon-food-scraper.md
- **Developed by:** [Thirdwatch](https://apify.com/thirdwatch) (community)
- **Categories:** Automation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 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.
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 Food Scraper - Restaurants & Menus

> Scrape restaurants and menus from food.noon.com -- Noon's food delivery platform serving UAE and Saudi Arabia.

### What you get

Extract restaurant listings from Noon Food zones/areas: restaurant names, ratings, delivery times, delivery fees, images, and direct outlet URLs. Optionally extract full menus with item names, prices, and categories for each restaurant.

No login needed. No API key required.

Try it free -- click **Start** in the Input tab.

### Why scrape Noon Food?

Noon Food is a growing food delivery platform in the UAE and Saudi Arabia, competing with Talabat and Deliveroo. Whether you're analyzing the local food delivery market, monitoring restaurant pricing, or building a competitive intelligence tool, Noon Food provides valuable data.

**Use cases:**
- Food delivery market research in UAE and Saudi Arabia
- Menu price monitoring and competitive benchmarking
- Restaurant rating analysis by zone/neighborhood
- New restaurant tracking over time

### Output fields

| Field | Description |
|-------|-------------|
| `name` | Restaurant name |
| `rating` | Customer rating |
| `delivery_time` | Estimated delivery time (e.g., "25-35 min") |
| `delivery_fee` | Delivery fee (e.g., "AED 5.00") |
| `image_url` | Restaurant image URL |
| `url` | Direct outlet URL on food.noon.com |
| `zone` | Zone/area name |
| `country` | Country code |
| `menu_items` | Full menu items (when menu scraping is enabled) |
| `scraped_at` | Timestamp |

When menu scraping is enabled, each menu item contains:

| Field | Description |
|-------|-------------|
| `name` | Menu item name |
| `price` | Item price |
| `currency` | Currency (AED or SAR) |
| `category` | Menu category (e.g., "Meals", "Desserts") |

### Example output

```json
{
    "name": "McDonald's",
    "rating": 4.5,
    "delivery_time": "25-35 min",
    "delivery_fee": "AED 5.00",
    "image_url": "https://f.nooncdn.com/...",
    "url": "https://food.noon.com/uae-en/outlet/abc123/",
    "zone": "Downtown",
    "country": "uae-en",
    "menu_items": [
        {
            "name": "Big Mac Meal",
            "price": 32.0,
            "currency": "AED",
            "category": "Meals"
        }
    ],
    "scraped_at": "2026-04-11T10:30:00+00:00"
}
````

### Input parameters

| Parameter | Required | Description |
|-----------|----------|-------------|
| `zones` | No | Zone/area names to scrape (e.g., "Downtown", "Dubai Marina"). Use "auto" to scrape all available zones. |
| `country` | No | Country: UAE or Saudi Arabia (default: UAE) |
| `maxResults` | No | Max restaurants per zone (default: 100, 0 = unlimited) |
| `scrapeMenu` | No | Also extract full menu items with prices (default: off) |

### Available zones (UAE)

Common zones include: Downtown, Dubai Marina, JBR, Business Bay, DIFC, Al Barsha, Jumeirah, Deira, Bur Dubai. Abu Dhabi zones: Al Reem, Yas Island, Khalifa City.

Zone names must match the URL format used by food.noon.com.

### Tips

- **Use "auto"** to discover all available zones in your target area
- **Start without menus** -- preview restaurant listings first, then enable menu scraping for zones you care about
- **Check the logs** -- if a zone name isn't found, the scraper shows available zone names

### Limitations

- Zone names must match Noon Food's URL format
- Menu item availability varies by restaurant and time of day
- Some zones may have limited restaurant coverage

### Related Actors

- [Talabat Scraper](https://apify.com/thirdwatch/talabat-scraper) -- Middle East restaurant data across 9 countries
- [Deliveroo Scraper](https://apify.com/thirdwatch/deliveroo-scraper) -- UK, UAE, and Europe restaurant and menu data
- [Noon.com Product Scraper](https://apify.com/thirdwatch/noon-scraper) -- Noon.com product search (electronics, fashion, etc.)

# Actor input Schema

## `zones` (type: `array`):

Zone/area names to scrape (e.g., 'Downtown', 'Dubai Marina', 'Al Reem'). Use 'auto' to scrape all available zones. Check the run log for available zone names if a zone isn't found.

## `country` (type: `string`):

Which country to scrape restaurants from.

## `maxResults` (type: `integer`):

Maximum number of restaurants to extract per zone. Set 0 for unlimited.

## `scrapeMenu` (type: `boolean`):

Visit each restaurant's outlet page to extract full menu with item names, prices, and categories. Slower but provides complete data.

## Actor input object example

```json
{
  "zones": [
    "auto"
  ],
  "country": "uae-en",
  "maxResults": 100,
  "scrapeMenu": false
}
```

# 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 = {
    "zones": [
        "auto"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("thirdwatch/noon-food-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 = { "zones": ["auto"] }

# Run the Actor and wait for it to finish
run = client.actor("thirdwatch/noon-food-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 '{
  "zones": [
    "auto"
  ]
}' |
apify call thirdwatch/noon-food-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Noon Food Scraper - Restaurants & Menus",
        "description": "Scrape restaurants and menus from food.noon.com - names, ratings, delivery times, fees, and full menu items with prices. UAE and Saudi Arabia.",
        "version": "1.0",
        "x-build-id": "slUeYbrHMs8osqNDc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/thirdwatch~noon-food-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-thirdwatch-noon-food-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/thirdwatch~noon-food-scraper/runs": {
            "post": {
                "operationId": "runs-sync-thirdwatch-noon-food-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/thirdwatch~noon-food-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-thirdwatch-noon-food-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",
                "properties": {
                    "zones": {
                        "title": "Zone Names",
                        "type": "array",
                        "description": "Zone/area names to scrape (e.g., 'Downtown', 'Dubai Marina', 'Al Reem'). Use 'auto' to scrape all available zones. Check the run log for available zone names if a zone isn't found.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "uae-en",
                            "sa-en"
                        ],
                        "type": "string",
                        "description": "Which country to scrape restaurants from.",
                        "default": "uae-en"
                    },
                    "maxResults": {
                        "title": "Max Results Per Zone",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of restaurants to extract per zone. Set 0 for unlimited.",
                        "default": 100
                    },
                    "scrapeMenu": {
                        "title": "Scrape Menu Items",
                        "type": "boolean",
                        "description": "Visit each restaurant's outlet page to extract full menu with item names, prices, and categories. Slower but provides complete data.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
