{
  "openapi": "3.0.1",
  "info": {
    "title": "Noon Scraper - UAE & Saudi Product Prices",
    "description": "Scrape noon.com products across 8 Gulf storefronts: title, brand, price, was-price, discount, rating, review count, noon Express and free-delivery flags, coupons and images. Independent tool, not affiliated with noon.",
    "version": "0.1",
    "x-build-id": "2lZwBvqAyOHUcyjiV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~noon-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-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/scrapesage~noon-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-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/scrapesage~noon-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-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": {
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What to search for on noon, for example <code>laptop</code>, <code>air fryer</code>, <code>iphone 17 case</code>. Each term is searched on the storefront chosen below.",
            "items": {
              "type": "string"
            }
          },
          "storefront": {
            "title": "Storefront",
            "enum": [
              "uae-en",
              "uae-ar",
              "ksa-en",
              "egypt-en",
              "kuwait-en",
              "bahrain-en",
              "oman-en",
              "qatar-en"
            ],
            "type": "string",
            "description": "Which noon country site to scrape. Every value was verified live; prices come back in that country's currency."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "discount_desc",
              "rating_desc"
            ],
            "type": "string",
            "description": "How noon should order the results."
          },
          "startUrls": {
            "title": "noon URLs",
            "type": "array",
            "description": "noon search or category pages to scrape instead of (or as well as) the search terms. Paste them, link a text file, or upload one.",
            "items": {
              "type": "object"
            }
          },
          "urlsFromFile": {
            "title": "noon URLs from a file or pasted list",
            "type": "string",
            "description": "Paste a block of noon URLs (one per line), or give ONE link to a .txt/.csv file, a Google Sheet, a Drive file or an Apify key-value-store record holding them."
          },
          "maxPagesPerQuery": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many result pages to walk for each search term or URL. noon serves 50 products per page and paginates properly, so 10 pages is about 500 products.",
            "default": 3
          },
          "maxResults": {
            "title": "Max products in total",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Overall cap across every search. 0 means no cap.",
            "default": 0
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep products at or above this price, in the storefront's own currency. Filtered products are not charged."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep products at or below this price, in the storefront's own currency. Filtered products are not charged."
          },
          "minRating": {
            "title": "Min rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only keep products rated at or above this (1-5). Products with no rating yet are excluded. Filtered products are not charged."
          },
          "minDiscountPercent": {
            "title": "Min discount %",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep products discounted by at least this percentage. Filtered products are not charged."
          },
          "onlyNoonExpress": {
            "title": "Only noon Express",
            "type": "boolean",
            "description": "Keep only products eligible for noon Express delivery. Filtered products are not charged.",
            "default": false
          },
          "onlyOnSale": {
            "title": "Only products on sale",
            "type": "boolean",
            "description": "Keep only products showing a was-price above the current price. Filtered products are not charged.",
            "default": false
          },
          "outputFields": {
            "title": "Output fields",
            "type": "array",
            "description": "Pick exactly the columns you want. Leave empty for every field. The list is generated from the Actor's own record builder.",
            "items": {
              "type": "string",
              "enum": [
                "type",
                "sku",
                "url",
                "title",
                "brand",
                "priceText",
                "price",
                "oldPrice",
                "discountPercent",
                "isOnSale",
                "currency",
                "rating",
                "ratingCount",
                "isNoonExpress",
                "freeDelivery",
                "badges",
                "coupon",
                "images",
                "imageCount",
                "storefront",
                "country",
                "searchQuery",
                "sourceUrl",
                "page",
                "scrapedAt"
              ],
              "enumTitles": [
                "Record type (type)",
                "noon SKU (sku)",
                "Product URL (url)",
                "Title (title)",
                "Brand (brand)",
                "Price (as shown) (priceText)",
                "Price (price)",
                "Was price (oldPrice)",
                "Discount % (discountPercent)",
                "On sale (isOnSale)",
                "Currency (currency)",
                "Rating (rating)",
                "Review count (ratingCount)",
                "noon Express (isNoonExpress)",
                "Free delivery (freeDelivery)",
                "Badges (badges)",
                "Coupon (coupon)",
                "Images (images)",
                "Image count (imageCount)",
                "Storefront (storefront)",
                "Country (country)",
                "Search term (searchQuery)",
                "Source URL (sourceUrl)",
                "Result page (page)",
                "Scraped at (scrapedAt)"
              ]
            }
          },
          "monitorMode": {
            "title": "Monitor mode - only new products",
            "type": "boolean",
            "description": "Remember which products this Actor has already returned and emit only ones it has not seen before. Ideal on a schedule for new-arrival or price alerts. Already-seen products are skipped and never charged.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store that holds the monitor's memory. Use different names to track different searches independently.",
            "default": "noon-monitor"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}