{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper: $0.50 per 1,000 Jobs, No Login",
    "description": "Scrape public LinkedIn job offers without an account: title, company, location, date, full description, seniority, employment type, salary when shown, applicants and company details. Search with keywords and a location, or paste search URLs. $0.50 per 1,000 jobs, all included.",
    "version": "1.0",
    "x-build-id": "eCCqHtUy5A9DXkvr1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fit_melon~linkedin-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fit_melon-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/fit_melon~linkedin-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fit_melon-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/fit_melon~linkedin-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fit_melon-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": "🔎 Keywords (job title, skill, company)",
            "type": "string",
            "description": "What you would type in LinkedIn's job search box, e.g. 'data engineer' or 'nurse'. Leave empty to get all jobs of a location."
          },
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "City, region or country, as on LinkedIn: 'London', 'Paris, Île-de-France, France', 'Germany', 'United States'. Leave empty for worldwide."
          },
          "searchUrls": {
            "title": "🔗 Or LinkedIn job search URLs",
            "type": "array",
            "description": "Search on linkedin.com/jobs (logged out or not), copy the URL from the address bar and paste it here. Its keywords, location, date posted and company filters are used. One search per URL.",
            "items": {
              "type": "string"
            }
          },
          "maxJobs": {
            "title": "Maximum jobs per search",
            "minimum": 0,
            "type": "integer",
            "description": "Jobs to deliver for each search (each URL, or each keywords + location). 0 = all the jobs LinkedIn shows. You pay only for delivered jobs, never for duplicates.",
            "default": 100
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "anyTime",
              "past24Hours",
              "pastWeek",
              "pastMonth",
              "",
              "r86400",
              "r604800",
              "r2592000"
            ],
            "type": "string",
            "description": "Only jobs posted in this period.",
            "default": "anyTime"
          },
          "contractTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Only these employment types (as shown on the job page). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "F",
                "P",
                "C",
                "T",
                "I",
                "V",
                "O"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Only these seniority levels (as shown on the job page). Jobs marked 'Not Applicable' by the employer are left out when a level is chosen. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "easyApply": {
            "title": "Easy Apply jobs only",
            "type": "boolean",
            "description": "Only jobs you apply to on LinkedIn (Easy Apply), not on the company's website.",
            "default": false
          },
          "onlyWithSalary": {
            "title": "Only jobs that show a salary",
            "type": "boolean",
            "description": "Keep only jobs whose LinkedIn page shows a pay range (from 5 % in Germany to 15.5 % in the United States in our tests).",
            "default": false
          },
          "excludeRecruitingAgencies": {
            "title": "Exclude recruiting agencies",
            "type": "boolean",
            "description": "Skip jobs posted in the 'Staffing and Recruiting' industry.",
            "default": false
          },
          "companyIds": {
            "title": "Company IDs",
            "type": "array",
            "description": "LinkedIn company IDs (the f_C value of a LinkedIn search URL, e.g. 1066442). Applied by LinkedIn.",
            "items": {
              "type": "string"
            }
          },
          "companyName": {
            "title": "Only companies whose name contains",
            "type": "array",
            "description": "Keep only jobs whose company name contains one of these words (not case sensitive).",
            "items": {
              "type": "string"
            }
          },
          "companyExclude": {
            "title": "Exclude companies whose name contains",
            "type": "array",
            "description": "Skip jobs whose company name contains one of these words, e.g. recruiting agencies.",
            "items": {
              "type": "string"
            }
          },
          "titleInclude": {
            "title": "Job title must contain",
            "type": "array",
            "description": "Keep only jobs whose title contains one of these words (not case sensitive).",
            "items": {
              "type": "string"
            }
          },
          "titleExclude": {
            "title": "Job title must not contain",
            "type": "array",
            "description": "Skip jobs whose title contains one of these words, e.g. 'senior' or 'intern'.",
            "items": {
              "type": "string"
            }
          },
          "includeDescription": {
            "title": "Include the job description",
            "type": "boolean",
            "description": "Full job description (clean text with paragraphs and lists, plus safe HTML), seniority level, employment type, industries, applicants, salary and apply type (one job page per job). Off = only what the search list shows: faster.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Also give the description as HTML",
            "type": "boolean",
            "description": "Adds descriptionHtml (safe HTML: paragraphs, lists, bold, italics, headings; no link, no attribute) next to the plain-text description. Off = items about half the size.",
            "default": true
          },
          "includeCompanyDetails": {
            "title": "Include company details",
            "type": "boolean",
            "description": "Public company page: industry, size (text and numbers), website and domain, address and country, headquarters, type, founded year, specialties, slogan, followers, members on LinkedIn, description. Included in the price; a little slower (one page per company).",
            "default": false
          },
          "outputFormat": {
            "title": "Output field names",
            "enum": [
              "auto",
              "standard",
              "curious_coder",
              "valig"
            ],
            "type": "string",
            "description": "Moving from another LinkedIn jobs scraper? Adds its main field names next to ours (id, link/url, descriptionText, postedDate, contractType…), so most Make, n8n or Zapier mappings keep working. Recruiter fields are never delivered. 'Auto' detects it from input fields only that scraper uses.",
            "default": "auto"
          },
          "splitSearch": {
            "title": "Go past LinkedIn's ~1,000 positions per search",
            "type": "boolean",
            "description": "LinkedIn shows at most about 1,000 positions per search (often about 800 distinct jobs). When a search reaches it, the same search is also run on the past month, week and day to reach more jobs. Duplicates are removed.",
            "default": true
          },
          "onlyNewJobs": {
            "title": "Only new jobs (for scheduled runs)",
            "type": "boolean",
            "description": "Each search remembers the jobs it delivered (job IDs only, in a key-value store of your Apify account) and skips them in later runs: you get and pay only for jobs you did not get before. Combine with 'Date posted' (past 24 hours or past week) so each run reads a short list instead of going deep into older jobs.",
            "default": false
          },
          "seenJobsStoreName": {
            "title": "Store for 'Only new jobs'",
            "type": "string",
            "description": "Name of the key-value store of your account that keeps the delivered job IDs (letters, digits, hyphens). Use another name to start from scratch, or one name per project.",
            "default": "linkedin-jobs-seen"
          },
          "geoId": {
            "title": "LinkedIn geoId",
            "type": "string",
            "description": "Optional LinkedIn location ID (geoId of a LinkedIn search URL), used instead of the location text."
          },
          "skipJobIds": {
            "title": "Job IDs to skip",
            "type": "array",
            "description": "LinkedIn job IDs you already have (jobId of earlier runs): they are neither delivered nor charged. Useful for scheduled runs.",
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Job pages fetched in parallel (at most 6 requests per second in any case). The actor also slows down by itself when LinkedIn asks it to.",
            "default": 18
          },
          "residentialFallback": {
            "title": "Residential proxy fallback",
            "type": "boolean",
            "description": "When LinkedIn blocks the datacenter proxies, retry some requests through residential proxies (included in the price, limited per run).",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy (datacenter) is used by default and is included in the price.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}