{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Jobs Scraper | AI Enrichment",
    "description": "Get up to 1,000 LinkedIn jobs per run with full descriptions and original links. Skip repeat jobs for alerts, job boards, and spreadsheets. Add AI enrichment and English translation when needed.",
    "version": "1.0",
    "x-build-id": "hpMKh6iaZajiM0RTd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nomad-agent~linkedin-enrich-translate-normalize-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nomad-agent-linkedin-enrich-translate-normalize-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/nomad-agent~linkedin-enrich-translate-normalize-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nomad-agent-linkedin-enrich-translate-normalize-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/nomad-agent~linkedin-enrich-translate-normalize-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nomad-agent-linkedin-enrich-translate-normalize-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": [
          "schemaVersion"
        ],
        "properties": {
          "firstRunMode": {
            "title": "First-run mode",
            "type": "boolean",
            "description": "Run a small enriched evaluation without changing the search fields below. When enabled, the Actor caps effective maxItems at 5, uses Silver AI enrichment, translates supported fields to English, disables cross-run deduplication, returns raw as null, and keeps anonymous analytics off. AI enrichment and translation are paid events. Start with a $0.10 maximum cost per run; the cap can reduce or stop output, and the Pricing tab is authoritative. Disable this mode after evaluation to use your explicit feature and delivery settings.",
            "default": false
          },
          "keyword": {
            "title": "Job keyword",
            "type": "string",
            "description": "Job title, skill or role to search for (e.g. <code>software engineer</code>, <code>product manager react</code>). Leave empty to search all recent postings for the given location."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or country to filter by (e.g. <code>Spain</code>, <code>London</code>, <code>European Union</code>). Leave empty for worldwide results."
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "1h",
              "24h",
              "7d",
              "30d",
              "any"
            ],
            "type": "string",
            "description": "Return jobs within the selected publication window. <code>any</code> removes the publication-time filter.",
            "default": "24h"
          },
          "orderBy": {
            "title": "Result order",
            "enum": [
              "newest",
              "oldest"
            ],
            "type": "string",
            "description": "Order matching results by publication date. Unknown posting dates sort last; LinkedIn job ID and canonical URL break ties consistently.",
            "default": "newest"
          },
          "workArrangements": {
            "title": "Work arrangements",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional LinkedIn workplace filter. Selecting multiple values requests their union. An explicit matching arrangement is returned exactly and an explicit contradiction is excluded. When the search matches but the exact per-job arrangement is unavailable, the row remains eligible and <code>data.employment.workArrangements</code> remains <code>null</code>. Omit this field to include every arrangement.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            }
          },
          "linkedinSearch": {
            "title": "Multiple LinkedIn searches (advanced)",
            "required": [
              "schemaVersion"
            ],
            "type": "object",
            "description": "Run up to eight keyword/location searches together and deduplicate their combined results. Omit this field or leave searches empty to use the keyword and location above. A non-empty advanced search plan takes precedence over the top-level keyword and location retained by the Console form.",
            "properties": {
              "schemaVersion": {
                "title": "LinkedIn search schema version",
                "description": "Version of the source-specific LinkedIn search extension.",
                "type": "string",
                "default": "nomad-agent-linkedin-search-v2",
                "enum": [
                  "nomad-agent-linkedin-search-v2"
                ]
              },
              "searches": {
                "title": "Search partitions",
                "type": "array",
                "description": "Independent LinkedIn keyword/location searches. Array order controls discovery priority; top-level orderBy controls final result order.",
                "maxItems": 8,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "keyword",
                    "location"
                  ],
                  "properties": {
                    "keyword": {
                      "title": "Keyword",
                      "description": "Job title, skill, or role for this partition.",
                      "type": "string"
                    },
                    "location": {
                      "title": "Location",
                      "description": "Location text for this partition.",
                      "type": "string"
                    }
                  }
                }
              }
            },
            "additionalProperties": false
          },
          "filters": {
            "title": "Advanced normalized job filters",
            "type": "object",
            "description": "Use a nomad-agent-job-filter-v1 AND/OR expression over supported normalized fields. Filters use source-language values before optional translation. With AI enrichment enabled, the final expression sees supported null fields filled by AI; without AI, unknown facts do not become guessed matches. See the README for examples.",
            "properties": {
              "schemaVersion": {
                "title": "Filter schema version",
                "description": "Version of the normalized job-filter expression contract.",
                "type": "string",
                "enum": [
                  "nomad-agent-job-filter-v1"
                ]
              },
              "expression": {
                "title": "Filter expression",
                "description": "Strict AND/OR expression over allowlisted normalized fields.",
                "type": "object"
              }
            },
            "additionalProperties": false
          },
          "strictGeography": {
            "title": "Strict physical geography",
            "required": [
              "schemaVersion"
            ],
            "type": "object",
            "description": "Optional source-backed physical country, region, or city enforcement. This is independent from the Location search hint and is never inferred from it. All requested parts must match the same location. Unknown source geography is excluded by default or can abort the run; description prose is not accepted as location evidence.",
            "properties": {
              "schemaVersion": {
                "title": "Strict geography schema version",
                "description": "Version of the source-only strict geography contract.",
                "type": "string",
                "enum": [
                  "nomad-agent-linkedin-strict-geography-v1"
                ]
              },
              "countries": {
                "title": "Allowed countries",
                "description": "Uppercase ISO-3166 alpha-2 country codes; at least one country, region, or city target is required.",
                "type": "array",
                "maxItems": 25,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^[A-Z]{2}$"
                }
              },
              "regions": {
                "title": "Allowed regions",
                "description": "Exact case-insensitive source region names; combined with other axes on the same location object.",
                "type": "array",
                "maxItems": 25,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "cities": {
                "title": "Allowed cities",
                "description": "Exact case-insensitive source city names; combined with other axes on the same location object.",
                "type": "array",
                "maxItems": 25,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "unknownPolicy": {
                "title": "Unknown-location policy",
                "description": "Exclude rows whose requested axes cannot be proven, or abort the whole run instead.",
                "type": "string",
                "enum": [
                  "exclude",
                  "abort"
                ]
              }
            },
            "additionalProperties": false
          },
          "companyProfileEnrichment": {
            "title": "Enrich public company profiles",
            "type": "boolean",
            "description": "Add exact public company facts from the canonical LinkedIn company page already linked by a selected job. Without companyFilters, an unavailable or unverifiable page is fail-open: the complete base job remains and custom is null. This option has no separate pay-per-event charge.",
            "default": false
          },
          "companyFilters": {
            "title": "Advanced company filters",
            "required": [
              "schemaVersion",
              "expression"
            ],
            "type": "object",
            "description": "Filter jobs by supported public company-profile facts. Requires companyProfileEnrichment=true. An unavailable or unverifiable profile is unknown, even for is_null predicates: unknownPolicy=exclude removes that job, while unknownPolicy=abort fails the run. Verified profiles that simply lack a field are evaluated normally.",
            "properties": {
              "schemaVersion": {
                "title": "Company filter schema version",
                "description": "Version of the source-specific public company filter contract.",
                "type": "string",
                "enum": [
                  "nomad-agent-linkedin-company-filter-v1"
                ]
              },
              "expression": {
                "title": "Company filter expression",
                "description": "Recursive all, any, or not groups and allowlisted typed company-profile predicates. See the README for fields and operators.",
                "type": "object"
              },
              "unknownPolicy": {
                "title": "Unavailable-profile policy",
                "description": "exclude keeps jobs with unavailable or unverifiable profiles out; abort fails the run instead. This policy does not change how verified profiles with null fields are evaluated.",
                "type": "string",
                "enum": [
                  "exclude",
                  "abort"
                ]
              }
            },
            "additionalProperties": false
          },
          "aiEnrichment": {
            "title": "AI position-facts enrichment",
            "required": [
              "enabled",
              "accuracy"
            ],
            "type": "object",
            "description": "Fill supported fields that remain null using the complete public plain-text job description. When enabled, normalized filters are finally evaluated against the source facts plus supported fields filled by AI, so an AI-filled value can satisfy or fail a filter. Source facts always win and prose is never treated as static source evidence. Choose the Silver or Gold accuracy profile; failed enrichment leaves the base job unchanged. No customer model key is required; see the Pricing tab for current charges.",
            "properties": {
              "enabled": {
                "title": "Enable AI enrichment",
                "description": "Enable description-backed null-only position-facts extraction.",
                "type": "boolean",
                "editor": "checkbox",
                "default": false,
                "prefill": false
              },
              "accuracy": {
                "title": "Accuracy tier",
                "description": "Silver is the standard extraction tier. Gold adds additional validation for higher assurance.",
                "type": "string",
                "editor": "select",
                "default": "silver",
                "prefill": "silver",
                "enum": [
                  "silver",
                  "gold"
                ],
                "enumTitles": [
                  "Silver — standard",
                  "Gold — additional validation"
                ]
              }
            },
            "default": {
              "enabled": false,
              "accuracy": "silver"
            },
            "additionalProperties": false
          },
          "translateToEnglish": {
            "title": "Translate selected fields to English",
            "type": "boolean",
            "description": "Translate selected non-English display fields to English: title, classifications, domains, applicant requirement prose, benefits, eligibility and selection text, work authorization, security clearance, and location preference. Descriptions, company names, locations, identifiers, URLs, source-raw labels, skills, qualifications, certifications, programme names, and provenance remain unchanged. No customer translation key is required; see the Pricing tab for current charges.",
            "default": false
          },
          "includeRaw": {
            "title": "Include raw description text and HTML",
            "type": "boolean",
            "description": "Include the complete LinkedIn plain-text description and source HTML in <code>raw</code>. Disable it to return <code>raw: null</code>; requested description-backed enrichment still works.",
            "default": true
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of job postings to return. Set <code>0</code> to request up to the Actor's full bounded window of 1,000 items. Values above 1,000 are not accepted. Large cold runs can take substantially longer and consume more compute.",
            "default": 100
          },
          "dedupe": {
            "title": "Cross-run deduplication",
            "required": [
              "enabled",
              "key"
            ],
            "type": "object",
            "description": "Suppress jobs already delivered in the same search or alert scope. The default <code>default</code> key shares delivery history across this Apify user’s searches; use a distinct opaque alert/profile key for an isolated history, or leave it empty for a scope derived from the user and search. Disable it for repeatable one-off searches.",
            "properties": {
              "enabled": {
                "title": "Enable cross-run deduplication",
                "type": "boolean",
                "description": "Suppress jobs already delivered in the same tenant-and-query/profile scope.",
                "editor": "checkbox",
                "default": true,
                "prefill": true
              },
              "key": {
                "title": "Scope key (optional)",
                "type": "string",
                "description": "Public delivery scope key used only when enabled. The default <code>default</code> value shares history across this Apify user’s searches. Use a distinct opaque alert/profile key for isolated history, or leave it empty for an Apify-user-and-query-derived scope.",
                "editor": "textfield",
                "default": "default",
                "prefill": "default",
                "maxLength": 256
              }
            },
            "default": {
              "enabled": true,
              "key": "default"
            },
            "additionalProperties": false
          },
          "analyticsEnabled": {
            "title": "Share anonymous run analytics",
            "type": "boolean",
            "description": "Opt in to anonymous operational analytics that help improve reliability. Analytics never include your Apify user, run, or task IDs; search values; input or output records; URLs; source text; translations; extracted values; credentials; or a persistent caller identifier.",
            "default": false
          },
          "schemaVersion": {
            "title": "Input contract version",
            "enum": [
              "nomad-agent-job-search-input-v1"
            ],
            "type": "string",
            "description": "Version of the shared normalized job-search Actor input contract. Keep the supported default unless an integration explicitly requires otherwise.",
            "default": "nomad-agent-job-search-input-v1"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}