Skip to content
Eden Engine

LinkedIn Job Posting Details (by URL)

omnial/linkedin-web-get-job-detail

Given a LinkedIn job posting URL, returns the posting's own details (title, description, employment type, seniority level, location, remote eligibility, posted/expired timestamps, view/apply counters) and the hiring company's public profile (name, description, size, LinkedIn page, headquarters address). A URL that no longer resolves to a live posting returns no job data rather than an error.

activeper callv1
Provider
Web & Business Data Network
Category
linkedin
Provider price
$0.102375 per call
Latency p50 / p95
— / —
Success rate
—
Verified
—

Provider list price; Omnial MCP charges provider cost plus a platform markup on top.

Contract

input_schema.json
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "examples": [
        "https://www.linkedin.com/jobs/view/software-engineer-at-pave-4310512612/"
      ],
      "description": "Job URL"
    },
    "include_skills": {
      "type": "boolean",
      "default": false,
      "description": "Include skills"
    },
    "include_hiring_team": {
      "type": "boolean",
      "default": false,
      "description": "Include hiring team"
    }
  },
  "additionalProperties": false
}
output_schema.json
{
  "type": "object",
  "properties": {
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "views": {
          "type": "number",
          "description": "View counter LinkedIn records for the posting."
        },
        "closed": {
          "type": "boolean",
          "description": "Whether the posting is closed to applicants."
        },
        "job_id": {
          "type": "string",
          "description": "This posting's own LinkedIn identifier (not a person's contact detail)."
        },
        "posted": {
          "type": "string",
          "description": "This posting's own publish timestamp (not a person's contact detail)."
        },
        "skills": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only present when the call is made with `include_skills: true`."
        },
        "applies": {
          "type": "number",
          "description": "Number of 'Apply' clicks LinkedIn recorded. Observed as 0."
        },
        "expired": {
          "type": "string",
          "description": "This posting's own expiration timestamp (not a person's contact detail)."
        },
        "hq_city": {
          "type": "string"
        },
        "job_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "This posting's own canonical LinkedIn URL. Value withheld (stripped to `null`) in this tool's output as a URL leaf, same treatment as every other URL field here."
        },
        "benefits": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Benefit tags LinkedIn extracted from the posting. Empty on the one real listing calibrated; a populated entry's shape is unconfirmed."
        },
        "job_type": {
          "type": "string",
          "description": "e.g. 'Full-time'."
        },
        "hq_region": {
          "type": "string"
        },
        "job_title": {
          "type": "string"
        },
        "company_id": {
          "type": "string",
          "description": "The hiring company's LinkedIn numeric id."
        },
        "hq_country": {
          "type": "string"
        },
        "industries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The hiring company's own LinkedIn industry tags."
        },
        "hiring_team": {
          "type": "null",
          "description": "Always withheld (stripped to `null`) -- a populated shape would plausibly carry hiring-team members' names/titles/profile links, a third party's identity riding along with the posting; observed as an empty object `{}` on the one real listing calibrated (never populated), so no confirmed shape exists to ship anyway."
        },
        "company_name": {
          "type": "string"
        },
        "job_location": {
          "type": "string"
        },
        "remote_allow": {
          "type": "boolean"
        },
        "specialities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The hiring company's own LinkedIn specialities tags."
        },
        "hq_postalcode": {
          "type": "string"
        },
        "job_functions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "employee_count": {
          "type": "number",
          "description": "LinkedIn's own employee-count figure."
        },
        "employee_range": {
          "type": "string",
          "description": "e.g. '51 - 200'."
        },
        "follower_count": {
          "type": "number",
          "description": "The hiring company's LinkedIn follower count."
        },
        "salary_details": {
          "type": "object",
          "description": "Structured salary-range fields, when LinkedIn provides them separately from the posting text. Observed as an empty object `{}` on the one real listing calibrated -- a populated shape is unconfirmed; this listing's own salary bands appeared only as free text inside `job_description`.",
          "additionalProperties": true
        },
        "salary_display": {
          "type": "string",
          "description": "A pre-formatted salary string, when LinkedIn sets one. Observed as empty."
        },
        "hq_full_address": {
          "type": "string",
          "description": "The hiring company's own public headquarters address in full, not an individual's home address."
        },
        "job_description": {
          "type": "string",
          "description": "The full posting body text."
        },
        "experience_level": {
          "type": "string",
          "description": "e.g. 'Entry level'."
        },
        "hq_address_line1": {
          "type": "string",
          "description": "The hiring company's own public headquarters street address, not an individual's home address."
        },
        "hq_address_line2": {
          "type": "string",
          "description": "Suite/floor line of the company HQ address."
        },
        "company_public_id": {
          "type": "string",
          "description": "The company's LinkedIn URL slug."
        },
        "company_description": {
          "type": "string",
          "description": "The hiring company's own about text."
        },
        "company_linkedin_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "The hiring company's LinkedIn page URL. Value withheld (stripped to `null`) in this tool's output -- only whether the company has a LinkedIn page is observable."
        }
      },
      "description": "`null` when the given `url` does not resolve to an existing posting.",
      "additionalProperties": true
    }
  },
  "description": "The job record, as returned at routing.responseResultPath ($.output). The `data` key is present but `null` when the given `url` does not resolve to an existing posting -- confirmed against the `nonexistent-job` fixture, which still billed the normal per-call price.",
  "additionalProperties": true
}

Pricing

Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.

Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.

ChargeRate
Per call
Flat, regardless of what comes back
$0.102375
Cost basis
Not recorded

This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.

Updated
Sep 23, 2026