---
title: "Posts"
description: "LinkedIn 회원 또는 회사의 최근 게시물을 나열합니다."
---

```http
GET | POST /v1/linkedin/posts
```

파라미터는 `GET`의 쿼리 문자열로도, `POST`의 JSON 본문으로도 보낼 수 있습니다. 둘은 같습니다.

## 넘길 값

| 넘기는 값 | 읽는 것 | 비고 |
|---|---|---|
| `username` | 회원의 최근 게시물 |  |
| `company` | 회사의 최근 게시물 |  |

호출마다 소스는 하나만 넘기세요. 모든 식별자는 페이지 URL도 받습니다.

## 파라미터

| Parameter | Type | Required | Notes |
|---|---|---|---|
| `company` | string |  | Company vanity name (with or without company/, e.g. microsoft), or the company URL. |
| `limit` | integer 1–50 |  | Most posts to return (LinkedIn shows the most recent few). |
| `username` | string |  | Person vanity handle (with or without in/, e.g. williamhgates), or the profile URL. |

## 요청

```bash tab="cURL"
curl "https://gateway.apinoa.com/v1/linkedin/posts?company=microsoft&limit=3" \
  -H "x-api-key: $APINOA_API_KEY"
```

```js tab="JavaScript"
const params = new URLSearchParams({ company: "microsoft", limit: "3" });
const res = await fetch(`https://gateway.apinoa.com/v1/linkedin/posts?${params}`, {
  headers: { "x-api-key": process.env.APINOA_API_KEY },
});
const { success, data, error } = await res.json();
```

```python tab="Python"
import os

import requests

res = requests.get(
    "https://gateway.apinoa.com/v1/linkedin/posts",
    params={"company": "microsoft", "limit": "3"},
    headers={"x-api-key": os.environ["APINOA_API_KEY"]},
)
body = res.json()
```

## 응답

`data`에 [`Post`](/docs/api-reference/sns/response-schema#post) [`Page`](/docs/api-reference/sns/response-schema#page)를 돌려줍니다. 실제 응답을 줄인 것입니다. 배열은 앞쪽 항목만 남기고 긴 텍스트는 잘랐습니다.

```json
{
  "success": true,
  "data": {
    "platform": "linkedin",
    "items": [
      {
        "platform": "linkedin",
        "id": "7519053939393224704",
        "url": "https://www.linkedin.com/feed/update/urn:li:activity:7519053939393224704/",
        "author": {
          "platform": "linkedin",
          "handle": "microsoft",
          "displayName": "Microsoft",
          "url": "https://www.linkedin.com/company/microsoft",
          "ext": {
            "type": "organization"
          }
        },
        "createdAt": "2026-10-22T15:15:56.418Z",
        "media": [],
        "repostOf": {
          "platform": "linkedin",
          "id": "urn:li:ugcPost:7518982647881048064",
          "url": "https://www.linkedin.com/feed/update/urn:li:ugcPost:7518982647881048064/",
          "author": {
            "platform": "linkedin",
            "handle": "satyanadella",
            "displayName": "Satya Nadella",
            "url": "https://www.linkedin.com/in/satyanadella",
            "avatarUrl": "https://media.licdn.com/dms/image/v2/C5603AQHHUuOSlRVA1w/profile-displayphoto-shrink_400_400/profile-displayphoto-shrin…",
            "ext": {
              "type": "person",
              "headline": "Chairman and CEO at Microsoft"
            }
          },
          "text": "Keeping over a million elevators and escalators running smoothly is no small task.\n\nToday in Cologne, I heard about how…",
          "media": [
            {
              "type": "video",
              "url": "https://dms.licdn.com/playlist/vid/v2/D5605AQGAHHJsMz2u9g/mp4-720p-30fp-crf28/B56aFjK4XmKoB4-/0/1792665181541?e=2147483…",
              "thumbnailUrl": "https://media.licdn.com/dms/image/v2/D5605AQGAHHJsMz2u9g/videocover-high/B56aFjK4XmKoBI-/0/1792665171774?e=2147483647&v…",
              "variants": [
                {
                  "url": "https://dms.licdn.com/playlist/vid/v2/D5605AQGAHHJsMz2u9g/mp4-640p-30fp-crf28/B56aFjK4XmKoBg-/0/1792665181541?e=2147483…",
                  "bitrate": 376115,
                  "contentType": "video/mp4"
                },
                {
                  "url": "https://dms.licdn.com/playlist/vid/v2/D5605AQGAHHJsMz2u9g/mp4-720p-30fp-crf28/B56aFjK4XmKoB4-/0/1792665181541?e=2147483…",
                  "bitrate": 494998,
                  "contentType": "video/mp4"
                }
              ],
              "ext": {
                "captionsUrl": "https://dms.licdn.com/playlist/vid/v2/D5605AQGAHHJsMz2u9g/video-auto-caption-webvtt-acs-singleton/B56aFjK4XmKoEA-/0/179…"
              }
            }
          ],
          "metrics": {
            "likes": 7819,
            "comments": 300
          },
          "entities": {
            "mentions": [
              {
                "handle": "tke-global",
                "displayName": "TK Elevator"
              }
            ],
            "urls": [
              {
                "url": "https://lnkd.in/gEjFzJWC"
              }
            ]
          },
          "ext": {
            "mentions": [
              {
                "handle": "tke-global",
                "url": "https://de.linkedin.com/company/tke-global",
                "type": "organization"
              }
            ]
          }
        }
      }
    ]
  }
}
```

## 에러

| 상태 | 코드 | 의미 |
|---|---|---|
| 400 | `INVALID_CURSOR` | 이 오퍼레이션이 돌려준 `cursor`가 아닙니다. `cursor` 없이 처음부터 다시 호출하세요. |
| 400 | `INVALID_PARAMS` | 파라미터가 없거나, 알 수 없거나, 범위를 벗어났습니다. 메시지에 이름이 나옵니다. |
| 401 | `UNAUTHORIZED` | `x-api-key` 헤더가 없거나, 폐기되었거나 알 수 없는 키입니다. |
| 402 | `INSUFFICIENT_BALANCE` | 잔액이 이 호출 비용에 모자랍니다. 대시보드에서 충전하세요. |
| 404 | `NOT_FOUND` | 계정·게시물·그룹이 없거나, 비공개·삭제·연령 제한 상태입니다. |
| 429 | `MARKETPLACE_SATURATED` | 동시 호출이 너무 많습니다. `Retry-After` 초만큼 기다린 뒤 다시 시도하세요. |
| 502 | `UPSTREAM_ERROR` | 플랫폼이 쓸 수 없는 응답을 보냈습니다. 간격을 두고 다시 시도하세요. |

모든 코드는 [Errors](/docs/errors)에 있습니다. 실패한 호출은 과금되지 않습니다.

## 가격

**Price** $0.001 per call. [List price](https://apinoa.com/en/pricing); the rate steps down above 1,000 calls a day.

## 참고

- LinkedIn은 로그아웃한 방문자에게 가장 최근 게시물 몇 개만 보여주며, 더 깊은 페이지는 없습니다. `limit`은 돌아오는 개수의 상한입니다.
