{
  "openapi": "3.0.1",
  "info": {
    "title": "🏆 AI Powered Linkedin Job Scraper⚡ Advanced Data Best Value 🏆",
    "description": "Scrape public LinkedIn job search results by keyword/location or search URL. Includes job description, criteria, and company info — no login required.",
    "version": "1.0",
    "x-build-id": "4TJH1RdOkWUxgzz9V"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/claygenius~cheapest-linkedin-job-scrapper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-claygenius-cheapest-linkedin-job-scrapper",
        "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/claygenius~cheapest-linkedin-job-scrapper/runs": {
      "post": {
        "operationId": "runs-sync-claygenius-cheapest-linkedin-job-scrapper",
        "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/claygenius~cheapest-linkedin-job-scrapper/run-sync": {
      "post": {
        "operationId": "run-sync-claygenius-cheapest-linkedin-job-scrapper",
        "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": {
          "searchUrls": {
            "title": "LinkedIn Jobs Search URLs",
            "type": "array",
            "description": "One or more LinkedIn jobs search URLs — every filter in the URL (keyword, location, date, remote, etc.) is preserved. Tip: build the URL in an incognito window; public results differ from logged-in results.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Job Keyword",
            "type": "string",
            "description": "Job title or keyword, e.g. Software Engineer."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, or country, e.g. Berlin, Germany, United States."
          },
          "postedWithin": {
            "title": "Posted Within",
            "enum": [
              "",
              "r86400",
              "r604800",
              "r2592000"
            ],
            "type": "string",
            "description": "Only jobs posted within this time window."
          },
          "easyApplyOnly": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs you can apply to without leaving LinkedIn. Off by default."
          },
          "maxItems": {
            "title": "Number of Jobs Needed",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of unique job listings to scrape. Leave empty (or 0) to scrape ALL results.",
            "default": 0
          },
          "maxJobsPerCompany": {
            "title": "Max Jobs Per Employer",
            "type": "integer",
            "description": "0 by default, which means ALL jobs from every employer. Set 2-10 to stop one large company flooding your results and spread the same number of jobs across far more employers. Skipped jobs do not count towards Max Items.",
            "default": 0
          },
          "fetchCompanyDetails": {
            "title": "Fetch company details",
            "type": "boolean",
            "description": "ON by default. Adds companyEmployeesCount, companyWebsite, companyDomain, companyIndustry, companyHeadquarters, companyType, companyFounded, companySpecialties and companyDescription. Costs ONE extra request per employer (cached, so 30 jobs at one company is one request). Switch OFF to roughly halve the requests and finish much faster: the company page is an ordinary LinkedIn web page, not the guest API, and it is the request that gets blocked with HTTP 999. Job data — description, recruiter, salary, applicants — is unaffected either way. Note the staffing filter loses its industry and domain signals when this is off.",
            "default": true
          },
          "removeStaffingCompanies": {
            "title": "Remove staffing companies automatically",
            "type": "boolean",
            "description": "Drops any job whose COMPANY NAME, DOMAIN or LINKEDIN INDUSTRY contains one of the words below. Free and instant — no OpenAI key, no AI call. Whole words only, so Staffordshire, Cheshire and Jobst are safe. WARNING: deliberately aggressive. The default list includes 'job', 'jobs' and 'talent', which will also remove real employers with those words in their name. Edit the word list below if that costs you too much."
          },
          "staffingWords": {
            "title": "Words that mean 'staffing company'",
            "type": "array",
            "description": "Used by the toggle above. Leave as-is for the default list, or edit it — whatever is here REPLACES the default entirely. Remove 'job', 'jobs' or 'talent' if they catch real employers; add your own, e.g. a local agency chain. Whole-word matching, not case-sensitive, and dots and hyphens count as breaks so 'elite-staffing.com' matches.",
            "default": [
              "staff",
              "staffing",
              "staffed",
              "recruit",
              "recruits",
              "recruiter",
              "recruiters",
              "recruiting",
              "recruitment",
              "talent",
              "talents",
              "hire",
              "hiring",
              "hires",
              "headhunter",
              "headhunters",
              "headhunting",
              "personnel",
              "employment",
              "placement",
              "placements",
              "manpower",
              "workforce",
              "resourcing",
              "temp",
              "temps",
              "temping",
              "job",
              "jobs",
              "jobot",
              "hr",
              "human resources",
              "humanresources"
            ],
            "items": {
              "type": "string"
            }
          },
          "staffingMatchIn": {
            "title": "...matched against",
            "type": "array",
            "description": "Which company fields the words above are checked in. All three by default. Industry is the strongest — it catches agencies whose name reveals nothing but whose LinkedIn industry is 'Staffing and Recruiting'. Untick a field to stop matching there, e.g. drop Company name if it is removing real employers.",
            "items": {
              "type": "string",
              "enum": [
                "company",
                "companyDomain",
                "companyIndustry"
              ],
              "enumTitles": [
                "Company name",
                "Company domain",
                "LinkedIn industry"
              ]
            },
            "default": [
              "company",
              "companyDomain",
              "companyIndustry"
            ]
          },
          "includeWords": {
            "title": "Keep only jobs containing",
            "type": "array",
            "description": "Add words one at a time. A job is kept if ANY of them appears in the fields you pick below. Whole words only — 'software' matches \"Software Engineer\" and \"software-engineer\", but not \"Softwareentwickler\". Not case-sensitive. Punctuation is fine: c++, .net, node.js.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeIn": {
            "title": "...looking in",
            "type": "array",
            "description": "Which fields to search for the words above. Pick more than one to widen the net.",
            "items": {
              "type": "string",
              "enum": [
                "title",
                "description",
                "companyDescription"
              ],
              "enumTitles": [
                "Job title",
                "Job description",
                "Company description"
              ]
            },
            "default": [
              "title"
            ]
          },
          "excludeWords": {
            "title": "Drop jobs containing",
            "type": "array",
            "description": "Add words one at a time. A job is dropped if ANY of them appears in the fields you pick below — e.g. intern, graduate, unpaid. Same whole-word matching.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeIn": {
            "title": "...looking in",
            "type": "array",
            "description": "Which fields to search for the words above.",
            "items": {
              "type": "string",
              "enum": [
                "title",
                "description",
                "companyDescription"
              ],
              "enumTitles": [
                "Job title",
                "Job description",
                "Company description"
              ]
            },
            "default": [
              "title"
            ]
          },
          "aiAgencyFilter": {
            "title": "Use AI as well?",
            "enum": [
              "off",
              "flagAgenciesOnly",
              "removeAgencies"
            ],
            "type": "string",
            "description": "Works out whether an employer is a staffing agency or headhunter rather than a company hiring for itself. Model used: OpenAI gpt-4o-mini — the cheapest one that classifies this reliably, and the only model this Actor uses. A free name screen runs first and needs no key; add an OpenAI key below and it also reads company descriptions. Start with 'Flag agencies only' so you can check the verdicts before trusting it.",
            "default": "off"
          },
          "openaiApiKey": {
            "title": "OpenAI API Key",
            "type": "string",
            "description": "Your own key (sk-...), billed to your OpenAI account. Used only for the filter above, and only with gpt-4o-mini — the cheapest model that classifies this reliably. Without a key the free name screen still runs."
          },
          "webhookUrl": {
            "title": "Send results to a webhook",
            "type": "string",
            "description": "Optional. Each job is POSTed to your URL as JSON, one request per job, as it is scraped. Leave empty to skip.",
            "default": ""
          },
          "proxyConfig": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Residential proxies recommended for large scrapes."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}