# Hashtag posts API

4 endpoints on 4 platforms return the same Post object. The posts under a hashtag or topic. A call costs from $0.0020 to $0.0200, each endpoint at its own price; a failed call is free.

## Hashtag posts on each platform

| Platform | Endpoint | Path | A page | Returns | Price |
| --- | --- | --- | --- | --- | --- |
| Douyin | [Douyin hashtag videos](https://dataxapi.com/apis/douyin/hashtags/videos/list.md) | `GET /v1/douyin/hashtags/videos/list` | 10 | Post list | $0.0020 / call |
| Instagram | [Instagram hashtag posts](https://dataxapi.com/apis/instagram/hashtags/posts/list.md) | `GET /v1/instagram/hashtags/posts/list` | 35 | Post list | $0.0020 / call |
| TikTok | [TikTok hashtag videos](https://dataxapi.com/apis/tiktok/hashtags/videos/list.md) | `GET /v1/tiktok/hashtags/videos/list` | 20 | Post list | $0.0020 / call |
| Xiaohongshu (RedNote) | [Xiaohongshu topic notes](https://dataxapi.com/apis/xiaohongshu/topics/notes/list.md) | `GET /v1/xiaohongshu/topics/notes/list` | 10 | Post list | $0.0200 / call |

Prices are the prices in force. A call that fails, or whose result is uncertain, costs nothing.

## The Post object

Every endpoint above returns these fields, with the same names and types.

| Field | Type | Description |
| --- | --- | --- |
| `id` | text | ID; pass it unchanged to the get endpoint |
| `url` | link | Link that opens the post |
| `type` | text | Content format |
| `title` | text | Title |
| `text` | text | Body text |
| `lang` | text | Language of the text |
| `published_at` | time | When it was published |
| `author.id` | text | Author's account ID |
| `author.username` | text | Author's handle |
| `author.name` | text | Author's display name |
| `author.avatar_url` | link | Author's avatar |
| `author.verified` | yes/no | Whether the author is verified |
| `author.followers` | integer | Author's follower count |
| `metrics.likes` | integer | Likes |
| `metrics.comments` | integer | Comments |
| `metrics.shares` | integer | Shares |
| `metrics.favorites` | integer | Saves |
| `metrics.views` | integer | Views |
| `metrics.reposts` | integer | Reposts |
| `images` | list of link | Image addresses |
| `hashtags` | list of text | Hashtags, without the # |
| `mentions[].id` | text | Account ID |
| `mentions[].username` | text | Handle |
| `mentions[].name` | text | Display name |
| `is_pinned` | yes/no | Whether the author pinned it |
| `post_id` | text | ID of the thread's root post when this is a reply; otherwise null |
| `parent_id` | text | ID of the item it replies to directly; otherwise null |
| `root_id` | text | ID of the first-level reply its thread hangs under |

[The object's own page →](https://dataxapi.com/docs/objects/post/)

### Which platform fills which field

A field an endpoint cannot give is listed in `meta.unavailable` on every answer, so a gap is never a surprise.

| Platform | `title` | `lang` | `author.username` | `author.name` | `author.avatar_url` | `author.verified` | `author.followers` | `metrics.shares` | `metrics.favorites` | `metrics.views` | `metrics.reposts` | `images` | `hashtags` | `mentions[].id` | `mentions[].username` | `mentions[].name` | `is_pinned` | `post_id` | `parent_id` | `root_id` |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Douyin | available | available | available | available | available | not available | not available | available | available | not available | not available | available | available | not available | not available | not available | not available | not available | not available | not available |
| Instagram | not available | not available | not available | not available | not available | not available | not available | not available | not available | not available | not available | available | not available | not available | not available | not available | not available | not available | not available | not available |
| TikTok | not available | available | available | available | available | not available | not available | available | available | available | not available | not available | available | available | not available | not available | not available | not available | not available | not available |
| Xiaohongshu (RedNote) | available | not available | not available | available | available | not available | not available | available | available | not available | not available | available | available | available | not available | available | not available | not available | not available | not available |

## The same call on two platforms

Same parameter names, same paging, same answer. Only the path changes.

```bash
# Douyin
curl -G "https://api.dataxapi.com/v1/douyin/hashtags/videos/list" \
  --data-urlencode "id=7495235888088090635" \
  -H "Authorization: Bearer $DATAXAPI_API_KEY"

# TikTok: one word changes
curl -G "https://api.dataxapi.com/v1/tiktok/hashtags/videos/list" \
  --data-urlencode "id=nasa" \
  -H "Authorization: Bearer $DATAXAPI_API_KEY"
```

### 200 · application/json

Douyin hashtag videos: From a response recorded 2026-10-12 18:42 UTC. Names, text and IDs are examples, and so are the links: none is the recorded one (the page shows no one's personal data); the figures are as recorded. Long lists are cut. The request ID, cursor and balance are made up.

```jsonc
{
  "code": "ok",
  "request_id": "356aeb4a-4d28-4a5a-9d78-511caeafab1e",
  "data": {
    "items": [
      {
        "id": "7963545807100437923",
        "url": "https://www.douyin.com/video/7963545807100437923",
        "type": "video",
        "title": null,
        "text": "周末的周末露营日常，随手记录一下",
        "lang": "zh",
        "published_at": "2026-10-12T07:11:10.000Z",
        "author": {
          "id": "MS4wLjABAAAABGZA0lkiz3H7A-lxzB5Grql28u6Ykbup22O6ze_0pro",
          "username": "orange_soda22",
          "name": "橘子汽水不加冰",
          "avatar_url": "https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_9aa5b7cd5493d4d36c71.jpeg"
        },
        "metrics": {
          "likes": 11911,
          "comments": 190,
          "shares": 131,
          "favorites": 1081
        },
        "images": null,
        "hashtags": [
          "周末去哪儿",
          "户外生活",
          // … 3 more
        ]
      },
      // … 9 more
    ]
  },
  "page": {
    "next_cursor": "c1.4Q5NqjU0XrkYdbZs6W7g4SY48XO9yirp7eO24Gqb",
    "cursor_expires_at": "2026-10-12T19:42:37.000Z",
    "has_more": true,
    "returned": 10
  },
  "warnings": [],
  "meta": {
    "capability": "douyin.hashtags.videos.list",
    "result_status": "complete",
    "fetched_at": "2026-10-12T18:42:37.000Z",
    "cached": false,
    "replayed": false,
    "unavailable": {
      "metrics.views": "capability",
      "metrics.reposts": "platform",
      "author.verified": "capability",
      "mentions": "capability",
      "post_id": "platform",
      "parent_id": "platform",
      "root_id": "platform",
      "author.followers": "capability",
      "is_pinned": "capability"
    },
    "billing": {
      "amount": "0.002",
      "currency": "USD",
      "balance_after": "9.998"
    }
  }
}
```

## What comes back

- [The Post object](https://dataxapi.com/docs/objects/post/): Fields 28, Endpoints that return it 81, Platforms 19

## Questions about the Hashtag posts API

### How much does it cost?

$0.0020 a call on Douyin, Instagram, TikTok; $0.0200 a call on Xiaohongshu (RedNote). You are charged when data comes back; a failed call costs nothing. No subscription, no monthly minimum.

### How do I get every page?

Pass `page.next_cursor` back as `cursor` until `page.has_more` is false. Each page is one call at the same price.

### Does every platform fill every field?

No. 20 of the 28 fields are missing on at least one platform; the table on this page says which. A field an endpoint cannot give is named in `meta.unavailable` on every answer, never filled with a guess.

### Do I need an account on the platform?

No. One DataXAPI key reads all 4 platforms. No platform account and no cookie.

## Other data types

[Comment replies API](https://dataxapi.com/roles/comments-replies-list/), [Trending topics API](https://dataxapi.com/roles/trends-list/), [Account profile API](https://dataxapi.com/roles/accounts-get/), [Account posts API](https://dataxapi.com/roles/accounts-posts-list/), [Comments API](https://dataxapi.com/roles/posts-comments-list/), [Post detail API](https://dataxapi.com/roles/posts-get/), [Post search API](https://dataxapi.com/roles/posts-search/), [Trending posts API](https://dataxapi.com/roles/posts-trending/), [Account search API](https://dataxapi.com/roles/accounts-search/), [Post metrics API](https://dataxapi.com/roles/posts-metrics/), [Community posts API](https://dataxapi.com/roles/communities-posts-list/), [Ad detail API](https://dataxapi.com/roles/ads-get/), [Advertiser ads API](https://dataxapi.com/roles/advertisers-ads-list/), [Advertiser search API](https://dataxapi.com/roles/advertisers-search/), [Ad library search API](https://dataxapi.com/roles/ads-search/), [Video transcript API](https://dataxapi.com/roles/transcripts-get/), [Followers API](https://dataxapi.com/roles/accounts-followers-list/), [Community profile API](https://dataxapi.com/roles/communities-get/), [Product detail API](https://dataxapi.com/roles/products-get/), [Product reviews API](https://dataxapi.com/roles/products-reviews-list/), [Product search API](https://dataxapi.com/roles/products-search/), [Creator search API](https://dataxapi.com/roles/creators-search/), [Creator profile API](https://dataxapi.com/roles/creators-get/), [Creator audience API](https://dataxapi.com/roles/creators-audience-get/), [Creator metrics API](https://dataxapi.com/roles/creators-metrics/), [Creator posts API](https://dataxapi.com/roles/creators-posts-list/), [All 21 platforms →](https://dataxapi.com/apis/)

---

Last checked 2026-10-21 11:10 UTC. Catalog revision c48ce454ae6c4c65. [HTML version](https://dataxapi.com/roles/topics-posts-list/)
