{
  "openapi": "3.0.1",
  "info": {
    "title": "Noon.com Product & Ads Scraper",
    "description": "Products from noon.com search results and category pages: price, discount, brand, rating, seller, image and where each one ranked. Ads are marked, not hidden — you see which results were paid placements, in which slot and which store paid for them. UAE, Saudi Arabia and Egypt, English or Arabic.",
    "version": "0.1",
    "x-build-id": "NUgN3cbFYCSrXlxrD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/drramerets~noon-products/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-drramerets-noon-products",
        "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/drramerets~noon-products/runs": {
      "post": {
        "operationId": "runs-sync-drramerets-noon-products",
        "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/drramerets~noon-products/run-sync": {
      "post": {
        "operationId": "run-sync-drramerets-noon-products",
        "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": {
          "queries": {
            "title": "Search keywords",
            "type": "array",
            "description": "One keyword per line — exactly what you would type into noon's search box, e.g. air fryer. Note that noon answers every search with something: if a keyword is misspelt you get a full page of unrelated products rather than an empty result, so the run will tell you when the results do not mention what you asked for.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Category links",
            "type": "array",
            "description": "Paste the address of a noon category page, e.g. https://www.noon.com/uae-en/electronics-and-mobiles/ — copied straight from your browser. Deeper category pages work the same way.",
            "items": {
              "type": "string"
            }
          },
          "productUrls": {
            "title": "Specific products",
            "type": "array",
            "description": "Collect named products instead of searching. Paste the link from your browser or the product code from the end of it — both work, and you can mix them.",
            "items": {
              "type": "string"
            }
          },
          "includeSponsored": {
            "title": "Mark paid placements",
            "type": "boolean",
            "description": "Marks which results are ads, in which slot and which store paid for them, and adds the products that appear only as ads. Organic ranking stays clean either way. Ads take at most a quarter of your row limit, so the products you asked for are never crowded out.",
            "default": true
          },
          "country": {
            "title": "Marketplace",
            "enum": [
              "ae",
              "sa",
              "eg"
            ],
            "type": "string",
            "description": "Which noon marketplace to read. Prices, availability and ranking differ between them.",
            "default": "ae"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "ar"
            ],
            "type": "string",
            "description": "Arabic returns product names in Arabic. Prices, brands and product codes are the same in both, so Arabic and English runs can be compared side by side.",
            "default": "en"
          },
          "maxItems": {
            "title": "Maximum products",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "How many products to collect at most.",
            "default": 200
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "popularity",
              "price_low_to_high",
              "price_high_to_low",
              "new_arrivals",
              "rating"
            ],
            "type": "string",
            "description": "The same order noon offers on its own search page.",
            "default": "popularity"
          },
          "maxPagesPerQuery": {
            "title": "Depth per keyword",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Leave as is. Lower it only if you want a quick look at the top results of each keyword.",
            "default": 10
          },
          "useApifyProxy": {
            "title": "Use Apify Residential proxy",
            "type": "boolean",
            "description": "Leave switched on. Without it noon will not serve data for the marketplace you selected and the run comes back empty.",
            "default": true
          },
          "customProxyUrl": {
            "title": "Custom proxy URL",
            "type": "string",
            "description": "Optional. Use your own proxy instead of Apify's."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}