{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper by URL — Listings, Salaries (No Login)",
    "description": "Scrape LinkedIn job listings by search URL — extract job title, company, salary, location, skills and apply links. No login, no API key, no rate limits. Bypass anti-bot detection. CSV/JSON output. Pay per result. Proxycurl alternative for job board scraping and recruiter lead generation.",
    "version": "1.5",
    "x-build-id": "KZs9KQcRLoQyuHFAA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cryptosignals~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cryptosignals-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/cryptosignals~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cryptosignals-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/cryptosignals~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cryptosignals-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",
        "required": [
          "action"
        ],
        "properties": {
          "action": {
            "title": "Action",
            "enum": [
              "search",
              "job"
            ],
            "type": "string",
            "description": "What to do: 'search' to find jobs by keywords, 'job' to get full details of a specific job.",
            "default": "search"
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Search keywords (e.g. 'python developer', 'data engineer'). Used with action=search.",
            "default": "python developer"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Location filter (e.g. 'United States', 'London', 'Remote'). Used with action=search."
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Upper bound on job listings to return — up to 1,000 per run here; the HTTP standby interface caps at 100 per request. A ceiling, not a guarantee: LinkedIn's public job search stops paginating well before 1,000 for most queries, so large values usually return fewer rows. When that happens the run's status message says the search ended early.",
            "default": 5
          },
          "fetchDetails": {
            "title": "Fetch Full Details",
            "type": "boolean",
            "description": "When enabled (the default), search mode fetches the full posting for every result — description, applicants, seniority, employment type, job function, industries and apply info — the same fields action=job returns. It is slower because one extra page is fetched per job; the price per row is the same either way. Detail fetching is time-budgeted: rows still waiting for their detail page when the run's remaining time runs out come back with the 6 base fields at the same price — a longer run timeout yields more detailed rows. Set to false to get only the 6-field summary rows.",
            "default": true
          },
          "datePosted": {
            "title": "Date Posted",
            "enum": [
              "any",
              "past24h",
              "pastWeek",
              "pastMonth"
            ],
            "type": "string",
            "description": "Filter search results by posting age. Used with action=search. Note: 'past24h' can legitimately return the paid no-results notice more often — fewer postings match.",
            "default": "any"
          },
          "companyIds": {
            "title": "Company IDs",
            "maxItems": 10,
            "type": "array",
            "description": "Restrict results to these LinkedIn company IDs (numeric strings, e.g. \"1068\" for JPMorganChase — find it in the company's LinkedIn page URL or via our actor's companyId output field). Server-side filter, up to 10 IDs. Used with action=search.",
            "items": {
              "type": "string",
              "pattern": "^\\d+$"
            }
          },
          "experienceLevels": {
            "title": "Experience Levels",
            "type": "array",
            "description": "Keep only jobs whose seniority matches one of these values. Client-side filter: it requires full details (forces fetchDetails on) and scans extra listings — most LinkedIn jobs mark seniority 'Not Applicable', so a narrow choice can scan many jobs before matching. Several values are OR-ed; combined with Job Types both must match.",
            "items": {
              "type": "string",
              "enum": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "jobTypes": {
            "title": "Job Types",
            "type": "array",
            "description": "Keep only jobs whose employment type matches one of these values. Client-side filter: it requires full details (forces fetchDetails on) and scans extra listings until maxItems match (bounded — see README). Several values are OR-ed; combined with Experience Levels both must match.",
            "items": {
              "type": "string",
              "enum": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Volunteer",
                "Internship",
                "Other"
              ]
            }
          },
          "easyApply": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "LinkedIn's own 'Easy Apply' filter — jobs you apply to on LinkedIn itself. With detail fetching on, each row is additionally checked client-side and clearly-external applies are dropped; undetectable rows are kept.",
            "default": false
          },
          "under10Applicants": {
            "title": "Under 10 applicants",
            "type": "boolean",
            "description": "LinkedIn's own 'Under 10 applicants' filter — early postings only. With detail fetching on, rows are additionally checked client-side and jobs with a visible count over 10 are dropped.",
            "default": false
          },
          "url": {
            "title": "Job URL",
            "type": "string",
            "description": "Full LinkedIn job URL or job ID. Used with action=job. Example: https://www.linkedin.com/jobs/view/1234567890"
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Optional proxy settings. Use Apify Proxy or a custom proxy to avoid rate limiting.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}