{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Hiring Intelligence",
    "description": "Converts Indeed job listings into hiring signals, company growth intelligence, and outbound triggers. Detects engineering-expansion, executive-hiring, and geo-expansion before the market notices. Country-verified, salary-parsed, PPE-billed per decision: not per scraped row.",
    "version": "1.0",
    "x-build-id": "c2Jz1nDWTvrm6AY20"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ryanclinton~indeed-hiring-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ryanclinton-indeed-hiring-intelligence",
        "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/ryanclinton~indeed-hiring-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-ryanclinton-indeed-hiring-intelligence",
        "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/ryanclinton~indeed-hiring-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-ryanclinton-indeed-hiring-intelligence",
        "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": [
          "queries",
          "country"
        ],
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "List of Indeed search queries. Each entry can be either a plain string ('data engineer London') or an object with explicit position and location: { \"position\": \"data engineer\", \"location\": \"London\" }. Country is taken from the top-level country field.",
            "default": [
              {
                "position": "software engineer",
                "location": "London"
              }
            ]
          },
          "country": {
            "title": "Country",
            "enum": [
              "US",
              "UK",
              "CA",
              "AU",
              "DE",
              "FR",
              "IT",
              "ES",
              "NL",
              "IE",
              "IN",
              "SG",
              "JP",
              "BR",
              "MX",
              "ZA",
              "AE",
              "PL",
              "SE"
            ],
            "type": "string",
            "description": "Two-letter country code. Selects the Indeed subdomain (e.g. UK -> uk.indeed.com, DE -> de.indeed.com). Every extracted job is verified against this country at parse time — records whose parsed location does not match are dropped and counted in countryFilterDropped.",
            "default": "UK"
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 90,
            "type": "integer",
            "description": "Drop jobs posted more than this many days ago. Indeed's relative date strings ('Today', '3 days ago', '30+ days ago') are parsed against the run timestamp. Set to 0 to disable.",
            "default": 14
          },
          "salaryTypes": {
            "title": "Salary types",
            "type": "array",
            "description": "Only return jobs whose parsed salary matches one of these types. Jobs with unparseable salary are tagged 'unknown' and included only when 'unknown' is in this list. Leave empty to disable the filter entirely.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerQuery": {
            "title": "Max results per query",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on jobs extracted per query. Indeed paginates 15 jobs per page. Default 100 = roughly 7 pages per query.",
            "default": 100
          },
          "maxRuntimeSeconds": {
            "title": "Max runtime (seconds)",
            "minimum": 60,
            "maximum": 3600,
            "type": "integer",
            "description": "Hard runtime budget in seconds. Actor stops cleanly when reached and emits partial results with hitRuntimeBudget=true on the run summary, so you always get usable output rather than a hard-killed run.",
            "default": 1800
          },
          "outputTier": {
            "title": "Output tier",
            "enum": [
              "commodity",
              "intelligence",
              "watchtower"
            ],
            "type": "string",
            "description": "Preset bundle controlling which record types are emitted. 'commodity' = jobs only. 'intelligence' = jobs + companies + signals (recommended). 'watchtower' = currently treated identically to 'intelligence' (delta + event stream features ship in round 2).",
            "default": "intelligence"
          },
          "includeJobs": {
            "title": "Include job records",
            "type": "boolean",
            "description": "Push individual job records to the dataset. Disable when you only want aggregated company intelligence and signal records.",
            "default": true
          },
          "includeCompanyIntelligence": {
            "title": "Include company intelligence",
            "type": "boolean",
            "description": "Push per-company aggregate records with hiringMomentum score, hiringProfile, and recommendedAction.",
            "default": true
          },
          "includeSignals": {
            "title": "Include signals",
            "type": "boolean",
            "description": "Run signal detection (engineering-expansion, executive-hiring, sales-expansion, geo-expansion, compliance-buildout) across the run's company data and push signal records.",
            "default": true
          },
          "extractDescriptions": {
            "title": "Extract job descriptions (slower)",
            "type": "boolean",
            "description": "Fetch each job's detail page to extract the full description text. Off by default because the 5 MVP signal detectors run on title, company, location, salary, and posted-date (all card-level data), so detail-page fetches are pure runtime overhead for the intelligence pipeline. Enable only if you specifically need full description text for downstream LLM processing or keyword search. Enabling adds 3-5x to runtime.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy configuration. RESIDENTIAL group is the default and recommended setting; DATACENTER is used as a fallback when residential fails.",
            "default": {
              "useApifyProxy": true,
              "groups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}