Profiles
List a TikTok creator's followers or the accounts they follow.
GET | POST /v1/tiktok/profilesSend parameters as a query string with GET, or as a JSON body with POST. Both are equivalent.
What to Pass
| Pass | Reads | Notes |
|---|---|---|
username or userId | The creator's followers or following | type: followers or following (required) |
Pass one source per call. Every identifier also takes the page URL.
Parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
cursor | string | Opaque cursor from the previous page's cursor. Pass it alone for the next page. | |
limit | integer 1–30 | Items per page, 1–30. | |
type | enum | Which list: followers or following. followers following | |
userId | string | Creator secUid. Pass it instead of a username to save the lookup (1 unit instead of 2). | |
username | string | Creator @handle (with or without @), or the profile URL. |
Request
curl "https://gateway.apinoa.com/v1/tiktok/profiles?username=tiktok&type=followers&limit=3" \
-H "x-api-key: $APINOA_API_KEY"Response
Returns Page of Account in data. A real response, shortened: arrays keep their first entries and long text is cut.
{
"success": true,
"data": {
"platform": "tiktok",
"items": [
{
"platform": "tiktok",
"id": "7651672077083001872",
"handle": "8_.bb2",
"displayName": "Sana🪽",
"url": "https://www.tiktok.com/@8_.bb2",
"avatarUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/fed157f43458b599f7b81bd4799d0cc9~tplv-tiktokx-cropcenter:10…",
"counts": {
"followers": 1,
"following": 16,
"posts": 0
},
"private": true,
"ext": {
"secUid": "MS4wLjABAAAAKL9ua3uVT6GJrdgHm4DKeOvw6bx2VuMVurOM7_jddNL9Br1eP66TaawahpsasELo",
"totalLikes": 0,
"likesGiven": 182,
"friendCount": 0
}
}
],
"cursor": "fPnN2iYq-3kvLCt6ANxmLXJf1aAzHKFbffLTUqzrvC4OoR3FZIhUoq9NMXwBuzOaZT_5WI_8P-Rw2hz3CL5chscH2UBm8AwGXnwSXHOxla9_MOaDL5RNS3d…",
"ext": {
"listCount": 96414142
}
}
}Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | INVALID_CURSOR | The cursor is not one this operation returned. Start again without it. |
| 400 | INVALID_PARAMS | A parameter is missing, unknown or out of range. The message names it. |
| 401 | UNAUTHORIZED | The x-api-key header is missing, or the key is revoked or unknown. |
| 402 | INSUFFICIENT_BALANCE | The balance does not cover this call. Top up in the dashboard. |
| 404 | NOT_FOUND | The account, post or group does not exist, or is private, deleted or age-restricted. |
| 429 | MARKETPLACE_SATURATED | Too many concurrent calls. Retry after the Retry-After seconds. |
| 502 | UPSTREAM_ERROR | The platform answered with something unusable. Retry with backoff. |
Every code is listed in Errors. Failed calls are not billed.
Pricing
Price $0.001 per call, plus $0.001 for each extra call it makes — at most 1 more, so $0.002 in total. List price; the rate steps down above 1,000 calls a day.