{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper (No Login): Search & Job Alerts",
    "description": "Scrape public LinkedIn job listings without logging in: title, company, location, posting date, full description, seniority, employment type, industries and applicants. Search by keyword and location, filter by date, title and job type, only-new mode for job alerts. Public job pages only: no profile",
    "version": "0.1",
    "x-build-id": "NYUkVV6CXevpPZ4F8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datadesk-io~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datadesk-io-linkedin-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/datadesk-io~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datadesk-io-linkedin-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/datadesk-io~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datadesk-io-linkedin-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": {
          "keywords": {
            "title": "Job keywords",
            "type": "array",
            "description": "Job titles or skills to search, e.g. 'data analyst', 'react developer', 'nurse'. One search per keyword and location. Leave empty to search a location without keywords.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "City, region or country as you would type it on LinkedIn, e.g. 'Austin, Texas', 'Germany', 'Mexico City', 'Remote'. One search per keyword and location pair.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "LinkedIn search URLs (optional)",
            "type": "array",
            "description": "Public job search URLs copied from your browser, e.g. https://www.linkedin.com/jobs/search/?keywords=python&location=Spain&f_TPR=r86400. Only the keywords, location, geoId, distance, date posted (f_TPR) and company (f_C) parts are used.",
            "items": {
              "type": "string"
            }
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "any",
              "24h",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Applied by LinkedIn itself. Use 'Past 24 hours' with a daily schedule for job alerts.",
            "default": "any"
          },
          "jobType": {
            "title": "Job type",
            "type": "array",
            "description": "Keep only jobs of these types. LinkedIn does not offer this filter without a login, so the Actor checks each job's own page; jobs that don't match are skipped and not charged (it takes a few more requests).",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "experienceLevel": {
            "title": "Experience level",
            "type": "array",
            "description": "Keep only jobs with these seniority levels as shown on the job page. Applied by the Actor (not by LinkedIn), so skipped jobs cost extra requests but are never charged.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "mid-senior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep jobs whose title, location or description says remote / work from home. LinkedIn does not offer this filter without a login, so this is text-based and can miss jobs that don't say it.",
            "default": false
          },
          "titleKeywords": {
            "title": "Title must contain (any)",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words (case-insensitive), e.g. 'senior', 'python'.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Exclude titles containing",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, e.g. 'intern', 'manager'.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop jobs from these company names (exact name, case-insensitive), e.g. staffing agencies.",
            "items": {
              "type": "string"
            }
          },
          "includeDescription": {
            "title": "Include job details",
            "type": "boolean",
            "description": "Open every job's public page to get the full description (text + HTML), seniority level, employment type, job function, industries and number of applicants. Turn off for a faster list (title, company, location, date, URL).",
            "default": true
          },
          "maxItems": {
            "title": "Max jobs in total",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on jobs saved (and charged) in the whole run. LinkedIn serves about 1,000 jobs per search. The Actor is deliberately gentle (one request at a time with pauses): about 25-30 jobs per minute with details, so 100 jobs take about 4 minutes and 1,000 jobs about 35-40 minutes. Keep it small for a quick answer.",
            "default": 25
          },
          "maxItemsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap per keyword/location pair. Empty = maxItems divided evenly between the searches."
          },
          "onlyNew": {
            "title": "Only new jobs (job alerts)",
            "type": "boolean",
            "description": "Return only jobs that earlier runs with the same searches (or the same 'State key') did not return. The first run returns everything and remembers it. Schedule it daily with 'Past 24 hours': you pay only for new jobs.",
            "default": false
          },
          "onlyNewSince": {
            "title": "Only jobs new since",
            "type": "string",
            "description": "Date (2026-10-01) or period (7 days, 24 hours). Keeps jobs first seen by this Actor since then; jobs never seen before are judged by their LinkedIn posting date."
          },
          "stateKey": {
            "title": "State key (only-new mode)",
            "type": "string",
            "description": "Name of the memory used by the only-new modes (stored in your key-value store 'linkedin-jobs-scraper-state'). Default: derived from the searches. Use the same key in several tasks to share one memory."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}