> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scraperize.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Following

> Scrapes the accounts a public TikTok user follows, by username (`handle`) or numeric user id (`userId`) — pass exactly one — 30 per page, most recently followed first. Each account comes with its user id and secUid, username, nickname, bio, profile link, avatars (three sizes), verified / private / TikTok Shop seller flags, whether its liked videos are public, and exact stats (followers, following, likes, videos, friends, videos liked). Pass the returned `cursor` (with the same handle / userId) to get the next page; it is null on the last page. Private accounts, and accounts that hide who they follow, return 404.

<Info>
  **Cost: 1 credit** per successful request. Errors and cache hits (`cache_max_age`) are free.
</Info>

<Accordion title="Copy for AI assistant" icon="sparkles">
  Paste this into ChatGPT, Claude or your coding assistant to generate working code for this endpoint (use the copy button).

  ```text Prompt
  I want to make an API call to /v1/tiktok/user/following. Here are the details:

  Endpoint: GET https://api.scraperize.com/v1/tiktok/user/following
  Description: Scrapes the accounts a public TikTok user follows, by username (`handle`) or numeric user id (`userId`) — pass exactly one — 30 per page, most recently followed first. Each account comes with its user id and secUid, username, nickname, bio, profile link, avatars (three sizes), verified / private / TikTok Shop seller flags, whether its liked videos are public, and exact stats (followers, following, likes, videos, friends, videos liked). Pass the returned `cursor` (with the same handle / userId) to get the next page; it is null on the last page. Private accounts, and accounts that hide who they follow, return 404.

  Required Headers:
  - x-api-key: Your API key

  Parameters:
  - handle (string): The TikTok username (with or without a leading @, or a tiktok.com/@username URL). Provide this or `userId`, not both.
  - userId (string): The TikTok account's numeric user id. Provide this or `handle`, not both.
  - cursor (string): The `cursor` from the previous response, to get the next page. Omit for the first page.
  - cache_max_age (select): Optional. Return a cached result if one this age or newer exists — served for **0 credits** with `meta.cached=true` and `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and refreshes the cache. Omit to always scrape fresh.

  Example Response:
  {
    "data": {
      "profile": {
        "id": "6780344874811442181",
        "secUid": "MS4wLjABAAAAEf96k3JW8-3eOhgzgQswlFF6ZDnn1dzqWWorJjwDsiNZymqTtvOcFhp_RiYYST6s",
        "handle": "natgeo",
        "nickname": "National Geographic",
        "url": "https://www.tiktok.com/@natgeo",
        "followingCount": 62
      },
      "following": [
        {
          "id": "7666106259686999053",
          "secUid": "MS4wLjABAAAA5o3uVXuYEDPS9fCjxRRvatYyP9tj_XB1ah919FFzbjQKMVEEeJljIuph4E9G1Njb",
          "handle": "natgeofamily",
          "nickname": "National Geographic Family",
          "bio": "Inspiring wonder and curiosity for families around the world 💛",
          "url": "https://www.tiktok.com/@natgeofamily",
          "avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/e72d2db948c77f1133404642a13189b4~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=677349b…",
          "avatars": {
            "large": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/e72d2db948c77f1133404642a13189b4~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=677349b…",
            "medium": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/e72d2db948c77f1133404642a13189b4~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=dfd19433&…",
            "thumb": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/e72d2db948c77f1133404642a13189b4~tplv-tiktokx-cropcenter:100:100.jpeg?dr=14579&refresh_token=92a3083c&…"
          },
          "verified": false,
          "privateAccount": false,
          "secret": false,
          "ttSeller": false,
          "openFavorite": false,
          "downloadSetting": 0,
          "ftc": false,
          "isADVirtual": false,
          "stats": {
            "followerCount": 26124,
            "followingCount": 4,
            "likeCount": 751896,
            "videoCount": 66,
            "friendCount": 0,
            "diggCount": 1
          }
        }
      ],
      "count": 30,
      "total": 62,
      "cursor": "1659024187",
      "hasMore": true,
      "fetchedAt": "2026-10-05T14:45:16.975Z"
    },
    "meta": {
      "requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
      "creditsCharged": 1,
      "creditsRemaining": 4999,
      "cached": false
    }
  }

  Please help me write code in my preferred programming language to make this API call and handle the response appropriately. Include error handling and best practices.
  ```
</Accordion>


## OpenAPI

````yaml /api-reference/openapi.json get /v1/tiktok/user/following
openapi: 3.0.3
info:
  title: Scraperize API
  version: 1.0.0
  description: >-
    Extract public data from social media platforms as clean JSON. Endpoints are
    split by platform and by what they return, e.g. `GET /v1/twitter/tweet`.


    ## Authentication

    Send your API key in the `x-api-key` header (or `Authorization: Bearer
    <key>`). Create keys in your dashboard.


    ## Credits

    Each successful live scrape costs **1 credit**. Credits are prepaid and
    never expire.


    ## Caching

    Every endpoint accepts an optional `cache_max_age`
    (`1d`|`3d`|`7d`|`14d`|`30d`). A cache hit within that window is returned for
    **0 credits**.


    ## Responses

    Success returns `{ "data": …, "meta": { "requestId", … } }`. Errors return
    `{ "error": { "code", "message", "requestId" } }` with a matching HTTP
    status. `meta` on a scrape carries `creditsCharged`, `creditsRemaining`,
    `cached`, and (on a hit) `cachedAt`.


    ## Rate limits

    Requests are limited per team per minute; over the limit returns `429` with
    a `Retry-After` header.
servers:
  - url: https://api.scraperize.com
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Twitter
    description: Twitter / X scraping endpoints
  - name: Facebook
    description: Facebook scraping endpoints
  - name: Linkme
    description: Linkme (link.me) scraping endpoints
  - name: Amazon
    description: Amazon (creator shop / storefront) scraping endpoints
  - name: Linkbio
    description: Linkbio (lnk.bio) scraping endpoints
  - name: Pillar
    description: Pillar (pillar.io) scraping endpoints
  - name: Komi
    description: Komi (komi.io) scraping endpoints
  - name: Linktree
    description: Linktree (linktr.ee) scraping endpoints
  - name: Kick
    description: Kick (kick.com) scraping endpoints
  - name: Snapchat
    description: Snapchat (snapchat.com) scraping endpoints
  - name: Telegram
    description: Telegram (t.me) scraping endpoints
  - name: LinkedIn
    description: LinkedIn scraping endpoints
  - name: Twitch
    description: Twitch scraping endpoints
  - name: TikTok
    description: TikTok (tiktok.com) scraping endpoints
paths:
  /v1/tiktok/user/following:
    get:
      tags:
        - TikTok
      summary: Following
      description: >-
        Scrapes the accounts a public TikTok user follows, by username
        (`handle`) or numeric user id (`userId`) — pass exactly one — 30 per
        page, most recently followed first. Each account comes with its user id
        and secUid, username, nickname, bio, profile link, avatars (three
        sizes), verified / private / TikTok Shop seller flags, whether its liked
        videos are public, and exact stats (followers, following, likes, videos,
        friends, videos liked). Pass the returned `cursor` (with the same handle
        / userId) to get the next page; it is null on the last page. Private
        accounts, and accounts that hide who they follow, return 404.
      parameters:
        - name: handle
          in: query
          required: false
          description: >-
            The TikTok username (with or without a leading @, or a
            tiktok.com/@username URL). Provide this or `userId`, not both.
          schema:
            type: string
          example: natgeo
        - name: userId
          in: query
          required: false
          description: >-
            The TikTok account's numeric user id. Provide this or `handle`, not
            both.
          schema:
            type: string
            pattern: ^\d{1,20}$
          example: '6810285179828945926'
        - name: cursor
          in: query
          required: false
          description: >-
            The `cursor` from the previous response, to get the next page. Omit
            for the first page.
          schema:
            type: string
            pattern: ^\d{1,13}$
          example: '1659024187'
        - name: cache_max_age
          in: query
          required: false
          description: >-
            Optional. Return a cached result if one this age or newer exists —
            served for **0 credits** with `meta.cached=true` and
            `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and
            refreshes the cache. Omit to always scrape fresh.
          schema:
            type: string
            enum:
              - 1d
              - 3d
              - 7d
              - 14d
              - 30d
          example: 7d
      responses:
        '200':
          description: One page of the accounts the user follows.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      profile:
                        type: object
                      following:
                        type: array
                        items:
                          type: object
                      count:
                        type: integer
                      total:
                        type: integer
                        nullable: true
                      cursor:
                        type: string
                        nullable: true
                      hasMore:
                        type: boolean
                      fetchedAt:
                        type: string
                        format: date-time
                  meta:
                    type: object
                    description: >-
                      requestId + credit/caching metadata (creditsCharged,
                      creditsRemaining, cached, cachedAt).
                required:
                  - data
                  - meta
              example:
                data:
                  profile:
                    id: '6780344874811442181'
                    secUid: >-
                      MS4wLjABAAAAEf96k3JW8-3eOhgzgQswlFF6ZDnn1dzqWWorJjwDsiNZymqTtvOcFhp_RiYYST6s
                    handle: natgeo
                    nickname: National Geographic
                    url: https://www.tiktok.com/@natgeo
                    followingCount: 62
                  following:
                    - id: '7666106259686999053'
                      secUid: >-
                        MS4wLjABAAAA5o3uVXuYEDPS9fCjxRRvatYyP9tj_XB1ah919FFzbjQKMVEEeJljIuph4E9G1Njb
                      handle: natgeofamily
                      nickname: National Geographic Family
                      bio: >-
                        Inspiring wonder and curiosity for families around the
                        world 💛
                      url: https://www.tiktok.com/@natgeofamily
                      avatarUrl: >-
                        https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/e72d2db948c77f1133404642a13189b4~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=677349bf&x-expires=1791381600&x-signature=9qHka9kGfGyFESHoribIKaeQQNg%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                      avatars:
                        large: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/e72d2db948c77f1133404642a13189b4~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=677349bf&x-expires=1791381600&x-signature=9qHka9kGfGyFESHoribIKaeQQNg%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        medium: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/e72d2db948c77f1133404642a13189b4~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=dfd19433&x-expires=1791381600&x-signature=EIi8wXnTo439CuhXi21uBs9LCDQ%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        thumb: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/e72d2db948c77f1133404642a13189b4~tplv-tiktokx-cropcenter:100:100.jpeg?dr=14579&refresh_token=92a3083c&x-expires=1791381600&x-signature=Jo00fzV%2FdXfGyeFCcYfOxvqdSys%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                      verified: false
                      privateAccount: false
                      secret: false
                      ttSeller: false
                      openFavorite: false
                      downloadSetting: 0
                      ftc: false
                      isADVirtual: false
                      stats:
                        followerCount: 26124
                        followingCount: 4
                        likeCount: 751896
                        videoCount: 66
                        friendCount: 0
                        diggCount: 1
                    - id: '6731478322289017861'
                      secUid: >-
                        MS4wLjABAAAARTs2ekApcsgbxqAtO7aSrDIMKmr2P8iuKw6H9eJrAGaeBdDdnTImZolfqYUYaXxf
                      handle: izzy_observes
                      nickname: Izzy | Brooklyn Mom
                      bio: |-
                        Wildly specific parenting analogies nobody asked for. 

                        2 under 2📍Brooklyn, NYC 
                        💌 hello@izzyparkinson.com
                      url: https://www.tiktok.com/@izzy_observes
                      avatarUrl: >-
                        https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/b906028bfb5f919e59eeba5daa860b4b~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=176ddb9a&x-expires=1791381600&x-signature=odofL%2BvtO%2BBNQj4%2BY%2F8i6VfS9RA%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                      avatars:
                        large: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/b906028bfb5f919e59eeba5daa860b4b~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=176ddb9a&x-expires=1791381600&x-signature=odofL%2BvtO%2BBNQj4%2BY%2F8i6VfS9RA%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        medium: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/b906028bfb5f919e59eeba5daa860b4b~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=778705fc&x-expires=1791381600&x-signature=3iuaIcHwR9IHiAQQ5dYF9FtrPBs%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        thumb: >-
                          https://p19-common-sign.tiktokcdn.com/tos-maliva-avt-0068/b906028bfb5f919e59eeba5daa860b4b~tplv-tiktokx-cropcenter:100:100.jpeg?dr=14579&refresh_token=51ef9a76&x-expires=1791381600&x-signature=fCuP49lOZM937PZXp0HZHvVTGeE%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                      verified: false
                      privateAccount: false
                      secret: false
                      ttSeller: false
                      openFavorite: false
                      downloadSetting: 0
                      ftc: false
                      isADVirtual: false
                      stats:
                        followerCount: 1122
                        followingCount: 576
                        likeCount: 23883
                        videoCount: 59
                        friendCount: 0
                        diggCount: 30739
                    - id: '7436814248929870894'
                      secUid: >-
                        MS4wLjABAAAAvjgM4eDBwBZ6H4hsXxuuuW-s08UgH9ltoYeksxshSxkEdf9_n5CmQ4_FQbDe2zWN
                      handle: natgeotravel
                      nickname: National Geographic Travel
                      bio: >-
                        Journey across our big, wondrous world with National
                        Geographic.
                      url: https://www.tiktok.com/@natgeotravel
                      avatarUrl: >-
                        https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/23d3efb03852f1450c6d34e21ed6953b~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=deeae811&x-expires=1791381600&x-signature=uYstW2bSigmbCCMJHgCSYO8wu7Y%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                      avatars:
                        large: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/23d3efb03852f1450c6d34e21ed6953b~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=deeae811&x-expires=1791381600&x-signature=uYstW2bSigmbCCMJHgCSYO8wu7Y%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        medium: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/23d3efb03852f1450c6d34e21ed6953b~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=22a6a50e&x-expires=1791381600&x-signature=9zJtIvyPmNWr%2B3CIq%2BvvTCrBVDo%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        thumb: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/23d3efb03852f1450c6d34e21ed6953b~tplv-tiktokx-cropcenter:100:100.jpeg?dr=14579&refresh_token=460ee3df&x-expires=1791381600&x-signature=zK4kmVeKTGo3My48VQ94AtvbAt4%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                      verified: true
                      privateAccount: false
                      secret: false
                      ttSeller: false
                      openFavorite: false
                      downloadSetting: 3
                      ftc: false
                      isADVirtual: false
                      stats:
                        followerCount: 38289
                        followingCount: 3
                        likeCount: 128255
                        videoCount: 110
                        friendCount: 0
                        diggCount: 542
                  count: 30
                  total: 62
                  cursor: '1659024187'
                  hasMore: true
                  fetchedAt: '2026-10-05T14:45:16.975Z'
                meta:
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  creditsCharged: 1
                  creditsRemaining: 4999
                  cached: false
        '400':
          description: Invalid cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: BAD_REQUEST
                  message: The request was invalid.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '401':
          description: Missing, invalid, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: UNAUTHORIZED
                  message: API key required — pass it in the `x-api-key` header.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '402':
          description: Not enough credits for this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: INSUFFICIENT_CREDITS
                  message: >-
                    This request costs 1 credit, but your balance is 0. Top up
                    to continue.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '404':
          description: >-
            No such account (unknown username or id, banned, or unavailable),
            the account is private, or it hides who it follows.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: NOT_FOUND
                  message: >-
                    The requested content was not found (it may not exist, be
                    deleted, or be private).
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '422':
          description: >-
            Invalid query parameters (neither or both of handle/userId, or a
            malformed value).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: VALIDATION_ERROR
                  message: Request validation failed
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  details:
                    - path: url
                      message: Required
        '429':
          description: Over the per-minute rate limit — honour `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: RATE_LIMITED
                  message: >-
                    Rate limit exceeded — max 100 requests per 60s. Retry in
                    ~30s.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '503':
          description: >-
            Temporarily unavailable — retry after `Retry-After`. `error.code`
            tells you why: `UPSTREAM_BLOCKED` (the source blocked this request),
            `EXTRACTION_FAILED` (the source returned unexpected data),
            `PLATFORM_UNAVAILABLE` (the source is down), or
            `SERVICE_UNAVAILABLE` (we are at capacity).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: UPSTREAM_BLOCKED
                  message: >-
                    The source is temporarily unavailable. Please try again
                    shortly.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: NOT_FOUND
            message:
              type: string
              example: The requested content was not found.
            requestId:
              type: string
              example: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
            details:
              type: array
              items:
                type: object
              description: Present on validation errors.
          required:
            - code
            - message
            - requestId
      required:
        - error
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your API key. Send it in the `x-api-key` header (or `Authorization:
        Bearer <key>`). Create and manage keys from your dashboard.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.