> **For coding agents and LLMs:** This is one page from the Social Fetch docs (markdown export). The sections below mirror the orientation block in [`/llms.txt`](https://www.socialfetch.dev/llms.txt); use [`/llms.json`](https://www.socialfetch.dev/llms.json) when you need a structured operation inventory. The catalog covers documented operations with on-site reference pages.

## This page

- **On-site (HTML):** [https://www.socialfetch.dev/docs/api/v1/linkedin/jobs/get](https://www.socialfetch.dev/docs/api/v1/linkedin/jobs/get)
- **Markdown (.mdx) URL:** [https://www.socialfetch.dev/docs/api/v1/linkedin/jobs/get.mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/jobs/get.mdx)

## API base URL and authentication

- **API origin (from OpenAPI `servers`):** `https://api.socialfetch.dev`
- **Authentication:** send `x-api-key: sfk_...` on `/v1/**` routes unless the operation is explicitly anonymous (check OpenAPI `security`, the [API reference hub](https://www.socialfetch.dev/docs/api.mdx), [`/llms.txt`](https://www.socialfetch.dev/llms.txt), or [`/llms.json`](https://www.socialfetch.dev/llms.json) for each route).
- **OpenAPI JSON:** [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json)

## Recommended docs entrypoints (this site)

- [Documentation overview](https://www.socialfetch.dev/docs.mdx) — top-level orientation (markdown).
- [Quickstart](https://www.socialfetch.dev/docs/quickstart.mdx) — authenticate with `x-api-key`, validate auth with `whoami`, and understand the JSON envelope.
- [SDK](https://www.socialfetch.dev/docs/sdk.mdx) — official TypeScript SDK guide, including `SocialFetchClient`, `Result`, and `unwrap()`.
- [SDK reference](https://www.socialfetch.dev/docs/sdk-reference.mdx) — exhaustive SDK method inventory and route mapping for agents, tooling, and power users.
- [Choose the right endpoint](https://www.socialfetch.dev/docs/choose-endpoint.mdx) — task-oriented route selection for smoke tests, profiles, list endpoints, and single-item lookups.
- [Capability matrix](https://www.socialfetch.dev/docs/capability-matrix.mdx) — fast comparison of identifiers, pagination, outcomes, media download, and SDK coverage.
- [Integrations](https://www.socialfetch.dev/docs/integrations.mdx) — MCP for AI clients, n8n verified node, SDK, and REST API connection paths.
- [MCP integration](https://www.socialfetch.dev/docs/integrations/mcp.mdx) — hosted `/mcp` server, OAuth, Cursor/VS Code/Claude install snippets, 87 endpoint tools, plus docs_search/docs_read for implementation help.
- [n8n integration](https://www.socialfetch.dev/docs/integrations/n8n.mdx) — install `n8n-nodes-socialfetch`, credentials, and workflow examples.
- [`/llms.json`](https://www.socialfetch.dev/llms.json) — structured machine-readable operation inventory with parameter names, pagination, outcomes, credits, and SDK mapping.
- [API reference hub](https://www.socialfetch.dev/docs/api.mdx) — human-friendly index of operations with links into generated pages.
- [Errors](https://www.socialfetch.dev/docs/errors.mdx) — shared error envelope and HTTP status guidance.
- [Credits](https://www.socialfetch.dev/docs/credits.mdx) — metering, `402`, and planning batch jobs.
- Outcome semantics such as `found`, `not_found`, and `private` are documented in [Errors](https://www.socialfetch.dev/docs/errors.mdx) and on operation pages when present in the OpenAPI contract.

## Markdown docs convention

- Every docs page has a markdown twin: append **`.mdx`** to the docs pathname (for example `/docs/quickstart` → `/docs/quickstart.mdx`).
- Agents that send `Accept: text/markdown` on `/docs/**` HTML URLs may receive markdown directly (same URL, `Vary: Accept`).

---
# Get LinkedIn jobs (https://www.socialfetch.dev/docs/api/v1/linkedin/jobs/get)

## Summary

Get LinkedIn job postings by URL.

**Tags:** `LinkedIn`

## HTTP

- **Method:** GET
- **Path:** `/v1/linkedin/jobs`
- **Base URL:** `https://api.socialfetch.dev`

## Capability summary

- **SDK mapping:** `client.linkedin.getJobs({ urls })`
- **Accepted identifiers:** `url` (query)
- **Pagination:** none

## Credits

- 2 credits per job URL requested (up to 50 URLs, 100 credits max). See meta.creditsCharged.

## Authentication

- **`x-api-key`**: API key (`sfk_...`)

## Parameters

### `url` (query)

- **Required:** yes
- **Constraints:** type `array`
- **Description:** LinkedIn job posting URL to look up.

## Responses (status codes)

- **200**: Batch lookup results. Inspect each `data.results[].lookupStatus` for `found`, `not_found`, or `error`.
- **400**: Invalid job URL or bad request
- **401**: Missing or invalid API key
- **402**: Insufficient credits
- **500**: Unexpected or billing error
- **502**: Lookup could not be completed from the response (unexpected or invalid data).
- **503**: Service temporarily unavailable; safe to retry with backoff.

## Response body (200)

Batch lookup results. Inspect each `data.results[].lookupStatus` for `found`, `not_found`, or `error`.

### Field outline

- **data** (required) — type `object`. Endpoint-specific response payload.
  - **results** (required) — type `array`. Per-URL job lookup results.
    - _items:_
      - **url** (required) — type `string`; minLength: 1. Requested job URL echoed for this result.
      - **lookupStatus** (required) — type `string`; enum: found, not_found, error. Domain outcome of one job lookup in the batch.
      - **error** (required) — type `object`; nullable. Error details when `lookupStatus` is `error`.
        - **message** (required) — type `string`; minLength: 1. Short customer-safe reason this job could not be returned.
      - **job** (required) — type `object`; nullable. Job details when available.
        - **id** (required) — type `string`; nullable. Unique identifier for the job listing when available.
        - **url** (required) — type `string`; minLength: 1. Public URL for the job posting on LinkedIn.
        - **title** (required) — type `string`; nullable. Title of the advertised job position.
        - **companyName** (required) — type `string`; nullable. Name of the hiring company.
        - **companyId** (required) — type `string`; nullable. Unique identifier for the hiring company when available.
        - **companyUrl** (required) — type `string`; nullable. LinkedIn profile link of the hiring company.
        - **location** (required) — type `string`; nullable. Geographic location of the job.
        - **summary** (required) — type `string`; nullable. Brief overview of job responsibilities.
        - **seniorityLevel** (required) — type `string`; nullable. Seniority level of the position.
        - **function** (required) — type `string`; nullable. Department or function of the job.
        - **employmentType** (required) — type `string`; nullable. Type of employment offered.
        - **industries** (required) — type `string`; nullable. Industries associated with the job.
        - **basePayRange** (required) — type `string`; nullable. Salary range text for the position when available.
        - **postedAt** (required) — type `string`; nullable. When the job was posted (relative or absolute label from LinkedIn).
        - **postedDate** (required) — type `string`; nullable. ISO-8601 posting timestamp when available.
        - **applicantCount** (required) — type `integer`; minimum: 0; nullable. Number of applicants for the job.
        - **jobPoster** (required) — type `object`; nullable. LinkedIn member who posted the job when available.
          - **name** (required) — type `string`; nullable. Job poster's display name on LinkedIn.
          - **title** (required) — type `string`; nullable. Job poster's current role or title.
          - **profileUrl** (required) — type `string`; nullable. Job poster's LinkedIn profile URL.
        - **applicationAvailable** (required) — type `boolean`; nullable. Whether a user can still apply for this job.
        - **descriptionFormatted** (required) — type `string`; nullable. Job description as formatted on LinkedIn.
        - **baseSalary** (required) — type `object`; nullable. Structured base pay range when available.
          - **minAmount** (required) — type `number`; nullable. Minimum base pay amount when available.
          - **maxAmount** (required) — type `number`; nullable. Maximum base pay amount when available.
          - **currency** (required) — type `string`; nullable. Payment currency symbol or code when available.
          - **paymentPeriod** (required) — type `string`; nullable. Pay interval for the base salary when available.
        - **salaryStandards** (required) — type `string`; nullable. Employer-provided pay standards or notes.
        - **isEasyApply** (required) — type `boolean`; nullable. Whether LinkedIn Easy Apply is available.
        - **applyLink** (required) — type `string`; nullable. Direct apply link when provided by LinkedIn.
        - **countryCode** (required) — type `string`; nullable. Two-letter country code when available.
        - **companyLogoUrl** (required) — type `string`; nullable. Company logo image URL when available.
  - **summary** (required) — type `object`. Summary counts for the job batch.
    - **requestedUrls** (required) — type `integer`; minimum: 0. Number of job URLs requested in this batch.
    - **found** (required) — type `integer`; minimum: 0. Number of jobs successfully found.
    - **notFound** (required) — type `integer`; minimum: 0. Number of jobs that were not found.
    - **errored** (required) — type `integer`; minimum: 0. Number of jobs that failed to resolve.
- **meta** (required) — type `object`. Metadata describing the request and billing outcome.
  - **requestId** (required) — type `string`; minLength: 1. Unique request identifier for tracing this API call.
  - **creditsCharged** (required) — type `integer`; minimum: 0. Credits charged for this request.
  - **version** (required) — type `string`; enum: v1. Public API version that served the response.

### Example JSON (OpenAPI example)

```json
{
  "data": {
    "results": [
      {
        "url": "https://www.linkedin.com/jobs/view/software-engineer-at-epic-3986111804/",
        "lookupStatus": "found",
        "error": null,
        "job": {
          "id": "3986111804",
          "url": "https://www.linkedin.com/jobs/view/software-engineer-at-epic-3986111804/?_l=en",
          "title": "Software Engineer",
          "companyName": "Epic",
          "companyId": "163658",
          "companyUrl": "https://www.linkedin.com/company/epic1979?trk=public_jobs_topcard-org-name",
          "location": "San Jose, CA",
          "summary": "Please note that this position is based on our campus in Madison, WI, and requires relocation to the area. We recruit nationally and provide financial relocation assistance. Code that saves lives. As a software developer at Epic, you’ll write software that impacts the lives of 325 million patients around the world. Wo…",
          "seniorityLevel": "Entry level",
          "function": "Engineering and Information Technology",
          "employmentType": "Full-time",
          "industries": "Software Development",
          "basePayRange": null,
          "postedAt": "6 days ago",
          "postedDate": "2026-05-29T17:46:32.706Z",
          "applicantCount": 0,
          "jobPoster": null,
          "applicationAvailable": true,
          "descriptionFormatted": "<section class=\"show-more-less-html\" data-max-lines=\"5\">\n        <div class=\"show-more-less-html__markup show-more-less-html__markup--clamp-after-5\n            relative overflow-hidden\">\n          Please note that this position is based on our campus in Madison, WI, and requires relocation to the area. We recruit nati…",
          "baseSalary": null,
          "salaryStandards": null,
          "isEasyApply": false,
          "applyLink": null,
          "countryCode": null,
          "companyLogoUrl": "https://media.licdn.com/dms/image/v2/C4D0BAQH6HS4jtIcQ4w/company-logo_100_100/company-logo_100_100/0/1631348441877?e=2147483647&v=beta&t=oOcOoqQ5XjMudBpnuLAezQFt6sQvKtSzyNDaM9PGCys"
        }
      }
    ],
    "summary": {
      "requestedUrls": 1,
      "found": 1,
      "notFound": 0,
      "errored": 0
    }
  },
  "meta": {
    "requestId": "req_01example_job",
    "creditsCharged": 2,
    "version": "v1"
  }
}
```

### Machine-readable error codes

When an error JSON body is returned, it may include one of these `error.code` values (derived from the OpenAPI schemas for this operation; additional codes may exist at runtime):

- `bad_request`

## Error handling & retries

Interpret HTTP status codes using the descriptions below. Do not assume a JSON body unless the OpenAPI schema defines one for that status.

- **400**: Invalid job URL or bad request **Retry:** Fix the request; retrying the same invalid payload will not help.
- **401**: Missing or invalid API key **Retry:** Fix the API key first; retrying without changes will not help.
- **402**: Insufficient credits **Retry:** Do not retry without resolving billing/credits (retrying the same request will not help).
- **500**: Unexpected or billing error
- **502**: Lookup could not be completed from the response (unexpected or invalid data). **Retry:** May be transient; a few retries with backoff are reasonable.
- **503**: Service temporarily unavailable; safe to retry with backoff. **Retry:** Usually safe to retry with exponential backoff and jitter.

### Suggested client defaults

- Send the API key using the `x-api-key` header on every request.
- On `503` (and sometimes `502`), retry with backoff; cap retries and surface a clear error to the user.
- On `402`, surface an actionable billing message rather than blind retries.

## Examples

### TypeScript SDK

```typescript
import { SocialFetchClient } from "@socialfetch/sdk";

const client = new SocialFetchClient({
  apiKey: process.env.SOCIALFETCH_API_KEY!,
});

const result = await client.linkedin.getJob({ url: "https://www.linkedin.com/jobs/view/software-engineer-at-epic-3986111804/" });

if (!result.ok) {
  console.error(result.error);
} else {
  console.log(result.value.data);
}
```

### Node.js

```javascript
const response = await fetch(
  "https://api.socialfetch.dev/v1/linkedin/jobs?url=https://www.linkedin.com/jobs/view/software-engineer-at-epic-3986111804/",
  {
    headers: {
      "x-api-key": "YOUR_API_KEY",
    }
  }
);

const data = await response.json();
console.log(data);
```

### cURL

```bash
curl "https://api.socialfetch.dev/v1/linkedin/jobs?url=https://www.linkedin.com/jobs/view/software-engineer-at-epic-3986111804/" \
  -H "x-api-key: YOUR_API_KEY"
```

### Python

```python
import requests

response = requests.get(
    "https://api.socialfetch.dev/v1/linkedin/jobs?url=https://www.linkedin.com/jobs/view/software-engineer-at-epic-3986111804/",
    headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()
print(data)
```