{
  "openapi": "3.0.1",
  "info": {
    "title": "Product Manager Jobs Scraper — PM Roles at 461 Tech Companies",
    "description": "Product manager jobs at 461 tech companies (OpenAI, Stripe, Notion, Databricks, Ramp, Coinbase…) from their own job boards — PM, product owner, group and technical PM, head of product: title, team, location, pay range — plus alerts for new roles since your last run.",
    "version": "0.1",
    "x-build-id": "hixS7yadpBDfqnOwz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/northbell~product-manager-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-northbell-product-manager-jobs-scraper",
        "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/northbell~product-manager-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-northbell-product-manager-jobs-scraper",
        "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/northbell~product-manager-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-northbell-product-manager-jobs-scraper",
        "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": {
          "companies": {
            "title": "Only these companies (optional)",
            "type": "array",
            "description": "Leave empty for all 461 companies. Or list names, e.g. \"stripe\", \"databricks\". For any other company use the Greenhouse, Lever or Ashby Jobs Scraper.",
            "items": {
              "type": "string"
            }
          },
          "titleKeywords": {
            "title": "Title contains (optional)",
            "type": "string",
            "description": "Comma-separated. Empty = product management roles (product manager, product owner, product lead, head/director/VP of product, group or technical product manager, product operations). Type your own words to search other roles."
          },
          "locationKeywords": {
            "title": "Location contains (optional)",
            "type": "string",
            "description": "Comma-separated, e.g. \"new york, london, remote\"."
          },
          "remoteOnly": {
            "title": "Remote roles only",
            "type": "boolean",
            "description": "Keep only roles the board marks as remote.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days (optional)",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only roles first published in the last N days. Roles with no publish date are left out when you set this, and counted in OUTPUT."
          },
          "experienceLevels": {
            "title": "Experience level (optional)",
            "type": "array",
            "description": "Keep only these levels, read from the job title (the same words on every northbell job scraper; each row also gets a seniority column). Product, account and other non-people \"managers\" count as mid level.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "entry",
                "mid",
                "senior",
                "lead",
                "manager",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Intern / apprentice",
                "Entry level / junior / new grad",
                "Mid level (no level word in the title)",
                "Senior",
                "Lead / staff / principal",
                "People manager",
                "Director / head of",
                "VP / C-level"
              ]
            }
          },
          "employmentTypes": {
            "title": "Employment type (optional)",
            "type": "array",
            "description": "From the board's own employment type (Lever and Ashby state it; Greenhouse rarely does), else from the title. Roles whose type is not stated are left out when you set this, and counted in OUTPUT.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Contract / freelance",
                "Temporary",
                "Internship"
              ]
            }
          },
          "withSalaryOnly": {
            "title": "Only roles with a published pay range",
            "type": "boolean",
            "description": "Keep only roles where the company published a pay range.",
            "default": false
          },
          "includeDescription": {
            "title": "Include the full description",
            "type": "boolean",
            "description": "Off by default for a smaller, faster table. Turn on if you need the text.",
            "default": false
          },
          "output": {
            "title": "What to return",
            "enum": [
              "all",
              "changes"
            ],
            "type": "string",
            "description": "Schedule this Actor weekly or daily and pick \"Only new\" to pay only for new roles. The first run returns everything (there is nothing to compare with yet). Closed roles and the per-company summary rows are always free.",
            "default": "all"
          },
          "trackChanges": {
            "title": "Report new and closed roles since the last run",
            "type": "boolean",
            "description": "Exact, because each board returns every open role at once. First run marks everything as unknown (null).",
            "default": true
          },
          "maxJobsPerCompany": {
            "title": "Max roles per company",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stops returning roles from one company after this many. The new/closed comparison still uses the whole board.",
            "default": 1000
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}