{"uid":"cap_0ETzdbcxJWdRIlpRBlUai","slug":"agents-openwebninja-com-linkedin-company-jobs-search-fcceee95","name":"LinkedIn Company Jobs Search","description":"Every open LinkedIn job posting at one or more companies.\n\nThis is the **same search path** as `/search` with LinkedIn's `f_C` company filter populated — the same parser, the same fetch layer, the same job builder, the same 35-key superset contract and the same `job_id` codec. Every filter `/search` supports is supported here and composes with the company filter; that composition was verified live against `f_C=1035` (Microsoft), checking every card of every probe: `f_C` alone, `+ date_posted`, `+ location`, `+ geo_id` & `radius`, `+ query` and `+ page` each returned 10/10 jobs at the requested company.\n\n**Identifying a company.** Pass `company_id` (numeric, LinkedIn's own id — it is returned on every job as `job_linkedin_company_id`) or `company` (a vanity slug or company page URL, resolved live at the cost of one extra request). Both accept a comma-separated list of up to 10; ids and slugs may be mixed, and the union actually searched is echoed as `parameters.company_ids_resolved`.\n\n**Multiple companies are an OR**, not a round-robin. LinkedIn ranks the union by relevance, so a small company paired with a large one can be absent from page 1 entirely. The guarantee is that every job returned belongs to one of the requested companies — not that every requested company appears.\n\n**`query` is optional here**, unlike on `/search`: the company is the query. Supply it only to filter within the company's postings.\n\n**Pagination, `include_details`, local filters and billing behave exactly as on `/search`**, with one addition: each `company` slug resolution is billed as one request on top of the search pages.\n\n**A company with no open jobs returns an empty array**, and so does a numeric `company_id` that does not exist — LinkedIn answers both with the same empty page. Use `company` (the slug form) when you need a bad identifier to be an error instead.","url":"https://agents.openwebninja.com/realtime-linkedin-data/company-jobs?utm_source=zero.xyz","method":"GET","headers":{},"bodySchema":{"type":"object","required":["company"],"properties":{"page":{"type":"integer","default":1,"maximum":100,"minimum":1,"description":"1-based page number, 10 jobs per page. Capped at 100 by LinkedIn's 1000-result ceiling; `page + num_pages` may not cross it either."},"query":{"type":"string","description":"Optional free-form keyword filter (LinkedIn's `keywords`) applied **within** the selected companies. Omit it to get the company's whole job list — verified live that `f_C` alone is a valid upstream request. Only one `query` is accepted; a second one is rejected with a 400 rather than silently ignored."},"fields":{"type":"string","description":"Comma-separated projection over the job object. `job_id` and `job_title` are always included. An unknown field is a 400."},"geo_id":{"type":"string","description":"LinkedIn numeric geo id (e.g. `102571732` = New York City, `103644278` = United States). Required if you want `radius` to take effect. There is no geo-id lookup endpoint in this API yet — take the value from a `geoId=` parameter on a linkedin.com/jobs URL."},"radius":{"type":"integer","minimum":1,"description":"Search radius in **kilometres**, converted to the miles LinkedIn expects. Passed through continuously, not as a coarse menu. **Requires `geo_id`.** LinkedIn ignores `distance` with a free-text location, so `radius` without `geo_id` is rejected with a 400 rather than silently doing nothing."},"company":{"type":"string","example":"microsoft","description":"Comma-separated LinkedIn company vanity slugs or company page URLs, up to 10, resolved live to the ids `company_id` takes. `microsoft`, `/company/microsoft` and a full URL all work. Each slug costs **one extra billed request**. An unknown slug is a 404, and one bad slug fails the whole request."},"country":{"type":"string","default":"us","description":"2-letter country code. Selects the proxy exit market and is the fallback for `job_country` when the posting's own location does not name a country. Geography is driven primarily by `location` / `geo_id`, not by this."},"sort_by":{"enum":["relevance","date"],"type":"string","default":"relevance","description":"`relevance` leaves LinkedIn's own ordering alone. `date` sorts **the jobs in this response** newest-first — it does not re-rank the result set upstream, because LinkedIn ignores its own `sortBy` on the logged-out surface. Combine with a larger `num_pages` for a more meaningful ordering, or with `date_posted` for real freshness control."},"location":{"type":"string","description":"Free-text location. Works internationally with no geo id (\"London, United Kingdom\", \"Berlin, Germany\"). Mutually usable with `geo_id`, but `radius` only applies to `geo_id`."},"num_pages":{"type":"integer","default":1,"maximum":20,"minimum":1,"description":"How many consecutive pages to fetch and concatenate, starting at `page`. Values above 20 are rejected with a 400 rather than silently clamped."},"company_id":{"type":"string","description":"Comma-separated LinkedIn company ids (`f_C`), up to 10, OR'd together. Take the value from `job_linkedin_company_id` on any job. Either `company_id` or `company` is required; combined, the union is echoed as `parameters.company_ids_resolved`. Ordering is relevance, so a small company paired with a large one may miss page 1."},"date_posted":{"enum":["all","today","3days","week","month"],"type":"string","default":"all","description":"Freshness filter, applied by LinkedIn itself. Maps exactly onto LinkedIn's arbitrary-seconds window (`today` = 24 h, `3days` = 72 h, `week` = 7 d, `month` = 30 d) with no downgrade. `all` applies no filter."},"include_details":{"type":"boolean","default":true,"description":"Fetch each job's detail page to fill the fields a search card cannot carry (description, employment type, salary, seniority, function, industries, applicant count, company id). Set `false` for a card-only response that is roughly 3x faster. Forced on when a local filter is in use."},"employment_types":{"enum":["FULLTIME","PARTTIME","CONTRACTOR","INTERN"],"type":"string","description":"Comma-separated `FULLTIME`, `PARTTIME`, `CONTRACTOR`, `INTERN`. **Filtered by us, not by LinkedIn**, whose own job-type filter is ignored logged out. Forces `include_details` on and over-fetches up to 3x the requested pages (capped at 10), so expect fewer than `num_pages x 10` results and a higher `Requests` charge."},"remote_jobs_only":{"type":"boolean","default":false,"description":"Return only jobs with an explicit remote marker. **Best-effort and low-recall**: LinkedIn's logged-out payload has no workplace-type field, so this matches a textual marker in the location or title. It under-returns and never over-returns, and most queries return few or no results with it set."},"seniority_levels":{"enum":["Internship","Entry level","Associate","Mid-Senior level","Director","Executive","Not Applicable"],"type":"string","description":"Comma-separated list of LinkedIn's own seniority vocabulary: `Internship`, `Entry level`, `Associate`, `Mid-Senior level`, `Director`, `Executive`, `Not Applicable`.\n  **Enforced locally**, with the same cost and caveats as `employment_types`.\n  Deliberately LinkedIn's vocabulary rather than a years-of-experience enum: there is\n  no defensible mapping from \"Mid-Senior level\" to a year count."}}},"responseSchema":{"type":"object","required":["status","request_id","parameters","data"],"properties":{"data":{"type":"array","items":{"type":"object","required":["job_id","job_title","employer_name","employer_logo","employer_website","job_publisher","job_employment_type","job_employment_types","job_apply_link","job_apply_is_direct","apply_options","job_description","job_is_remote","job_posted_at","job_posted_at_timestamp","job_posted_at_datetime_utc","job_location","job_city","job_state","job_country","job_latitude","job_longitude","job_benefits","job_benefits_strings","job_google_link","job_salary","job_salary_string","job_min_salary","job_max_salary","job_salary_period","job_highlights","job_onet_soc","job_onet_job_zone","employer_reviews","job_uid","employer_linkedin_url","job_linkedin_company_id","job_seniority_level","job_function","job_industries","job_applicants_count","job_applicants_label","job_salary_currency","job_posted_at_date","job_posted_at_linkedin_label","job_linkedin_badges","job_position"],"properties":{"job_id":{"type":"string","example":"bGlua2VkaW46NDQ1MzY3MDk3Mw","description":"Opaque public id: `base64url(\"linkedin:\" + <posting id>)`. Pass it back to `/job-details`. Stable for the life of the posting."},"job_uid":{"type":"string","example":"4453670973","description":"The raw numeric LinkedIn posting id. Permanent, and accepted directly by `/job-details`."},"job_city":{"type":"string","example":"New York","nullable":true},"job_state":{"type":"string","example":"New York","nullable":true,"description":"US 2-letter codes are expanded to the full state name, matching JSearch."},"job_title":{"type":"string","example":"Software Engineer III (Java/AWS)"},"job_salary":{"type":"number","example":null,"nullable":true,"description":"Set only when a posting states a single figure rather than a range; a range populates `job_min_salary` / `job_max_salary` instead."},"job_country":{"type":"string","example":"US","nullable":true,"description":"2-letter code derived from the posting's own location where it names a country or a US state, falling back to the requested `country`. A US state code always wins over the requested market."},"job_benefits":{"type":"array","items":{"type":"string"},"example":null,"nullable":true,"description":"Always `null`; LinkedIn does not publish a normalized benefits list."},"job_function":{"type":"string","example":"Engineering and Information Technology","nullable":true,"description":"LinkedIn's job-function label. Detail surface only."},"job_latitude":{"type":"number","format":"float","example":null,"nullable":true,"description":"Always `null`; not published on this surface."},"job_location":{"type":"string","example":"New York, NY","nullable":true,"description":"LinkedIn's location string, verbatim. Three shapes occur: `\"New York, NY\"` (US, no country suffix), `\"London, England, United Kingdom\"` (international) and `\"New York City Metropolitan Area\"` (metro, no comma)."},"job_onet_soc":{"type":"string","example":null,"nullable":true,"description":"Always `null`; not published."},"job_position":{"type":"integer","example":0,"nullable":true,"description":"Absolute 0-based rank within the result set, continuing across pages (page 2 starts at 10). **Search surface only** — always `null` on `/job-details`."},"apply_options":{"type":"array","items":{"type":"object","required":["apply_link","is_direct","publisher"],"properties":{"is_direct":{"enum":[false],"type":"boolean","example":false},"publisher":{"enum":["LinkedIn"],"type":"string","example":"LinkedIn"},"apply_link":{"type":"string","format":"uri","example":"https://www.linkedin.com/jobs/view/software-engineer-iii-java-aws-at-jpmorganchase-4453670973"}},"description":"Always exactly one entry on this source, describing the LinkedIn posting page. LinkedIn's logged-out surface does not expose the employer's own application destination, so there is never a second option and `is_direct` is never `true`."}},"employer_logo":{"type":"string","format":"uri","example":"https://media.licdn.com/dms/image/v2/D4E0BAQGxpntCyRgsuA/company-logo_100_100/0/1718711710850/jpmorganchase_logo","nullable":true,"description":"LinkedIn CDN company logo. 50/50 on the measured sample."},"employer_name":{"type":"string","example":"JPMorganChase"},"job_is_remote":{"type":"boolean","example":null,"nullable":true,"description":"`true` or `null`, **never `false`**. LinkedIn's logged-out payload has no workplace-type field, so `true` is emitted only when an explicit textual remote marker is present and `null` means \"LinkedIn did not say\", not \"not remote\". 0/50 on the measured sample."},"job_longitude":{"type":"number","format":"float","example":null,"nullable":true,"description":"Always `null`; not published on this surface."},"job_posted_at":{"type":"string","example":"8 days ago","nullable":true,"description":"Relative posting age in JSearch's vocabulary: `today`, `1 day ago`, `N days ago` up to 30, then `N month(s) ago`. LinkedIn's own badge (\"1 week ago\", \"Just now\") is never emitted here — it is preserved verbatim as `job_posted_at_linkedin_label`."},"job_publisher":{"enum":["LinkedIn"],"type":"string","example":"LinkedIn","description":"Always `LinkedIn` — the guest surface never names the originating job board."},"job_apply_link":{"type":"string","format":"uri","example":"https://www.linkedin.com/jobs/view/software-engineer-iii-java-aws-at-jpmorganchase-4453670973","nullable":true,"description":"The public LinkedIn posting URL, with LinkedIn's per-render tracking parameters stripped. **Not** the employer's ATS URL — that is behind a login wall and is not present in the guest payload. International postings use a country subdomain (`uk.linkedin.com`)."},"job_highlights":{"type":"object","example":{},"description":"Always `{}`. LinkedIn ships one prose blob with no qualifications / responsibilities / benefits split.","additionalProperties":{"type":"array","items":{"type":"string"}}},"job_industries":{"type":"array","items":{"type":"string"},"example":["Financial Services"],"nullable":true,"description":"LinkedIn's industry labels, comma-split. Individual labels can themselves contain \"and\" (\"IT Services and IT Consulting\") and are not split further. Detail surface only."},"job_max_salary":{"type":"number","example":185000,"nullable":true},"job_min_salary":{"type":"number","example":137750,"nullable":true},"job_description":{"type":"string","nullable":true,"description":"Full posting text, HTML stripped to plain text with paragraph breaks preserved. Typically 5 000–10 000 characters. Detail surface only — `null` when `include_details=false`."},"job_google_link":{"type":"string","format":"uri","example":null,"nullable":true,"description":"Always `null`; Google-specific."},"employer_reviews":{"type":"array","items":{"type":"object"},"example":null,"nullable":true,"description":"Always `null`; not published."},"employer_website":{"type":"string","format":"uri","example":null,"nullable":true,"description":"Always `null`. LinkedIn only ever exposes the employer's LinkedIn company page, which is returned as `employer_linkedin_url` instead of being passed off as a website."},"job_onet_job_zone":{"type":"string","example":null,"nullable":true,"description":"Always `null`; not published."},"job_salary_period":{"enum":["HOUR","DAY","WEEK","MONTH","YEAR",null],"type":"string","example":"YEAR","nullable":true},"job_salary_string":{"type":"string","example":"$137,750.00/yr - $185,000.00/yr","nullable":true,"description":"LinkedIn's compensation string, verbatim. Present on ~24% of postings (12/50 measured); detail surface only."},"job_posted_at_date":{"type":"string","format":"date","example":"2026-09-03","nullable":true,"description":"The exact `datetime` attribute LinkedIn publishes on a search card. **Search surface only** — always `null` on `/job-details`, which carries no date element."},"job_apply_is_direct":{"enum":[false],"type":"boolean","example":false,"description":"Always `false`; the employer's own application destination is not visible."},"job_employment_type":{"type":"string","example":"Full-time","nullable":true,"description":"LinkedIn's own label (\"Full-time\"). Detail surface only — `null` when `include_details=false`."},"job_linkedin_badges":{"type":"array","items":{"type":"string"},"example":["Actively Hiring"],"nullable":true,"description":"LinkedIn engagement badges (\"Actively Hiring\", \"Be an early applicant\"). Search surface only; 37/50 on the measured sample."},"job_salary_currency":{"type":"string","example":"USD","nullable":true,"description":"ISO 4217 code inferred from the salary string's symbol or code."},"job_seniority_level":{"enum":["Internship","Entry level","Associate","Mid-Senior level","Director","Executive","Not Applicable",null],"type":"string","example":"Not Applicable","nullable":true,"description":"LinkedIn's own seniority vocabulary. Detail surface only."},"job_applicants_count":{"type":"integer","example":193,"nullable":true,"description":"Applicant count as an integer. Present on ~52% of postings (26/50 measured). When LinkedIn caps the figure (\"Over 200 applicants\") this is the capped number and `job_applicants_label` carries the exact wording. Detail surface only."},"job_applicants_label":{"type":"string","example":"193 applicants","nullable":true,"description":"LinkedIn's applicant caption, verbatim."},"job_benefits_strings":{"type":"array","items":{"type":"string"},"example":null,"nullable":true,"description":"Always `null`. LinkedIn's only chips are engagement badges (\"Actively Hiring\"), which are not benefits; they are returned as `job_linkedin_badges` instead."},"job_employment_types":{"type":"array","items":{"enum":["FULLTIME","PARTTIME","CONTRACTOR","INTERN","VOLUNTEER","OTHER"],"type":"string"},"example":["FULLTIME"],"description":"Normalized enum form of `job_employment_type`. Empty when `include_details=false`."},"employer_linkedin_url":{"type":"string","format":"uri","example":"https://www.linkedin.com/company/jpmorganchase","nullable":true,"description":"The employer's LinkedIn company page, tracking parameters stripped."},"job_linkedin_company_id":{"type":"string","example":"1068","nullable":true,"description":"The employer's numeric LinkedIn company id. Feed it back as `company_id` on `/search` to get more jobs at the same company. Detail surface only."},"job_posted_at_timestamp":{"type":"integer","example":1788393600,"nullable":true,"description":"Unix epoch seconds at **midnight UTC of the posting date**. LinkedIn publishes a date, not a time. On `/job-details` this is derived from the relative label and can be off by a few days; `/search` carries the exact date."},"job_posted_at_datetime_utc":{"type":"string","format":"date-time","example":"2026-09-03T00:00:00.000Z","nullable":true},"job_posted_at_linkedin_label":{"type":"string","example":"1 week ago","nullable":true,"description":"LinkedIn's own relative badge, verbatim."}},"description":"A superset of the 35-key JSearch `/search` job object. All 35 keys are always present, as are the 12 LinkedIn-only extras; a field LinkedIn cannot supply is `null`, `[]` or `{}`."}},"status":{"enum":["OK"],"type":"string"},"parameters":{"type":"object","required":["page","num_pages","company_ids_resolved"],"properties":{"page":{"type":"integer","example":1},"query":{"type":"string","example":"software engineer"},"fields":{"type":"string","example":"job_title,employer_name"},"geo_id":{"type":"string","example":"102571732"},"radius":{"type":"integer","example":40},"company":{"type":"string","example":"microsoft","description":"The `company` slugs/URLs exactly as sent."},"country":{"type":"string","example":"us"},"sort_by":{"type":"string","example":"date"},"location":{"type":"string","example":"New York, United States"},"num_pages":{"type":"integer","example":1},"company_id":{"type":"string","example":"1035,1441"},"date_posted":{"type":"string","example":"week"},"include_details":{"type":"string","example":"false"},"employment_types":{"type":"string","example":"FULLTIME"},"remote_jobs_only":{"type":"string","example":"true"},"seniority_levels":{"type":"string","example":"Mid-Senior level"},"company_ids_resolved":{"type":"string","example":"1035,1441","description":"The comma-separated numeric company ids the search actually ran with — `company_id` as sent, unioned with every id resolved from `company`. A slug lookup is never invisible."}},"description":"Echo of the parameters as the caller sent them, before any internal transformation, plus `company_ids_resolved`. Only the parameters actually supplied are present — `query` is absent when none was sent."},"request_id":{"type":"string"}}},"example":null,"exampleRequest":null,"tags":[],"displayCostAmount":"unknown","displayCostAsset":"USD","priceDynamic":true,"priceHint":null,"priceStatus":"unprobed","priceSource":"registry","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"unknown","summary":"price unknown","primary":{"kind":"dynamic","protocol":"mpp","network":"tempo","amountUsd":null,"per":"call","confidence":"unknown"},"accepted":[{"kind":"dynamic","protocol":"mpp","network":"tempo","amountUsd":null,"per":"call","confidence":"unknown"}]},"paymentMethods":[{"uid":"pm_3mKZti9P28boLeaUN9TVE","protocol":"mpp","methodType":"crypto","chain":"tempo","mode":"charge","costAmount":"unknown","costPer":"request","priority":0,"asset":null,"unit":"request","depositMicros":null,"planRef":null}],"brandName":"agents.openwebninja.com","brandSlug":"agents-openwebninja-com-x402","brandBaseUrl":"https://agents.openwebninja.com","brandDocsUrl":null,"whatItDoes":"Fetches all open LinkedIn job postings for one or more specified companies, with optional keyword, location, and pagination filters.","exampleAgentPrompt":"Can you pull all the current open job postings on LinkedIn for Microsoft and Salesforce — filter to software engineering roles posted in the last week in New York?","exampleUseCases":[{"title":"Track competitor hiring signals","prompt":"Show me all the engineering job postings currently open at OpenAI and Anthropic on LinkedIn — I want to see what roles they're hiring for and how many applicants each has."},{"title":"Find remote roles at target company","prompt":"List all remote job openings at Shopify on LinkedIn right now, filtered to product management roles — show me the title, salary if available, and direct apply link."},{"title":"Job board for niche industry","prompt":"Pull every open LinkedIn job at these three biotech companies — Moderna, BioNTech, and Genentech — I want all postings from the past month in the United States."}],"resultDescription":"Returns a paginated array of up to 10 job objects per page, each containing 35 fields including job_id, job_title, employer_name, employer_logo, job_description, job_location (city/state/country/lat/lon), job_employment_type, job_is_remote, job_posted_at, job_apply_link, job_salary (min/max/period/currency), job_seniority_level, job_function, job_industries, job_applicants_count, and apply_options. Also returns a parameters object echoing company_ids_resolved and pagination metadata.","failureModes":["Unknown company slug returns 404 and fails the entire request","Providing radius without geo_id returns 400","Providing more than one query parameter returns 400","Unknown field name in fields projection returns 400","page × 10 exceeding LinkedIn's 1000-result ceiling returns an error","Rate limiting or upstream LinkedIn changes may return 429 or 503","Mixed valid/invalid slugs in a comma-separated list fail the whole batch"],"whenToPreferThis":"Use this endpoint when you need to enumerate all open positions at one or more known companies by name or LinkedIn company ID, rather than doing a broad keyword job search. It is ideal for competitive intelligence, recruiting pipelines, or monitoring a watchlist of employers. Prefer it over the generic /search endpoint when the company identity is the primary filter and keywords are optional refinements.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-14T00:37:02.440Z","isFirstParty":false,"canonicalSlug":"agents-openwebninja-com-linkedin-company-jobs-search-fcceee95"}