> **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/profiles/posts/get](https://www.socialfetch.dev/docs/api/v1/linkedin/profiles/posts/get)
- **Markdown (.mdx) URL:** [https://www.socialfetch.dev/docs/api/v1/linkedin/profiles/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/profiles/posts/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`).

---
# List LinkedIn profile posts (https://www.socialfetch.dev/docs/api/v1/linkedin/profiles/posts/get)

## Summary

Get posts from a LinkedIn profile.

**Tags:** `LinkedIn`

## HTTP

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

## Capability summary

- **SDK mapping:** `client.linkedin.listProfilePosts({ url, startDate?, endDate?, onlyAuthoredPosts? })`
- **Accepted identifiers:** `url` (query)
- **Pagination:** none
- **Business outcome field:** `data.lookupStatus` with values `found`, `not_found`

## Credits

- 2 credits per returned record; up to 200 records may be returned (preflight checks up to 400 credits). See `meta.creditsCharged`. Normalization failures are not charged.

## Authentication

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

## Parameters

### `url` (query)

- **Required:** yes
- **Constraints:** type `string`; minLength: 1; maxLength: 4096
- **Description:** LinkedIn profile URL or vanity handle whose public posts should be listed.

### `startDate` (query)

- **Required:** no
- **Constraints:** type `string`; minLength: 1
- **Description:** Optional start of the date range for posts to include.

### `endDate` (query)

- **Required:** no
- **Constraints:** type `string`; minLength: 1
- **Description:** Optional end of the date range for posts to include.

### `onlyAuthoredPosts` (query)

- **Required:** no
- **Constraints:** type `boolean`
- **Description:** When true, return only posts created by the profile owner.

## Responses (status codes)

- **200**: Profile posts listing. Check `data.lookupStatus` and `data.posts`.
- **400**: Invalid profile URL or date range
- **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)

Profile posts listing. Check `data.lookupStatus` and `data.posts`.

### Field outline

- **data** (required) — type `object`. Endpoint-specific response payload.
  - **lookupStatus** (required) — type `string`; enum: found, not_found. Whether the profile resolved for this request.
  - **posts** (required) — type `array`. Posts from the requested profile.
    - _items:_
      - **id** (required) — type `string`; nullable. Unique identifier for the LinkedIn post.
      - **url** (required) — type `string`; minLength: 1. Web link to the individual LinkedIn post.
      - **authorUserId** (required) — type `string`; nullable. Unique identifier for the user who created the post.
      - **title** (required) — type `string`; nullable. Title or main subject of the post when applicable.
      - **headline** (required) — type `string`; nullable. Brief headline summarizing the post content.
      - **text** (required) — type `string`; nullable. Main text content of the post.
      - **publishedAt** (required) — type `string`; nullable. Date and time when the post was published.
      - **hashtags** (required) — type `array`; nullable. String list when available.
        - _items:_
          - type `string`
      - **embeddedLinks** (required) — type `array`; nullable. String list when available.
        - _items:_
          - type `string`
      - **images** (required) — type `array`; nullable. String list when available.
        - _items:_
          - type `string`
      - **videos** (required) — type `array`; nullable. String list when available.
        - _items:_
          - type `string`
      - **metrics** (required) — type `object`; nullable. Engagement metrics when available.
        - **likes** (required) — type `integer`; minimum: 0; nullable. Like count when available.
        - **comments** (required) — type `integer`; minimum: 0; nullable. Comment count when available.
        - **reposts** (required) — type `integer`; minimum: 0; nullable. Repost count when available.
      - **moreArticlesByUser** (required) — type `array`; nullable. Other posts or articles by the same user.
        - _items:_
          - **headline** (required) — type `string`; nullable. Headline of the related article.
          - **datePosted** (required) — type `string`; nullable. Publish date of the related article.
          - **postUrl** (required) — type `string`; nullable. URL of the related article.
      - **moreRelevantPosts** (required) — type `array`; nullable. Related posts surfaced by LinkedIn.
        - _items:_
          - **postUrl** (required) — type `string`; nullable. URL of the related post.
          - **postId** (required) — type `string`; nullable. LinkedIn ID of the related post.
          - **userId** (required) — type `string`; nullable. Author ID of the related post.
          - **hashtags** (required) — type `array`; nullable. String list when available.
            - _items:_
              - type `string`
          - **embeddedLinks** (required) — type `array`; nullable. String list when available.
            - _items:_
              - type `string`
      - **topVisibleComments** (required) — type `array`; nullable. Top comments visible without signing in.
        - _items:_
          - **authorProfileUrl** (required) — type `string`; nullable. Comment author's profile URL.
          - **authorUserId** (required) — type `string`; nullable. Comment author's user id.
          - **authorName** (required) — type `string`; nullable. Comment author's display name.
          - **publishedAt** (required) — type `string`; nullable. When the comment was posted.
          - **text** (required) — type `string`; nullable. Comment text.
          - **taggedProfileUrls** (required) — type `array`; nullable. String list when available.
            - _items:_
              - type `string`
          - **reactionCount** (required) — type `integer`; minimum: 0; nullable. Reactions on the comment when available.
          - **authorTitle** (required) — type `string`; nullable. Comment author's title when available.
          - **images** (required) — type `array`; nullable. String list when available.
            - _items:_
              - type `string`
      - **authorFollowers** (required) — type `integer`; minimum: 0; nullable. Number of followers of the author.
      - **authorPostCount** (required) — type `integer`; minimum: 0; nullable. Author's post count when available.
      - **authorArticleCount** (required) — type `integer`; minimum: 0; nullable. Author's article count when available.
      - **postType** (required) — type `string`; nullable. Post type such as post, repost, or article.
      - **accountType** (required) — type `string`; nullable. Author account type such as Person or Company.
      - **postTextHtml** (required) — type `string`; nullable. Post text with HTML markup and line breaks.
      - **repost** (required) — type `object`; nullable. Original post details when this is a reshare.
        - **repostUrl** (required) — type `string`; nullable. URL of the original post.
        - **repostUserId** (required) — type `string`; nullable. Original poster's user id.
        - **repostUserName** (required) — type `string`; nullable. Original poster's display name.
        - **repostText** (required) — type `string`; nullable. Text of the original post.
        - **repostDate** (required) — type `string`; nullable. When the original post was published.
        - **repostId** (required) — type `string`; nullable. Original post id.
        - **repostUserTitle** (required) — type `string`; nullable. Original poster's title.
        - **repostHangtags** (required) — type `array`; nullable. String list when available.
          - _items:_
            - type `string`
        - **repostAttachments** (required) — type `array`; nullable. String list when available.
          - _items:_
            - type `string`
        - **taggedUsers** (required) — type `array`; nullable. People tagged in the repost.
          - _items:_
        - **taggedCompanies** (required) — type `array`; nullable. Companies tagged in the repost.
          - _items:_
      - **taggedCompanies** (required) — type `array`; nullable. Companies tagged or mentioned in the post.
        - _items:_
          - **name** (required) — type `string`; nullable. Display name when available.
          - **url** (required) — type `string`; nullable. LinkedIn URL when available.
      - **taggedPeople** (required) — type `array`; nullable. People tagged or mentioned in the post.
        - _items:_
          - **name** (required) — type `string`; nullable. Display name when available.
          - **url** (required) — type `string`; nullable. LinkedIn URL when available.
      - **authorName** (required) — type `string`; nullable. Author display name when available.
      - **authorProfileUrl** (required) — type `string`; nullable. Author profile URL when available.
      - **authorTitle** (required) — type `string`; nullable. Title of the post author.
      - **authorProfilePicUrl** (required) — type `string`; nullable. Author profile picture URL.
      - **authorConnectionCount** (required) — type `integer`; minimum: 0; nullable. Number of connections of the author.
      - **videoDurationSec** (required) — type `integer`; minimum: 0; nullable. Duration of attached video in seconds.
      - **externalLinkPreviews** (required) — type `array`; nullable. Preview cards for external links when available.
        - _items:_
          - nullable
      - **videoThumbnailUrl** (required) — type `string`; nullable. Thumbnail URL for attached video.
      - **documentCoverImageUrl** (required) — type `string`; nullable. Cover image URL for an attached document.
      - **documentPageCount** (required) — type `integer`; minimum: 0; nullable. Page count for an attached document.
      - **originalPostText** (required) — type `string`; nullable. Post text as shown on LinkedIn including line breaks.
  - **summary** (required) — type `object`. Summary counts for this response.
    - **returned** (required) — type `integer`; minimum: 0. Number of posts returned in this response.
- **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": {
    "lookupStatus": "found",
    "posts": [
      {
        "id": "7466220443365081088",
        "url": "https://www.linkedin.com/posts/bradsmi_twenty-years-ago-microsoft-broke-ground-activity-7466220443365081088-YQ8v",
        "authorUserId": "bradsmi",
        "title": "Twenty years ago, Microsoft broke ground on our first data center in Quincy, Washington. At a time when so many small towns have been shrinking, Quincy has grown, and the partnership behind that… | Brad Smith | 52 comments",
        "headline": "Twenty years ago, Microsoft broke ground on our first data center in Quincy, Washington.",
        "text": "Twenty years ago, Microsoft broke ground on our first data center in Quincy, Washington. At a time when so many small towns have been shrinking, Quincy has grown, and the partnership behind that story is one worth telling. Watch how a farm town in Central Washington helped build the cloud, and built a thriving future …",
        "publishedAt": "2026-05-29T20:14:29.349Z",
        "hashtags": null,
        "embeddedLinks": [
          "https://www.linkedin.com/company/microsoft?trk=public_post-text"
        ],
        "images": null,
        "videos": [
          "https://dms.licdn.com/playlist/vid/v2/D4E05AQFWwAf-SzEhZg/mp4-640p-30fp-crf28/B4EZ51XxxfGwB4-/0/1780085663161?e=2147483647&v=beta&t=MytLeR9e_VgO33RHS0Jb41YMUg2itJFf6PidLjddRq8"
        ],
        "metrics": {
          "likes": 873,
          "comments": 52,
          "reposts": null
        },
        "moreArticlesByUser": null,
        "moreRelevantPosts": null,
        "topVisibleComments": [
          {
            "authorProfileUrl": "https://au.linkedin.com/in/ronhulks?trk=public_post_comment_actor-name",
            "authorUserId": "ronhulks",
            "authorName": "Ron H.",
            "publishedAt": "2026-05-31T07:49:06.970Z",
            "text": "This is the part of technology stories people usually skip. The breakthrough gets the spotlight. But the real advantage is usually built much earlier, when the work still looks boring. Power. Land. Trust. Local patience. Operational follow-through. AI will be no different. The visible leap will depend on the invisible…",
            "taggedProfileUrls": null,
            "reactionCount": 2,
            "authorTitle": null,
            "images": null
          }
        ],
        "authorFollowers": 373757,
        "authorPostCount": 1891,
        "authorArticleCount": 55,
        "postType": "post",
        "accountType": "Person",
        "postTextHtml": "Twenty years ago, <a class=\"link\" href=\"https://www.linkedin.com/company/microsoft?trk=public_post-text\" target=\"_self\" data-tracking-control-name=\"public_post-text\" data-tracking-will-navigate>Microsoft</a> broke ground on our first data center in Quincy, Washington. At a time when so many small towns have been shrin…",
        "repost": null,
        "taggedCompanies": null,
        "taggedPeople": null,
        "authorName": null,
        "authorProfileUrl": "https://www.linkedin.com/in/bradsmi",
        "authorTitle": null,
        "authorProfilePicUrl": "https://media.licdn.com/dms/image/v2/C5603AQGnYfaUI8S0zQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516342848914?e=2147483647&v=beta&t=DxjyeHtTGI0kYUGuFk6NQZ_rZcz6OSwLhr-g9AmpOcg",
        "authorConnectionCount": 500,
        "videoDurationSec": 178,
        "externalLinkPreviews": null,
        "videoThumbnailUrl": "https://media.licdn.com/dms/image/v2/D4E05AQFWwAf-SzEhZg/videocover-high/B4EZ51XxxfGwBY-/0/1780085645189?e=2147483647&v=beta&t=18VHD_u-G3h9nLsiX6tS-nwJlJh0Im6LzguBnNvUYSw",
        "documentCoverImageUrl": null,
        "documentPageCount": null,
        "originalPostText": "Twenty years ago, <a class=\"link\" href=\"https://www.linkedin.com/company/microsoft?trk=public_post-text\" target=\"_self\" data-tracking-control-name=\"public_post-text\" data-tracking-will-navigate>Microsoft</a> broke ground on our first data center in Quincy, Washington. At a time when so many small towns have been shrin…"
      }
    ],
    "summary": {
      "returned": 3
    }
  },
  "meta": {
    "requestId": "req_01example_profile_posts",
    "creditsCharged": 6,
    "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 profile URL or date range **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.listProfilePosts({
  url: "https://www.linkedin.com/in/marclouvion",
});

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/profiles/posts?url=https://www.linkedin.com/in/marclouvion",
  {
    headers: {
      "x-api-key": "YOUR_API_KEY",
    }
  }
);

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

### cURL

```bash
curl "https://api.socialfetch.dev/v1/linkedin/profiles/posts?url=https://www.linkedin.com/in/marclouvion" \
  -H "x-api-key: YOUR_API_KEY"
```

### Python

```python
import requests

response = requests.get(
    "https://api.socialfetch.dev/v1/linkedin/profiles/posts?url=https://www.linkedin.com/in/marclouvion",
    headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()
print(data)
```