Skip to content
All TikTok APIs
Posts & videosTikTokVideo · List By Hashtag

TikTok hashtag videos

Page through public TikTok videos and engagement counts under a hashtag ID.

POST/v1/tiktok/hashtags/videos

Chinese name: TikTok 话题作品 · 视频 · 按话题列出 按话题 ID 分页读取话题下的 TikTok 公开视频和互动计数。
tiktok.hashtags.videos@v1

Price per call

¥0.02/ call

Nonempty complete results are charged; empty, partial, and failed results are not.

Current statusAvailableChecking live status
Checking live status

Try it

Sign in and run one real call. The result and charge appear right here.

Security check

Loading the security check…

Checking live execution status…

Execution result

// Result

Request parameters

hashtag_idstringrequired

pattern: "^\\d{1,21}$" · minLength: 1 · maxLength: 256

Example: "7551"

countintegeroptional

default: 20 · minimum: 1 · maximum: 30

cursorstringoptional

minLength: 1

Request JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "hashtag_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "^\\d{1,21}$"
    },
    "count": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "cursor": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "hashtag_id"
  ],
  "additionalProperties": false
}

Code samples

Install the SDK with npm i @dataxapi/sdk or pip install dataxapi, and put your API key in the DATAXAPI_API_KEY environment variable.

curl -X POST https://api.dataxapi.com/v1/tiktok/hashtags/videos \
  -H "Authorization: Bearer $DATAXAPI_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"hashtag_id":"7551"}'

Response example

200 · application/json
{
  "code": 200,
  "request_id": "req_example_tiktok_hashtags_videos",
  "message": "success",
  "data": {
    "items": [
      {
        "aweme_id": "7326156045968067873",
        "desc": "Public TikTok caption",
        "create_time": 1705900000,
        "author": {
          "uid": "107955",
          "unique_id": "tiktok",
          "nickname": "TikTok"
        },
        "statistics": {
          "digg_count": 1200,
          "comment_count": 80,
          "share_count": 35,
          "play_count": 54000
        },
        "region": "US",
        "text_extra": [
          {
            "hashtag_name": "fyp"
          }
        ]
      }
    ]
  },
  "page": {
    "next_cursor": "cursor_example"
  },
  "warnings": [],
  "meta": {
    "listing_id": "tiktok.hashtags.videos",
    "version": "v1",
    "catalog_release_id": "catalog-production-2026-09-19.b069be57",
    "price_book_version": "pricebook-production-2026-09-19.4487e352",
    "result_status": "complete",
    "charged_amount": "0.02",
    "balance_after": "49.98",
    "currency": "CNY"
  }
}
Response fields
codenumber
const: 200
request_idstring
messagestring
const: "success"
dataobject
pageobject
warningsarray
metaobject
Response JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "number",
      "const": 200
    },
    "request_id": {
      "type": "string"
    },
    "message": {
      "type": "string",
      "const": "success"
    },
    "data": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "aweme_id": {},
              "desc": {},
              "create_time": {},
              "author": {},
              "statistics": {},
              "region": {},
              "text_extra": {}
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "items"
      ],
      "additionalProperties": false
    },
    "page": {
      "type": "object",
      "properties": {
        "next_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "next_cursor"
      ],
      "additionalProperties": false
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "meta": {
      "type": "object",
      "properties": {
        "listing_id": {
          "type": "string",
          "const": "tiktok.hashtags.videos"
        },
        "version": {
          "type": "string",
          "const": "v1"
        },
        "catalog_release_id": {
          "type": "string",
          "minLength": 1
        },
        "price_book_version": {
          "type": "string",
          "minLength": 1
        },
        "result_status": {
          "type": "string",
          "enum": [
            "complete",
            "empty",
            "partial"
          ]
        },
        "charged_amount": {
          "type": "string"
        },
        "balance_after": {
          "type": "string"
        },
        "currency": {
          "type": "string",
          "const": "CNY"
        }
      },
      "required": [
        "listing_id",
        "version",
        "catalog_release_id",
        "price_book_version",
        "result_status",
        "charged_amount",
        "balance_after",
        "currency"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "code",
    "request_id",
    "message",
    "data",
    "page",
    "warnings",
    "meta"
  ],
  "additionalProperties": false
}

Usage notes

Good for

  • Use it to see which public videos are spreading under a hashtag.

Not for

  • Do not use it for hashtag search, complete archives, or ad data.

Known limitations

  • It needs the numeric hashtag ID; check the name with hashtag detail first.
  • Result order is set by the platform and does not explain ranking causality.
  • Only the returned DataXAPI cursor can continue the same query.
  • Nested objects such as the author are returned as upstream sends them, minus tokens, account-binding flags, privacy settings, and tracking fields; avatar and media links inside them may expire.

Billing

¥0.02 per call. Nonempty complete results are charged; empty, partial, and failed results are not.

See all pricing →