{
  "openapi": "3.0.1",
  "info": {
    "title": "Haraj Scraper & Monitor",
    "description": "Search public Haraj ads, collect detailed ad and seller information, and monitor selected listings for changes.",
    "version": "1.0",
    "x-build-id": "SC1zzHxKahyJpr820"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlstone~haraj-scraper-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlstone-haraj-scraper-monitor",
        "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/crawlstone~haraj-scraper-monitor/runs": {
      "post": {
        "operationId": "runs-sync-crawlstone-haraj-scraper-monitor",
        "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/crawlstone~haraj-scraper-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-crawlstone-haraj-scraper-monitor",
        "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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "monitor",
              "discover",
              "adDetail",
              "sellerDetail"
            ],
            "type": "string",
            "description": "Choose one direct operation. Discover is preselected with a sample keyword for a ready-to-run search."
          },
          "adUrls": {
            "title": "Ads to monitor",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "type": "array",
            "description": "Used only to create a monitor. Enter 1–10 unique canonical public Haraj ad URLs and omit monitorId.",
            "items": {
              "type": "string",
              "pattern": "^https://haraj\\.com\\.sa/11[1-9][0-9]*(?:/[^/?#]+)?/?$"
            }
          },
          "monitorId": {
            "title": "Monitor ID",
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
            "type": "string",
            "description": "Used only to continue a monitor. Enter the canonical lowercase UUID returned by monitor creation and omit adUrls."
          },
          "keyword": {
            "title": "Keyword",
            "minLength": 1,
            "type": "string",
            "description": "Required for discover. Search text is trimmed and may be refined with tag and city."
          },
          "tag": {
            "title": "Tag",
            "minLength": 1,
            "type": "string",
            "description": "Optional discover refinement used with the required keyword. Tags are trimmed free text."
          },
          "city": {
            "title": "City or region",
            "enum": [
              "الرياض",
              "الخرج",
              "الدرعية",
              "الدلم",
              "الدوادمي",
              "الحريق",
              "الزلفي",
              "السليل",
              "الغاط",
              "القويعية",
              "المجمعة",
              "المزاحمية",
              "الهياثم",
              "ثادق",
              "حوطة بني تميم",
              "رماح",
              "شقراء",
              "عفيف",
              "الشرقيه",
              "الدمام",
              "الخبر",
              "الظهران",
              "الجبيل",
              "حفر الباطن",
              "الهفوف",
              "تاروت",
              "المبرز",
              "العيون",
              "النعيرية",
              "بقيق",
              "راس تنورة",
              "الخفجي",
              "القطيف",
              "سيهات",
              "صفوى",
              "عنك",
              "جده",
              "مكه",
              "الطايف",
              "القنفذة",
              "الكامل",
              "الليث",
              "تربة مكة",
              "ثول",
              "الجموم",
              "رابغ",
              "رنية",
              "مدينة الملك عبدالله الاقتصادية",
              "الخرمة",
              "ينبع",
              "المدينة",
              "العلا",
              "الحناكية",
              "بدر",
              "خيبر",
              "مهد الذهب",
              "تبوك",
              "املج",
              "الوجه",
              "تيماء",
              "ضبا",
              "القصيم",
              "بريدة",
              "عنيزة",
              "الرس",
              "الشماسية",
              "المذنب",
              "النبهانية",
              "البدائع",
              "رياض الخبراء",
              "البكيرية",
              "حائل",
              "الغزالة",
              "بقعاء",
              "الشنان",
              "تربة حائل",
              "أبها",
              "عسير",
              "خميس مشيط",
              "المجاردة",
              "بللسمر",
              "بيشة",
              "تثليث",
              "احد رفيده",
              "محايل عسير",
              "الباحة",
              "جيزان",
              "نجران",
              "شرورة",
              "الوديعة",
              "الجوف",
              "القريات",
              "دومة الجندل",
              "سكاكا",
              "عرعر",
              "رفحاء",
              "طريف",
              "الكويت",
              "الإمارات",
              "البحرين"
            ],
            "type": "string",
            "description": "Optional discover refinement used with the required keyword, selected from the maintained city snapshot."
          },
          "sellerUsername": {
            "title": "Seller username",
            "minLength": 1,
            "type": "string",
            "description": "Required only for sellerDetail. The value is trimmed and identifies the seller profile and ads to collect."
          },
          "maxResults": {
            "title": "Maximum discovery results",
            "minimum": 50,
            "maximum": 1000,
            "type": "integer",
            "description": "Used only by discover. Accepts 50–1,000 root ad results.",
            "default": 50
          },
          "adUrl": {
            "title": "Ad URL",
            "pattern": "^https://haraj\\.com\\.sa/11[1-9][0-9]*(?:/[^/?#]+)?/?$",
            "type": "string",
            "description": "Required for adDetail. Use an exact HTTPS haraj.com.sa public ad URL without query parameters or a fragment."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}