{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Job Postings Scraper",
    "description": "Scrape LinkedIn job postings without login by keyword and location: title, company, location, posting date, seniority, employment type, industries, applicants, salary, full description, job poster and apply type. Filters for date, remote, job type, experience. Export, schedule or call via API.",
    "version": "0.1",
    "x-build-id": "SP0ngeOGTLs7XSJiA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blueskyscraper~linkedin-job-postings-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blueskyscraper-linkedin-job-postings-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/blueskyscraper~linkedin-job-postings-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blueskyscraper-linkedin-job-postings-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/blueskyscraper~linkedin-job-postings-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blueskyscraper-linkedin-job-postings-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 titles or keywords",
            "type": "array",
            "description": "What you would type into LinkedIn's job search: <code>data analyst</code>, <code>python developer</code>, <code>nurse</code>. Each keyword is searched in each location.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "City, region or country as LinkedIn spells it: <code>New York, NY</code>, <code>London, England, United Kingdom</code>, <code>Germany</code>, <code>Worldwide</code>. Empty = LinkedIn's default (worldwide).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 LinkedIn search URLs",
            "type": "array",
            "description": "Paste a LinkedIn job search link with your filters already set (<code>https://www.linkedin.com/jobs/search/?keywords=designer&location=Berlin&f_TPR=r604800</code>). Job links and company links pasted here work too.",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "🏢 Companies",
            "type": "array",
            "description": "All open jobs of these companies. Paste a LinkedIn company URL (<code>https://www.linkedin.com/company/stripe</code>), the numeric company ID (<code>1441</code>) or just the name (<code>HubSpot</code>). Keywords, if given, narrow each company's jobs.",
            "items": {
              "type": "string"
            }
          },
          "jobUrls": {
            "title": "🔗 Job URLs or IDs",
            "type": "array",
            "description": "LinkedIn job links (<code>https://www.linkedin.com/jobs/view/4472178009</code>, links with <code>currentJobId=</code>) or bare job IDs (<code>4472178009</code>). Each becomes one full job row.",
            "items": {
              "type": "string"
            }
          },
          "maxJobsPerQuery": {
            "title": "💯 Jobs per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap for each keyword × location pair, each company and each search URL — not for the whole run. LinkedIn shows at most about 1,000 jobs per search; split big searches by location or date to get more.",
            "default": 100
          },
          "datePosted": {
            "title": "📅 Posted within",
            "enum": [
              "any",
              "hour",
              "day",
              "week",
              "month"
            ],
            "type": "string",
            "description": "LinkedIn's own date filter.",
            "default": "any"
          },
          "workplaceTypes": {
            "title": "🏠 Workplace",
            "type": "array",
            "description": "On-site, remote, hybrid — any combination. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "onsite",
                "remote",
                "hybrid"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            }
          },
          "jobTypes": {
            "title": "⏱️ Job types",
            "type": "array",
            "description": "Empty = all job types.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "experience": {
            "title": "🎓 Experience level",
            "type": "array",
            "description": "Empty = all levels.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "mid",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "radius": {
            "title": "📏 Distance from location (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "LinkedIn's distance filter around a city: <code>5</code>, <code>10</code>, <code>25</code>, <code>50</code> or <code>100</code>. Empty = LinkedIn's default."
          },
          "easyApplyOnly": {
            "title": "⚡ Easy Apply jobs only",
            "type": "boolean",
            "description": "Only jobs you apply to on LinkedIn itself.",
            "default": false
          },
          "under10ApplicantsOnly": {
            "title": "🌱 Fewer than 10 applicants",
            "type": "boolean",
            "description": "LinkedIn's \"Under 10 applicants\" filter: fresh jobs few people applied to.",
            "default": false
          },
          "excludeCompanies": {
            "title": "🚫 Skip companies",
            "type": "array",
            "description": "Leave out jobs whose company name contains any of these words — e.g. staffing agencies: <code>Jobot</code>, <code>Robert Half</code>. Skipped jobs are free.",
            "items": {
              "type": "string"
            }
          },
          "includeContacts": {
            "title": "📧 Emails and phones from the job post ($ $0.003 per job that has one)",
            "type": "boolean",
            "description": "Find e-mail addresses and phone numbers written inside the job description (recruiters often add them). Charged only on jobs where at least one was found.",
            "default": false
          },
          "enrichCompanyContacts": {
            "title": "🌐 Company website contacts ($ $0.008 per company found)",
            "type": "boolean",
            "description": "Open each hiring company's LinkedIn page, take its website and read the home and contact pages: e-mails, phones and social links. Charged once per company, only when an e-mail or phone was found.",
            "default": false
          },
          "maxCompaniesToEnrich": {
            "title": "Companies to look up per run",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Ceiling for the company website lookup — each company is looked up once per run.",
            "default": 100
          },
          "includeDescription": {
            "title": "📄 Open each job page",
            "type": "boolean",
            "description": "Full description, seniority, employment type, industries, applicants, job poster and apply type. Off = only what the search card shows (title, company, location, date, salary) — faster, same price.",
            "default": true
          },
          "includeCompanyDetails": {
            "title": "🏢 Company details (free)",
            "type": "boolean",
            "description": "Read each hiring company's LinkedIn page once per run and add its website and domain, industry, size, employees on LinkedIn, followers, headquarters, founded year, type, specialties, description and tagline to every job row. Free — no extra charge.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Description as HTML too",
            "type": "boolean",
            "description": "Add <code>descriptionHtml</code> with LinkedIn's formatting (lists, bold).",
            "default": false
          },
          "onlyNewJobsStoreName": {
            "title": "🔔 Only new jobs — name this search",
            "type": "string",
            "description": "Give the search a name (e.g. <code>nyc-data-jobs</code>) and every later run with the same name returns <b>only jobs it has not delivered before</b>. Schedule it daily for a job alert. Empty = normal run."
          },
          "maxItems": {
            "title": "Maximum jobs per run",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many jobs in the whole run — a hard ceiling on cost.",
            "default": 20000
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave as is: the Actor picks its own routes to LinkedIn. With your own proxy URLs, only those are used.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}