{
  "openapi": "3.0.1",
  "info": {
    "title": "Hiring Manager Contacts - Who's Hiring Behind Any Job Posting",
    "description": "Turn a job posting into the likely hiring managers and recruiters behind it: name, role and LinkedIn profile. About 3 in 4 postings return contacts, typically 5-10 each. Paste job IDs from any Hirebase job scraper. Pay only for contacts found. Business contacts only.",
    "version": "1.0",
    "x-build-id": "w3UxOmx6Tb1bfZYMp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hirebase~hiring-manager-contacts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hirebase-hiring-manager-contacts",
        "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/hirebase~hiring-manager-contacts/runs": {
      "post": {
        "operationId": "runs-sync-hirebase-hiring-manager-contacts",
        "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/hirebase~hiring-manager-contacts/run-sync": {
      "post": {
        "operationId": "run-sync-hirebase-hiring-manager-contacts",
        "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": [
          "jobIds"
        ],
        "properties": {
          "jobIds": {
            "title": "Job IDs",
            "type": "array",
            "description": "Hirebase job IDs to find contacts for, one per line (24 characters, like <code>6ac6e956ae5948e03e020a28</code>) - the <code>id</code> column of any Hirebase job actor (Job Search, Fresh Jobs Feed, AI Job Search, the ATS scrapers, Expired Jobs) or the sample postings from Company Search. Postings that expired in the last 30 days work too. Each posting is researched separately; about 3 in 4 return contacts. LinkedIn, Indeed and other job-board URLs don't work.",
            "items": {
              "type": "string"
            }
          },
          "maxJobs": {
            "title": "Max postings",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many of the job IDs to research in this run (up to 100). Postings are researched in parallel and usually finish within 5-10 minutes; start with a few to see the results.",
            "default": 25
          },
          "relationships": {
            "title": "Relationships",
            "type": "array",
            "description": "Only return people with these relationships to the role. Leave empty for everyone. Contacts always come ranked in this order: the hiring manager (the person the role reports to) first, then the leaders of its team, then recruiters and HR. For example, pick <i>Hiring manager</i> and <i>Function leader</i> to skip recruiters and HR. You pay only for the contacts returned; a posting where nobody matches costs nothing.",
            "items": {
              "type": "string",
              "enum": [
                "hiring_manager",
                "function_leader",
                "recruiter",
                "hr",
                "executive",
                "other"
              ],
              "enumTitles": [
                "Hiring manager (the person the role reports to)",
                "Function leader (head, director or VP of the team)",
                "Recruiter / talent acquisition",
                "HR / people team",
                "Executive outside the function (CEO, COO, founder)",
                "Other"
              ]
            }
          },
          "functions": {
            "title": "Functions",
            "type": "array",
            "description": "Only return people in these functions, read from their role title. Leave empty for everyone. Combines with Relationships: a contact must match both. For example, <i>Legal</i>, <i>HR</i> and <i>Recruiting</i> drop COOs, engineers and other roles outside those three.",
            "items": {
              "type": "string",
              "enum": [
                "legal",
                "hr",
                "recruiting",
                "executive",
                "other"
              ],
              "enumTitles": [
                "Legal",
                "HR",
                "Recruiting",
                "Executive",
                "Other (engineering, sales, operations...)"
              ]
            }
          },
          "excludeLinkedinUrls": {
            "title": "Already have: LinkedIn URLs",
            "type": "array",
            "description": "People you already have, one LinkedIn profile URL per line (any form: with or without https://, www. or a country subdomain, query strings). They are never returned or charged, and never cost an email or phone reveal. Up to 10,000 URLs and emails in total.",
            "items": {
              "type": "string"
            }
          },
          "excludeEmails": {
            "title": "Already have: emails",
            "type": "array",
            "description": "People you already have, one email address per line (any letter case). Someone whose revealed email is on this list is dropped, and that reveal is not charged.",
            "items": {
              "type": "string"
            }
          },
          "revealEmails": {
            "title": "Reveal work emails",
            "type": "boolean",
            "description": "Look up a verified work email for every contact found (via Apollo). Charged per email actually found, on top of the contact price; contacts without one cost nothing extra.",
            "default": false
          },
          "revealPhones": {
            "title": "Reveal phone numbers",
            "type": "boolean",
            "description": "Look up a direct phone number (mobile preferred) for every contact found. Charged per number actually found, on top of the contact price. Slower: phone lookups take an extra minute or two per posting.",
            "default": false
          },
          "maxWaitMinutes": {
            "title": "Wait up to (minutes)",
            "minimum": 5,
            "maximum": 1440,
            "type": "integer",
            "description": "How long the run keeps waiting for research to finish. Postings still in progress at the limit keep running on Hirebase; run the actor again with the same job IDs to collect them - they are never queued or charged twice. The default fits the standard 1-hour run timeout; for bigger batches raise both this and the run timeout (Run options).",
            "default": 55
          },
          "retryFailed": {
            "title": "Retry temporary failures",
            "type": "boolean",
            "description": "When Hirebase fails a posting with a temporary error, queue it once more. A posting that failed twice within an hour is retried again on a later run once an hour has passed. Postings where no contacts could be found are never retried.",
            "default": true
          },
          "includePreviouslyReturned": {
            "title": "Include previously returned",
            "type": "boolean",
            "description": "Save contacts again for postings another run of this actor returned in the last 12 hours (charged again). Off by default, so re-running to collect unfinished postings does not charge you twice for the finished ones. Postings returned longer ago are always included.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}