{
  "openapi": "3.0.1",
  "info": {
    "title": "Kwork Monitor: Мониторинг заказов Kwork - Ranked New Order Feed",
    "description": "Ranks new Kwork.ru freelance projects (заказы Kwork) by an Opportunity Score from Kwork's own signals: competing offers, above-average-budget flag, buyer order history. Category Intelligence rollup plus a budget/competition monitor mode. Export JSON, CSV, Sheets, BigQuery. No login. $0.0018/project.",
    "version": "0.1",
    "x-build-id": "8EXDzOYI2Z7Kud8bB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~kwork-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-kwork-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/getascraper~kwork-monitor/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-kwork-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/getascraper~kwork-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-kwork-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",
        "properties": {
          "categoryIds": {
            "title": "Categories",
            "type": "array",
            "description": "Only surface projects from these Kwork categories, e.g. 38 (Доработка и настройка сайта / WordPress & site fixes), 46 (Соцсети и SMM / social media), 265 (Подбор персонала / recruitment), 270 (Презентации и инфографика / presentations). This filter is applied client-side to the single page this Actor is allowed to fetch (see Max Projects below), not as a server-side search parameter, so a narrow category selection can return fewer than Max Projects, or zero, in a given run rather than a guaranteed count. Leave empty for all categories.",
            "items": {
              "type": "string",
              "enum": [
                "20",
                "23",
                "24",
                "25",
                "27",
                "28",
                "35",
                "37",
                "38",
                "39",
                "40",
                "41",
                "43",
                "44",
                "45",
                "46",
                "47",
                "49",
                "55",
                "56",
                "59",
                "63",
                "64",
                "68",
                "71",
                "72",
                "73",
                "74",
                "75",
                "76",
                "77",
                "78",
                "79",
                "80",
                "81",
                "83",
                "84",
                "90",
                "106",
                "108",
                "112",
                "113",
                "114",
                "235",
                "250",
                "255",
                "262",
                "265",
                "270",
                "272",
                "273",
                "286",
                "300",
                "303",
                "306"
              ],
              "enumTitles": [
                "Аудиозапись и озвучка",
                "Музыка и песни",
                "Веб и мобильный дизайн",
                "Логотип и брендинг",
                "Полиграфия",
                "Арт и иллюстрации",
                "Переводы",
                "Создание сайта",
                "Доработка и настройка сайта",
                "Мобильные приложения",
                "Игры",
                "Скрипты, боты и mini apps",
                "Внутренняя оптимизация",
                "SEO аудиты, консультации",
                "Соцсети и маркетинг",
                "Соцсети и SMM",
                "Маркетинг и PR",
                "Контекстная реклама",
                "Обучение и консалтинг",
                "Статистика и аналитика",
                "Ссылки",
                "Юридическая помощь",
                "Бухгалтерия и налоги",
                "Обработка и редактирование",
                "Семантическое ядро",
                "Трафик",
                "Тексты и наполнение сайта",
                "Продающие и бизнес-тексты",
                "Набор текста",
                "Видеоролики",
                "Интро и анимация логотипа",
                "Видеосъемка и монтаж",
                "Верстка",
                "Десктоп программирование",
                "Юзабилити, тесты и помощь",
                "Бизнес и жизнь",
                "Персональный помощник",
                "Интерьер и экстерьер",
                "Редактирование аудио",
                "E-mail маркетинг и рассылки",
                "Маркетплейсы и доски объявлений",
                "Базы данных и клиентов",
                "Продажа сайтов и групп",
                "Резюме и вакансии",
                "Промышленный дизайн",
                "Сервера и хостинг",
                "Обзвоны и продажи",
                "Подбор персонала",
                "Презентации и инфографика",
                "Наружная реклама",
                "Продвижение сайта в топ",
                "Маркетплейсы и соцсети",
                "ИИ-генерация видео",
                "ИИ-тексты",
                "ИИ-генерация изображений"
              ]
            },
            "default": []
          },
          "maxExistingOffers": {
            "title": "Max Existing Offers",
            "minimum": 0,
            "type": "integer",
            "description": "Only surface projects with at most this many existing seller offers already submitted (Kwork's own kwork_count field, the real per-project competition count). Leave empty for no filter. Set to 0 specifically to surface only zero-competition, first-mover projects, a common and genuinely valuable filter since a large share of new listings start with no offers yet."
          },
          "higherPriceOnly": {
            "title": "Above-Average Budget Only",
            "type": "boolean",
            "description": "When enabled, only surfaces projects where Kwork's own isHigherPrice flag is true, meaning Kwork itself has already judged this project's budget to be above the category average. Uses the platform's own computed signal instead of reinventing a weaker one from raw price data.",
            "default": false
          },
          "minBuyerOrderCount": {
            "title": "Min Buyer Completed Orders",
            "minimum": 0,
            "type": "integer",
            "description": "Only surface projects posted by buyers with at least this many completed past orders on Kwork (wantGetSumOrderCount), a real buyer-experience signal. 0 means no minimum, includes brand-new buyers too.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Datacenter proxy is sufficient for Kwork: real-Chrome, Googlebot, and empty-User-Agent requests all reached full real content with no CAPTCHA or WAF challenge encountered (QRATOR, present in front of the site, is confirmed purely passive).",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxItems": {
            "title": "Max Projects",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Maximum number of projects to return per run. Capped at 12, a genuine technical ceiling, not a conservative default: Kwork's own robots.txt disallows any URL containing page= in the query string, and page-2-and-beyond of the project listing is only reachable that way, so this Actor can only ever fetch the single newest page (12 projects) per run. Run this Actor again (or on a schedule) rather than expecting a higher number here to return more.",
            "default": 12
          },
          "onlyChangedProjects": {
            "title": "Only Changed Projects",
            "type": "boolean",
            "description": "Monitor mode: re-checks the same newest-projects page and outputs only projects that are newly seen, or whose budget rose (BUDGET_INCREASED) or existing-offer count rose (COMPETITION_RISING) since the last run that used the same State Name below. Run this Actor on a schedule with the same State Name to build a standing new-order and price/competition-drift alert.",
            "default": false
          },
          "stateName": {
            "title": "State Name",
            "type": "string",
            "description": "Identifies which watch this run's monitor state belongs to. Use a different value for each independent watch you want to track in parallel (e.g. \"wordpress-fixes\" vs \"smm-projects\").",
            "default": "default"
          },
          "resetState": {
            "title": "Reset State",
            "type": "boolean",
            "description": "Clears the persisted monitor state for State Name before this run, so the next run treats every project as new again. Use this to start a watch over from scratch.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}