{
  "openapi": "3.0.1",
  "info": {
    "title": "Hiring Signal Monitor",
    "description": "Monitor competitor job boards weekly to reverse-engineer their clients and hiring patterns. Track Google News daily for funding events and office expansions. Identify companies with hiring intent and expansion plans. Built for B2B sales teams, staffing agencies, and management consultancies.",
    "version": "0.1",
    "x-build-id": "oHQB5W6nKkQ38Zzl6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/phantom_coder~hiring-signal-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-phantom_coder-hiring-signal-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/phantom_coder~hiring-signal-monitor/runs": {
      "post": {
        "operationId": "runs-sync-phantom_coder-hiring-signal-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/phantom_coder~hiring-signal-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-phantom_coder-hiring-signal-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": {
          "mode": {
            "title": "🔄 Mode",
            "enum": [
              "both",
              "competitor_jobs",
              "news_signals"
            ],
            "type": "string",
            "description": "Which workflow to run. 'competitor_jobs' crawls competitor career pages to identify their clients. 'news_signals' scans Google News for hiring signals in your industry. 'both' runs both workflows together.",
            "default": "both"
          },
          "competitorUrls": {
            "title": "🏢 Competitor career page URLs",
            "type": "array",
            "description": "Career page URLs of competitors to monitor weekly. Examples: michaelpage.co.th/jobs (Asia), robertwalters.co.uk/jobs (UK), michaelpage.de/jobs (Germany), roberthalf.com/us/en/jobs (US). Replace the pre-filled example with your actual competitors.",
            "items": {
              "type": "string"
            }
          },
          "industry": {
            "title": "🏭 Industry",
            "type": "string",
            "description": "Industry sector used to build news signal queries. Examples: IT, fintech, healthcare, manufacturing, logistics, e-commerce. Only used in news_signals mode.",
            "default": "IT"
          },
          "geography": {
            "title": "🌍 Geography",
            "type": "string",
            "description": "Country, region, or city to focus news searches on. Use full names for best results. Examples: United States, Germany, United Kingdom, Thailand, Southeast Asia, New York, Berlin, Singapore. Only used in news_signals mode.",
            "default": "Thailand"
          },
          "signalCategories": {
            "title": "📡 Signal categories",
            "type": "array",
            "description": "Types of company activity to watch for. All five are pre-filled - remove any you don't need. Options: funding (investment rounds), expansion (new markets/offices), hiring (direct announcements), joint_venture (partnerships), new_office (location openings). Only used in news_signals mode.",
            "items": {
              "type": "string"
            },
            "default": [
              "funding",
              "expansion",
              "hiring",
              "joint_venture",
              "new_office"
            ]
          },
          "minSignalScore": {
            "title": "🎯 Minimum signal score (1–10)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Minimum signal strength to include (1–10). 5 = broad (leadership changes), 7 = recommended (confirmed expansions and funding), 9 = strict (direct hiring announcements only). Default 7 is a good starting point.",
            "default": 7
          },
          "maxArticlesPerQuery": {
            "title": "📰 Max articles per query",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Maximum number of articles to fetch per search query. One query is run per signal category, so the total articles fetched is this number multiplied by the number of active signal categories. Lower = faster and cheaper.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}