> ## Documentation Index
> Fetch the complete documentation index at: https://docs.theswarm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Profile Posts

> Pulls posts from a profile's social media accounts. Returns the latest 10 posts by default — use the perPage parameter to request up to 100. The response includes a postUrn for each post, which is used as the input for the Get Comments, Get Reactions, and Get Reshares endpoints.

<Note>
  This endpoint is in beta. Please report any issues to [support@theswarm.com](mailto:support@theswarm.com)
</Note>

## Endpoint

```text theme={null}
GET https://bee.theswarm.com/social/profile/posts
```

## Parameters

Choose one:

| Parameter          | Type    | Required | Description                                                    |
| :----------------- | :------ | :------- | :------------------------------------------------------------- |
| `linkedinName`     | string  | One of   | LinkedIn profile URL slug                                      |
| `linkedinEntityId` | string  | One of   | LinkedIn profile alphanumeric entity ID                        |
| `perPage`          | integer | No       | Number of posts to return. Defaults to `10`. Maximum is `100`. |
| `paginationToken`  | string  | No       |                                                                |

## Request Example

```text theme={null}
GET https://bee.theswarm.com/social/profile/posts?linkedinName=olivier-roth
```

```text theme={null}
# Request up to 100 posts
GET https://bee.theswarm.com/social/profile/posts?linkedinName=olivier-roth&perPage=100
```

<RequestExample>
  ```text GET theme={null}
  https://bee.theswarm.com/social/profile/posts?linkedinName=olivier-roth
  ```
</RequestExample>

<ResponseExample>
  ```json Get Posts theme={null}
  {
      "posts": [
          {
              "urn": "urn:li:activity:7440064477812854784",
              "actor": {
                  "linkedin_url": "https://www.linkedin.com/in/olivier-roth",
                  "name": "Olivier Roth",
                  "entity_type": "person",
                  "image": "https://media.licdn.com/dms/image/v2/D5603AQE7PKvsHmvlzA/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1697662162523?e=1775692800&v=beta&t=VnD-jQQgXUJecfx7cwY-ekmChHfSWmNwy_ZR_yWwLLc",
                  "linkedin_id": "olivier-roth"
              },
              "post_range": {
                  "earliest": "2026-03-18T14:47:57.938Z",
                  "latest": "2026-03-19T14:47:57.937Z"
              },
              "post_age": "4 days ago",
              "social_activity_counts": {
                  "comments_count": 0,
                  "shares_count": 2,
                  "reactions_count": 10,
                  "reaction_type_counts": [
                      {
                          "count": 9,
                          "reaction_type": "LIKE"
                      },
                      {
                          "count": 1,
                          "reaction_type": "PRAISE"
                      }
                  ]
              },
              "images": [],
              "url": "https://www.linkedin.com/posts/olivier-roth_how-to-use-warm-intros-every-week-without-activity-7440064477812854784-Aw5i?utm_source=social_share_send&utm_medium=member_desktop_web&rcm=ACoAAGH_-e4BL1eP90rlfe0PR8UDTmpEPOS5w-E",
              "video": {
                  "url": "",
                  "thumbnail": ""
              },
              "reshared_post": null,
              "commentary": "How to use warm intros every week, without burning through your network? 🤔 \n\nFirst of, intro fatigue is a very real thing. \nYou're asking someone to spend social capital on your behalf. \nThat is high-touch and high-trust. \nIf you treat it like infinite inventory, it will stall!\n\nDo this instead\n\n1️⃣ Start by segmenting your \"connectors\" (that's what we call them, people you'll ask intros to :)\n\nNot every relationship should run on the same cadence. \nCustomers might be ok with a quarterly or twice-a-year touch. \nInvestors are often comfortable with a monthly update. \nIndustry besties will help you a lot if you ask good intros!\n \n💡 \"Super Connectors\", the people who genuinely enjoy making introductions, can handle a weekly shortlist when it is tight, relevant, and clearly prioritised. \nThe timing matters.\n\n2️⃣ Acknowledgement is part of the system.\n\nIf someone is opening doors for you, show that you value it. \nPersonalized gifts, co-marketing or content feature, product perks, even a clear update on impact. \n\n💡 This context reinforces the relationship and makes the next ask easier.\n\n3️⃣ Protect them from overload.\n\nSet a cap on intro requests. \nBatch them. \nSend a curated list of five to ten names with clear context.\n\n💡 When the stakes are explicit, one exchange can unlock multiple paths.\n\n4️⃣ Listen to the signals.\n\nTrack response rates. \nTrack acceptance. \nIf engagement dips, slow the cadence or refine the target list. \n\nWe have seen Super Connectors review a five-name list every Friday, while customers prefer a lighter quarterly rhythm. \n\n💡 Sequence matters.\n\nCadence protects social capital.\nIn a noisy outreach environment, social capital is the asset you are managing.\n\nWe can help too! Check out swarmsend.ai for our managed service and latest tech to support this for you 🤩",
              "header": "",
              "header_entity": {
                  "entity_type": "",
                  "image": "",
                  "linkedin_url": "",
                  "linkedin_id": "",
                  "name": ""
              }
          }
      ],
      "paginationToken": "dXJuOmxpOmFjdGl2aXR5Ojc0MzI0NTA1ODc0NDg4MDMzMjgtMTc3MjAzNDMwODI4MQ=="
  }
  ```
</ResponseExample>


## OpenAPI

````yaml openapi.json GET /social/profile/posts
openapi: 3.1.0
info:
  title: Swarm API
  version: 1.0.0
  contact:
    name: The Swarm
    url: https://theswarm.com
    email: hello@theswarm.com
servers:
  - url: https://bee.theswarm.com
security:
  - ApiKeyAuth: []
tags:
  - name: profiles
    description: Operations related to profiles
  - name: companies
    description: Operations related to companies
  - name: teams
    description: Operations for managing teams and connectors
  - name: social
    description: Operations related to social media posts and interactions
  - name: mcp
    description: Model Context Protocol endpoint for AI assistant integrations
  - name: credits
    description: Operations related to credit usage
  - name: network-mapper
    description: Operations for mapping connections and relationships across your network
paths:
  /social/profile/posts:
    get:
      tags:
        - social
      summary: Get profile posts
      description: Fetch LinkedIn posts published by a person
      operationId: getProfilePosts
      parameters:
        - name: linkedinID
          in: query
          description: LinkedIn URL slug of the person
          schema:
            type: string
        - name: linkedinName
          in: query
          description: LinkedIn URL slug of the person
          schema:
            type: string
        - name: linkedinEntityID
          in: query
          description: LinkedIn alphanumeric entity ID of the person
          schema:
            type: string
        - name: perPage
          in: query
          description: Number of posts to return (max 100)
          schema:
            type: integer
            minimum: 0
            maximum: 100
        - name: paginationToken
          in: query
          description: Pagination token from the previous response
          schema:
            type: string
      responses:
        '200':
          description: List of posts
          content:
            application/json:
              schema:
                type: object
                properties:
                  posts:
                    type: array
                    items:
                      $ref: '#/components/schemas/SocialPost'
                  paginationToken:
                    type: string
                    description: Token to retrieve the next page of results
                required:
                  - posts
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        5XX:
          $ref: '#/components/responses/5XX'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    SocialPost:
      type: object
      properties:
        urn:
          type: string
          description: LinkedIn post URN
        actor:
          $ref: '#/components/schemas/SocialActor'
        post_range:
          $ref: '#/components/schemas/SocialPostRange'
        post_age:
          type: string
        social_activity_counts:
          $ref: '#/components/schemas/SocialActivityCounts'
        images:
          type: array
          items:
            type: string
        url:
          type: string
        video:
          $ref: '#/components/schemas/SocialVideo'
        reshared_post:
          $ref: '#/components/schemas/SocialPost'
        commentary:
          type: string
        header:
          type: string
        header_entity:
          $ref: '#/components/schemas/SocialHeaderEntity'
    SocialActor:
      type: object
      properties:
        entity_type:
          type: string
        image:
          type: string
        linkedin_url:
          type: string
        linkedin_id:
          type: string
        name:
          type: string
    SocialPostRange:
      type: object
      properties:
        earliest:
          type: string
        latest:
          type: string
    SocialActivityCounts:
      type: object
      properties:
        comments_count:
          type: integer
        shares_count:
          type: integer
        reactions_count:
          type: integer
        reaction_type_counts:
          type: array
          items:
            $ref: '#/components/schemas/SocialReactionTypeCount'
    SocialVideo:
      type: object
      properties:
        url:
          type: string
        thumbnail:
          type: string
    SocialHeaderEntity:
      type: object
      properties:
        entity_type:
          type: string
        image:
          type: string
        linkedin_url:
          type: string
        linkedin_id:
          type: string
        name:
          type: string
    ErrorResponse:
      type: object
      properties:
        code:
          description: Error status code
          type: integer
        errors:
          type: array
          items:
            type:
              - string
              - object
      required:
        - code
    SocialReactionTypeCount:
      type: object
      properties:
        count:
          type: integer
        reaction_type:
          type: string
  responses:
    '400':
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    '401':
      description: Unauthorized
    '403':
      description: Forbidden
    5XX:
      description: Unexpected error
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````