# Threads 评论 API (threads.comments)

- Canonical page: https://everyinfra.com/threads-api/comments
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "threads", "action": "comments", "params": {...}}
- Price: $0.000556 per call ($0.56 per 1,000 requests); failed calls and empty results are not charged
- Returns: list
- Mode: sync; add "mode": "async" for slow tasks

Threads 评论接口按帖子的完整链接 `url` 读取这条帖子下的评论，每条带正文 `text`、作者用户名和昵称、是否认证 `author_is_verified`、点赞数、评论数和发布时间。它回答「大家在这条帖子下说了什么」，适合做口碑观察、收集产品反馈，或者找出认证账号留下的评论。

`reply_to` 给出这条评论回复的是哪一条内容，内容详情那一页没有这个字段，用它把回复接回上一级。`url` 要填完整的帖子链接，形如 https://www.threads.com/@用户名/post/帖子短码。接口不保证返回所有嵌套层级，需要完整楼层结构时，别把结果当成全量。

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=threads&action=comments

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| url | not declared | yes | not declared | post_detail / comments 的帖子完整链接，例如 https://www.threads.com/@用户名/post/帖子短码；comments 不保证返回所有嵌套层级。 |
| limit | integer (1–) | no | not declared | 这次调用最多返回的条数，整数，至少为 1；不传按默认值，实际返回可能少于这个数。 |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| id | 该记录在原平台上的唯一标识。仅在同一平台内唯一，跨平台可能重复。 |
| url | 该记录在原平台上的可访问链接。 |
| text | 正文内容，已去除 HTML 标签，全文返回、不截断（个别平台的列表结果本身只有摘要，以该平台的字段说明为准）。 |
| author_username | 作者用户名（@handle），通常可用于拼 URL。 |
| author_name | 作者昵称（显示名）。 |
| author_is_verified | 作者是否已认证。 |
| like_count | 点赞数。null 表示该平台或该接口不公开此数据，不等于 0。 |
| comment_count | 评论数。null 表示不公开，不等于 0。 |
| reply_to | 被回复的内容。 |
| posted_at | 发布时间，ISO 8601 格式、UTC 时区（如 2026-08-07T12:34:56+00:00）。平台只给非标准字符串时原样透传，解析前建议做容错。null 表示平台未公开。 |
| platform | 数据来源平台标识，与请求里的 platform 一致（如 xiaohongshu、tiktok）。 |

## Example

```bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "threads",
  "action": "comments",
  "params": {
    "url": "https://www.threads.com/@openai/post/DW7RXR7EnRC"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "threads",
        "action": "comments",
        "params": {
            "url": "https://www.threads.com/@openai/post/DW7RXR7EnRC",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-09-26T08:56:04Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2 of 21. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "threads",
  "action": "comments",
  "results": [
    {
      "id": "DW7R6s-Eu4u",
      "url": "https://www.threads.com/@•••/post/DW7R6s-Eu4u",
      "text": "Aw shit MIGHT have to downgrade Claude for that 10x plus. @openai help convince me haha. Make it irrefutable",
      "author_username": "•••",
      "author_name": "•••",
      "author_is_verified": true,
      "like_count": 5,
      "comment_count": 0,
      "reply_to": "openai",
      "posted_at": "2026-04-09T21:37:07+00:00",
      "platform": "threads"
    },
    {
      "id": "DW7TiRME15N",
      "url": "https://www.threads.com/@•••/post/DW7TiRME15N",
      "text": "@••• and @••• must be winning bigly if you guys need to do this. Dropping ads in chats really breached trust as no one ever wants their chatbot to uae private discussions to help you place adverts and mint money!",
      "author_username": "•••",
      "author_name": "•••",
      "author_is_verified": false,
      "like_count": 0,
      "comment_count": 1,
      "reply_to": "openai",
      "posted_at": "2026-04-09T21:51:16+00:00",
      "platform": "threads"
    }
  ],
  "count": 21,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### 评论能保证拿全吗？

不能保证。接口不保证返回所有嵌套层级，深层的回复可能不在结果里。统计评论总量时，别把返回的行数当成帖子的全部评论数；要核对帖子本身有多少评论，到内容详情里读帖子的评论数。

### `reply_to` 有什么用？

它是被回复的内容，只有评论接口有。按它可以把一条回复归到它所回应的那条评论下面，整理成对话串。因为嵌套层级不保证齐全，回复链可能断；遇到 `reply_to` 指向的内容不在结果里，别当成错误。

### 评论接口和内容详情怎么配合？

两个接口用同一个帖子链接。内容详情返回一个对象，带浏览数、转发数、引用转发数、图片和话题标签；评论接口返回列表，每行是一条评论，多一个 `reply_to`。先用内容详情看帖子自己的热度，再用评论接口看大家说了什么。

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=threads
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
