{
  "openapi": "3.0.1",
  "info": {
    "title": "AI/ML Hiring Signals — Track Who AI Companies Are Hiring",
    "description": "Tracks open roles across 98 verified AI/ML companies (Greenhouse, Lever, Ashby) and surfaces hiring signals: new roles, closed roles, hiring velocity, and first-ever hires in a function.",
    "version": "0.1",
    "x-build-id": "JnX70G3wmKKu9o686"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/progressive_task~ai-ml-hiring-signals/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-progressive_task-ai-ml-hiring-signals",
        "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/progressive_task~ai-ml-hiring-signals/runs": {
      "post": {
        "operationId": "runs-sync-progressive_task-ai-ml-hiring-signals",
        "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/progressive_task~ai-ml-hiring-signals/run-sync": {
      "post": {
        "operationId": "run-sync-progressive_task-ai-ml-hiring-signals",
        "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": {
          "categories": {
            "title": "AI company categories",
            "type": "array",
            "description": "Which slice of the AI market to track. Leave as 'all' to cover the whole registry.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "foundation_model",
                "ai_infrastructure",
                "ai_chips",
                "ai_devtools",
                "ai_agents",
                "ai_coding",
                "ai_data",
                "ai_search",
                "vector_db",
                "ai_application",
                "ai_platform",
                "ai_safety",
                "ai_robotics"
              ],
              "enumTitles": [
                "All categories",
                "Foundation models / labs",
                "AI infrastructure & inference",
                "AI chips & hardware",
                "AI developer tools & observability",
                "AI agents & automation",
                "AI coding tools",
                "Data labeling & training data",
                "AI search & research",
                "Vector databases",
                "Vertical AI applications",
                "ML/data platforms",
                "AI safety & security",
                "Robotics & autonomy"
              ]
            },
            "default": [
              "all"
            ]
          },
          "stages": {
            "title": "Funding stage",
            "type": "array",
            "description": "Filter the registry by company maturity.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "early",
                "growth",
                "late",
                "public",
                "nonprofit"
              ],
              "enumTitles": [
                "All stages",
                "Early (seed / Series A)",
                "Growth (Series B–C)",
                "Late stage",
                "Public",
                "Non-profit / research lab"
              ]
            },
            "default": [
              "all"
            ]
          },
          "outputMode": {
            "title": "What to output",
            "enum": [
              "jobs",
              "signals",
              "both"
            ],
            "type": "string",
            "description": "'Jobs' gives one row per open role. 'Signals' gives one row per company with the hiring deltas — this is the lead-gen view. 'Both' returns each.",
            "default": "jobs"
          },
          "functions": {
            "title": "Job function",
            "type": "array",
            "description": "Restrict to specific role families. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "ml_research",
                "ml_engineering",
                "engineering",
                "infrastructure",
                "data",
                "devrel",
                "security",
                "product",
                "design",
                "sales",
                "marketing",
                "recruiting",
                "finance",
                "legal",
                "operations",
                "support",
                "other"
              ]
            },
            "default": []
          },
          "seniorities": {
            "title": "Seniority",
            "type": "array",
            "description": "Restrict to specific experience levels. Derived from the job title. Leave empty for all levels.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "junior",
                "mid",
                "senior",
                "staff",
                "principal",
                "manager",
                "director",
                "executive"
              ]
            },
            "default": []
          },
          "regions": {
            "title": "Region",
            "type": "array",
            "description": "Derived from the posting's location text.",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "uk",
                "eu",
                "in",
                "apac",
                "ca",
                "latam",
                "mea"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom",
                "Europe",
                "India",
                "APAC",
                "Canada",
                "LATAM",
                "Middle East & Africa"
              ]
            },
            "default": []
          },
          "workplace": {
            "title": "Workplace type",
            "enum": [
              "any",
              "remote",
              "hybrid",
              "onsite"
            ],
            "type": "string",
            "description": "Filter by where the role is performed. Inferred from the ATS field when present, otherwise from the location and description text.",
            "default": "any"
          },
          "titleKeywords": {
            "title": "Title / description must contain",
            "type": "array",
            "description": "Case-insensitive. A role matches if ANY keyword is present.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude if it contains",
            "type": "array",
            "description": "Case-insensitive. A role is dropped if ANY of these appears in its title or description.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyNewRoles": {
            "title": "Only roles new since the last run",
            "type": "boolean",
            "description": "Requires at least one previous run — the first run has no baseline to compare against.",
            "default": false
          },
          "onlySignalCompanies": {
            "title": "Only companies with a hiring signal this run",
            "type": "boolean",
            "description": "Skip companies whose board is unchanged. Ideal for a daily schedule feeding a Slack digest or CRM.",
            "default": false
          },
          "minSalary": {
            "title": "Minimum salary (max of the posted band)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only roles whose posted salary band tops out at or above this figure. Roles with no published salary are excluded when this is set."
          },
          "maxCompanies": {
            "title": "Max companies per run",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Caps how many companies are taken from the built-in registry. Companies you list in 'Add your own companies' are always included on top of this.",
            "default": 60
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Safety cap for very large boards. Companies with more open roles than this are truncated.",
            "default": 200
          },
          "concurrency": {
            "title": "Concurrent board requests",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "How many company boards to fetch in parallel. Higher is faster; leave at the default unless you are tuning a large run.",
            "default": 6
          },
          "extraCompanies": {
            "title": "Add your own companies",
            "type": "array",
            "description": "Track companies outside the built-in registry. Give at least a name; the Actor auto-detects the ATS and slug. Example: [{\"name\":\"Acme AI\"}, {\"name\":\"Foo\",\"ats\":\"greenhouse\",\"slug\":\"foo\"}]",
            "default": []
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}