{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Company Jobs Scraper — Every Open Role, No Cookies",
    "description": "Give it a company - LinkedIn URL, website, name or numeric ID - and get every role it has open on LinkedIn right now: title, location, the exact posting date and a link. Turn on trackChanges to see which roles opened and closed since the last run. No login, no cookies.",
    "version": "0.1",
    "x-build-id": "Y1Qg1WrLSroY9LdbN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/northbell~linkedin-company-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-northbell-linkedin-company-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~linkedin-company-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-northbell-linkedin-company-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~linkedin-company-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-northbell-linkedin-company-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",
        "required": [
          "companies"
        ],
        "properties": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "LinkedIn company page URL, slug or numeric ID — or simply the company website (stripe.com) or its name (Scale AI). A website is matched to the LinkedIn page whose own website is the same, so stripe.com returns Stripe. Country subdomains (uk.linkedin.com/...) work too.",
            "items": {
              "type": "string"
            }
          },
          "lookUpNames": {
            "title": "Look up company names on Wikidata",
            "type": "boolean",
            "description": "For plain company names (Scale AI, McDonald's, anthropic), also look the name up on Wikidata, which records many companies' LinkedIn page and official website. A page is used only when its website matches the one Wikidata lists. Adds about 4 seconds per name the first time (answers are remembered for 30 days). Turn off if your list is only LinkedIn URLs, handles and websites.",
            "default": true
          },
          "maxJobsPerCompany": {
            "title": "Jobs per company",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Set this ABOVE the company's real number of open roles. LinkedIn does not offer stable deep paging, so the Actor keeps fetching until nothing new appears; if it stops at this ceiling instead, collection is incomplete and change tracking is withheld (opened/closed come back as null). You are charged per job returned, not per request, so a generous ceiling is free.",
            "default": 1000
          },
          "trackChanges": {
            "title": "Track what changed since last run",
            "type": "boolean",
            "description": "OFF by default. When ON, each run compares this roster with the previous run's and reports opened/closed roles - only when both runs reached the target coverage and used the same filters; otherwise opened/closed come back as null with a reason. Exact for small rosters or narrow filters (e.g. datePosted = past 24 hours); for a large company use targetCoverage 0.999. No extra requests.",
            "default": false
          },
          "keywords": {
            "title": "Filter by keywords (optional)",
            "type": "string",
            "description": "Narrow to roles matching a phrase, on top of the company filter."
          },
          "location": {
            "title": "Filter by location (optional)",
            "type": "string",
            "description": "City, region or country as LinkedIn spells it - \"United States\", \"Berlin, Germany\"."
          },
          "datePosted": {
            "title": "Posted within",
            "enum": [
              "any",
              "past-24-hours",
              "past-week",
              "past-month"
            ],
            "type": "string",
            "description": "Narrowing to the last week is the usual choice for a weekly run, and it is what the form starts with: a full roster of a large company needs several hundred requests, which takes minutes. Set it to \"Any time\" when you want the whole roster.",
            "default": "any"
          },
          "maxRequestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Lower it if you run many companies at once.",
            "default": 30
          },
          "targetCoverage": {
            "title": "Target coverage",
            "enum": [
              "0.9",
              "0.99",
              "0.999",
              "0.9999"
            ],
            "type": "string",
            "description": "How completely to collect before stopping. The Actor estimates its own coverage by mark-and-recapture and keeps sampling until it reaches this. Higher costs more requests (time), not more money.",
            "default": "0.99"
          },
          "maxRequests": {
            "title": "Request ceiling per company",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "Safety stop. A company with 880 open roles needed about 450 requests to reach full coverage, so raise this when you ask for a whole roster. The form starts at 30, which bounds a first run to about a minute per company at the default rate; collection stops there and says so (collectionComplete: false) rather than running for 10 minutes.",
            "default": 900
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}