{
  "openapi": "3.0.1",
  "info": {
    "title": "Noon Scraper: Products, Prices, Sellers, Stock",
    "description": "Scrape noon.com searches, categories, brands, bestseller lists, links or SKUs for the UAE, Saudi Arabia, Egypt and four more stores, and noon Minutes at your delivery point. Get price, was price, discount, rating, seller, stock and every seller offer. No login; JSON, CSV or Excel; pay per product.",
    "version": "0.1",
    "x-build-id": "GUYeB2qQ90KKdlAHk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~noon-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-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/automation_craft~noon-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-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/automation_craft~noon-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-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",
        "properties": {
          "searchTerms": {
            "title": "Search words",
            "type": "array",
            "description": "Words to search on noon, one search per entry (iphone 17, perfume, air fryer). Each search delivers up to Max products per search, in the store and language set below.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "noon.com and noon Minutes links",
            "type": "array",
            "description": "Links copied from noon.com: a search page (https://www.noon.com/uae-en/search/?q=iphone), a category, brand or deal page (https://www.noon.com/uae-en/electronics-and-mobiles/mobiles-and-accessories/mobiles-20905/smartphones/), with the filters and order noon put in the link, or a product page (https://www.noon.com/uae-en/iphone-17-256gb-white/N70211556V/p/). A noon Minutes search link (https://minutes.noon.com/uae-en/search/?q=milk) is read at the delivery point set below. Each link carries its own store and language (uae-en, saudi-ar ...). Tracking parts such as utm_source are ignored. Through the API, give each link as a text (an object {\"url\": \"...\"} is read too).",
            "items": {
              "type": "string"
            }
          },
          "skus": {
            "title": "SKUs",
            "type": "array",
            "description": "noon SKUs: the code before /p/ in a product link (N70211556V). Each is looked up with its own search on noon; a SKU noon does not have gets a free status row.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Whole category pages to read: pick from the list, or type a category path below the store (the part after noon.com/uae-en/ in a category link, as in electronics-and-mobiles/computers-and-accessories/laptops).",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "electronics",
                "mobiles",
                "smartphones",
                "laptops",
                "tablets",
                "fashion_women",
                "fashion_men",
                "fashion_kids",
                "fragrance",
                "skin_care",
                "health",
                "home_and_kitchen",
                "large_appliances",
                "cookware",
                "baby",
                "toys",
                "grocery",
                "sports"
              ],
              "enumTitles": [
                "Electronics",
                "Mobiles",
                "Smartphones",
                "Laptops",
                "Tablets",
                "Fashion women",
                "Fashion men",
                "Fashion kids",
                "Fragrance",
                "Skin care",
                "Health",
                "Home and kitchen",
                "Large appliances",
                "Cookware",
                "Baby",
                "Toys",
                "Grocery",
                "Sports"
              ]
            }
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Brand names or codes as noon lists them (Apple, Samsung, adidas). With searches, categories or links they filter those lists; alone, each brand is read as its own list of products. A brand noon does not list for a page gets a free row naming the closest ones it does list.",
            "items": {
              "type": "string"
            }
          },
          "minutesSearchTerms": {
            "title": "noon Minutes search words",
            "type": "array",
            "description": "Words to search on noon Minutes, noon's quick delivery from dark stores (milk, eggs, bread), one search per entry, in the UAE, or in Saudi Arabia or Egypt when Store says so. Each product is billed as a Product and carries the dark store's price, pack size, the most a buyer may order, weight, volume and bundle items. Set the delivery point below; noon Minutes rows have no product page add-on.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Store",
            "enum": [
              "uae",
              "saudi",
              "egypt",
              "kuwait",
              "qatar",
              "bahrain",
              "oman"
            ],
            "type": "string",
            "description": "The noon store of Search words, SKUs, Categories and Brands (default UAE). Links carry their own store."
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "ar"
            ],
            "type": "string",
            "description": "The language of the names, nudges and delivery texts noon answers with (default English)."
          },
          "deliveryLatitude": {
            "title": "noon Minutes delivery point: latitude",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "In degrees, for example 24.47 (Abu Dhabi). With the longitude it decides which dark store's stock noon Minutes shows. Left out: noon's own default point (Downtown Dubai, Riyadh in Saudi Arabia; Egypt serves one point in Cairo only). A point noon Minutes does not deliver to gets a free status row."
          },
          "deliveryLongitude": {
            "title": "noon Minutes delivery point: longitude",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "In degrees, for example 54.35 (Abu Dhabi). Goes with the latitude."
          },
          "sellers": {
            "title": "Sellers",
            "type": "array",
            "description": "Seller (store) names or codes as noon lists them in the Seller filter of a page (noon, Emax, iNeo Electronics). Only products sold by these sellers are delivered.",
            "items": {
              "type": "string"
            }
          },
          "fulfilment": {
            "title": "Delivery type",
            "type": "array",
            "description": "noon's own delivery filter: express, supermall or global. Express and supermall are checked again on each row.",
            "items": {
              "type": "string",
              "enum": [
                "express",
                "supermall",
                "global"
              ],
              "enumTitles": [
                "Express (fulfilled by noon, 1 to 2 days)",
                "Supermall (within an hour)",
                "Global shipping"
              ]
            }
          },
          "deals": {
            "title": "Deals",
            "type": "array",
            "description": "noon's deal tags as it lists them for a page (Deal, Mega Deal, Flash Sale).",
            "items": {
              "type": "string"
            }
          },
          "lowestPriceIn": {
            "title": "Lowest price in",
            "enum": [
              "year",
              "30_days",
              "7_days"
            ],
            "type": "string",
            "description": "Only products noon marks as at their lowest price in a year, 30 days or 7 days."
          },
          "newArrivalsIn": {
            "title": "New arrivals in",
            "enum": [
              "7_days",
              "30_days",
              "60_days"
            ],
            "type": "string",
            "description": "Only products noon lists as new in the last 7, 30 or 60 days."
          },
          "deliveryToday": {
            "title": "Delivery today",
            "type": "boolean",
            "description": "Only products noon can deliver today.",
            "default": false
          },
          "filters": {
            "title": "Other noon filters",
            "type": "array",
            "description": "Any other filter noon lists for a page, written \"<filter name>: <value>\" as noon shows them (Colour: Black, Storage: 256 GB, RAM Size: 12 GB). The same name twice means either value.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "maximum": 10000000,
            "type": "number",
            "description": "In the store's currency (AED, SAR, EGP ...), two decimals at most. Sent to noon and checked again on each row."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "maximum": 10000000,
            "type": "number",
            "description": "In the store's currency, two decimals at most. Sent to noon and checked again on each row."
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "1",
              "1.5",
              "2",
              "2.5",
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Only products rated this or more (noon's own rating filter, checked again on each row)."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "recommended",
              "price_low_to_high",
              "price_high_to_low",
              "newest",
              "rating"
            ],
            "type": "string",
            "description": "noon's own orders. Default: recommended, or the order in the link."
          },
          "maxItemsPerSearch": {
            "title": "Max products per search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most products each search, category, brand or listing link delivers (default 100). noon serves at most 10,000 products of one list (50 pages of 200); up to 100,000 with Split large lists."
          },
          "maxItems": {
            "title": "Max products in all",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "The most products the whole run delivers (left out: no limit beyond the per search one)."
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "The most result pages read per search, category, brand or listing link (noon serves 50)."
          },
          "pageSize": {
            "title": "Products per page",
            "enum": [
              "50",
              "100",
              "150",
              "200"
            ],
            "type": "string",
            "description": "How many products each result page asks noon for (default: the fewest of 50, 100, 150 or 200 that covers Max products per search; 50 on the Saudi store, whose pages come through residential addresses)."
          },
          "splitLargeLists": {
            "title": "Split large lists",
            "type": "boolean",
            "description": "A list that reaches noon's cap of 50 pages is read again in price bands (noon's own price filter), each band halved until it fits, every product delivered once. For whole category exports past 10,000 products.",
            "default": false
          },
          "includeDetails": {
            "title": "Product details (every seller offer)",
            "type": "boolean",
            "description": "Reads each delivered product's page (a Product detail each): full specifications, description, highlights, variants with their availability, every seller's offer with exact stock, warranty, return policy and delivery date, bank offers and up to five reviews.",
            "default": false
          },
          "offerRows": {
            "title": "One row per seller offer",
            "type": "boolean",
            "description": "With Product details: also writes one free row per seller offer (buy box first), for buy box and seller tracking.",
            "default": false
          },
          "includeFacets": {
            "title": "Filter options",
            "type": "boolean",
            "description": "Adds noon's filter options for each search or list (brands, sellers, colours, storage, delivery types and more, with their codes) to its coverage row. Free.",
            "default": false
          },
          "includeCategoryTree": {
            "title": "Category tree",
            "type": "boolean",
            "description": "Adds one free row per store with noon's category menu (titles and links), read from the first page of the run. Not available for the Saudi store.",
            "default": false
          },
          "includeRaw": {
            "title": "Raw noon object",
            "type": "boolean",
            "description": "Adds the object noon sent for each product to its row (field raw), every key as noon names it.",
            "default": false
          },
          "omitEmptyFields": {
            "title": "Leave out empty fields",
            "type": "boolean",
            "description": "Writes product rows without their empty fields (null, empty text, empty lists), for smaller CSV and JSON files. Row type, SKU and store always stay.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "Product pages read at once (1 to 4, default 4)."
          },
          "requestTimeoutSecs": {
            "title": "Request timeout",
            "minimum": 10,
            "maximum": 60,
            "type": "integer",
            "description": "How long one request may take (default 30 s; product pages take 8 to 13 s on noon)."
          },
          "maxRequestRetries": {
            "title": "Retries",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Attempts per request (default 3)."
          },
          "requestDelaySecs": {
            "title": "Delay between requests",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "The least time between two requests to noon (default 0: the Actor's own pace of about 3 a second). The waits are run time too: with SKUs or product links, a delay above about 7 seconds costs more than a found SKU pays, and a long list then stops early (stopped by work_allowance, the rest not charged)."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave as is: the Actor picks its own doors (the run's own address and Apify datacenter addresses for noon's pages, Apify residential addresses in Saudi Arabia and the UAE for the Saudi store). Your own proxy links are used for every request when you give them."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}