# TikTok API without approval

StoriesFly runs an unofficial TikTok API for public data. Send a username or a video link and get the profile, videos, stories, followers, following, reposts or the video without the watermark as JSON. You do not apply to TikTok or register an app. You send an API key.

## What the TikTok API returns

Profile, videos, stories, followers, following and reposts of a public account, and one video with its numbers and the file without the watermark. Each is a `GET` request under `/api/v1/` with your key in the `X-Api-Key` header. A call costs 1 request, and so does each page of a list.

Followers, following, videos and reposts come a page at a time: pass `next_cursor` back as `cursor` for the next page. Page size follows TikTok and varies by endpoint.

| Endpoint | Returns | Cost |
| --- | --- | --- |
| [GET /api/v1/tiktok/user/profile](https://storiesfly.com/developers/docs/tiktok-user-profile) | TikTok profile with followers, following, likes and video count. | 1 request |
| [GET /api/v1/tiktok/user/videos](https://storiesfly.com/developers/docs/tiktok-user-videos) | A TikTok account's videos with numbers, page by page; file links on page one. | 1 request per page |
| [GET /api/v1/tiktok/user/stories](https://storiesfly.com/developers/docs/tiktok-user-stories) | TikTok stories live now. | 1 request |
| [GET /api/v1/tiktok/user/followers](https://storiesfly.com/developers/docs/tiktok-user-followers) | TikTok followers, page by page; a hidden list answers an empty page. | 1 request per page |
| [GET /api/v1/tiktok/user/following](https://storiesfly.com/developers/docs/tiktok-user-following) | TikTok accounts followed, page by page; a hidden list answers an empty page. | 1 request per page |
| [GET /api/v1/tiktok/user/reposts](https://storiesfly.com/developers/docs/tiktok-user-reposts) | Videos a TikTok account reposted, page by page, with their authors. | 1 request per page |
| [GET /api/v1/tiktok/video](https://storiesfly.com/developers/docs/tiktok-video) | One TikTok video without the watermark, with views, likes, comments and shares. | 1 request |

## Make the first call

Get a key from the [dashboard](https://storiesfly.com/developers/dashboard), then ask for a profile by username. The answer is JSON with the numbers TikTok shows on the profile.

**cURL**

```bash
curl "https://storiesfly.com/api/v1/tiktok/user/profile?username=khaby.lame" \
  -H "X-Api-Key: sf_live_your_key"
```

**Node.js, npm client**

```typescript
import { StoriesFly } from "storiesfly";

const sf = new StoriesFly({ apiKey: process.env.STORIESFLY_KEY! });

const profile = await sf.tiktok.user.profile({ username: "khaby.lame" });
console.log(profile);
```

**Node.js, three pages of followers (each page is 1 request)**

```typescript
import { StoriesFly } from "storiesfly";

const sf = new StoriesFly({ apiKey: process.env.STORIESFLY_KEY! });

for await (const page of sf.paginate(sf.tiktok.user.followers, { username: "khaby.lame" }, { maxPages: 3 })) {
  console.log(page.users.length);
}
```

**Response**

```json
{
  "id": null,
  "sec_uid": null,
  "username": "khaby.lame",
  "full_name": "Khabane lame",
  "bio": "Se vuoi ridere sei nel posto giusto😎 If u wanna laugh u r in the right place😎",
  "profile_pic_url": "https://p16-common.tiktokcdn.com/tos-useast8-avt-0068-tx2/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:720:720.webp",
  "followers": 162979750,
  "following": null,
  "likes": null,
  "videos": null,
  "verified": true,
  "is_private": null
}
```

## Official TikTok APIs vs StoriesFly

TikTok's official APIs are the right tool when you build an app that people sign in to, or when you post to an account you own. The StoriesFly API is for reading public accounts you name. The two do different jobs, and some teams use both.

|   | Official TikTok APIs | StoriesFly API |
| --- | --- | --- |
| Approval | You register a developer app, and TikTok reviews it before it goes live | No app and no review: an API key as soon as you sign in with Telegram |
| What it reads | The data the signed-in person allows your app to use, within the permissions TikTok approves; the Research API is for approved researchers | The public data of any public account you name: profile, videos, stories, followers, following, reposts |
| Who can use it | Developers whose app and use case TikTok approves | Anyone with an API key |
| Posting and account management | Yes, with the right product and permission | No, read only |
| Setup | An app, redirect URLs, a sign-in flow for your users | One header: `X-Api-Key` |

## What it costs

Every TikTok call is 1 request, or one page of a list. That is $1.50 per 1,000 at the Start rate, and it is paid from a prepaid balance that never expires, from $10. Your first 100 requests are free when you sign in with Telegram.

A video file without the watermark by its link, with no numbers, is cheaper through `download`: $0.20 per 1,000 for a TikTok link, $0.50 per 1,000 for an Instagram link. See [pricing](https://storiesfly.com/developers/pricing) for the levels and the billing rules.

Answers are between 10 minutes and 60 minutes old, depending on the endpoint. A wrong parameter and a failure on our side cost nothing.

## What it cannot do

- It reads public accounts only.
- It reads the accounts and videos you name. It does not list trending sounds or hashtags.
- An account that hides its followers or following list answers an empty page with `hidden` set to `true`.
- It cannot post, comment, like, follow or send messages.
- File links in an answer are temporary: save the video when you need it later.
- You never log in to TikTok. You send an API key.

## Docs, MCP and next steps

Every parameter, error and example is in the docs: [tiktok/user/profile](https://storiesfly.com/developers/docs/tiktok-user-profile), [tiktok/user/videos](https://storiesfly.com/developers/docs/tiktok-user-videos), [tiktok/user/stories](https://storiesfly.com/developers/docs/tiktok-user-stories), [tiktok/user/followers](https://storiesfly.com/developers/docs/tiktok-user-followers), [tiktok/user/following](https://storiesfly.com/developers/docs/tiktok-user-following), [tiktok/user/reposts](https://storiesfly.com/developers/docs/tiktok-user-reposts) and [tiktok/video](https://storiesfly.com/developers/docs/tiktok-video).

To use the same data from ChatGPT or Claude without code, see the [TikTok MCP server](https://storiesfly.com/developers/tiktok-mcp). For Instagram, see [Instagram API without login](https://storiesfly.com/developers/instagram-api-without-login). [Get your key](https://storiesfly.com/developers/dashboard) to start.

## Questions developers ask

### Is this the official TikTok API?

No. It is a separate API by StoriesFly, not affiliated with or endorsed by TikTok. Use TikTok's official APIs to post to or manage an account you own, or to build an app people sign in to. Use this one to read public accounts.

### Do I need TikTok's approval or a developer app?

No. You need a StoriesFly API key, which you get when you sign in with Telegram. There is no app to register and no review.

### Is there a TikTok followers API?

Yes. `tiktok/user/followers` returns the followers of a public account a page at a time, each with a username, name, picture, verified badge and the follower, following and like counts, and `next_cursor` for the next page. `tiktok/user/following` does the same for the accounts it follows. An account that hides the list answers an empty page with `hidden` set to `true`.

### Can I get a TikTok video without the watermark?

Yes. `tiktok/video` takes the link of a video, a short `vm.tiktok.com` link too, and returns the file without the watermark, the sound, the caption, hashtags, author, time and the views, likes, comments and shares.

### What does the TikTok API cost?

1 request per call, or per page of a list: $1.50 per 1,000 at the Start rate. Your first 100 requests are free. It is paid from a prepaid balance that never expires, from $10.

### Can I use it from ChatGPT or Claude?

Yes. The same data is available as the [TikTok MCP server](https://storiesfly.com/developers/tiktok-mcp): paste one address into ChatGPT, Claude or Cursor, sign in with Telegram and ask about an account in plain words.

## Links

- [This page on the site](https://storiesfly.com/developers/tiktok-api)
- [Read the TikTok docs](https://storiesfly.com/developers/docs/tiktok-user-profile)
- [Instagram data API](https://storiesfly.com/developers): what the API is and what it returns
- [Pricing](https://storiesfly.com/developers/pricing): rates, examples and billing rules
- [Documentation](https://storiesfly.com/developers/docs): quick start, authentication, errors and every endpoint
- [OpenAPI file](https://storiesfly.com/openapi.json): the whole API in one file
- [API dashboard](https://storiesfly.com/developers/dashboard): get a key and top up
- [Changelog](https://storiesfly.com/developers/changelog): what changed and when
