> ## 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.

# Song

> Returns the details of a TikTok sound from its page link (`musicUrl`, e.g. `https://www.tiktok.com/music/That's-Who-I-Praise-7370375686554782506`): the title, artist name, album, duration and the longest clip a creator can record with it (`shootDuration`), whether it is an "original sound" uploaded by a creator or a released song, copyright / commercial-use / private flags, cover images (three sizes), the audio file (`playUrl`), its links on Apple Music and Spotify when TikTok matches it to a song, how many videos use it (`videoCount`, rounded by TikTok), the artist account(s) for a released song (`artists`) or the creator of an original sound (`author`) — with handle, name, bio and avatars — and TikTok's share text. `url` is the sound's canonical page.

The title part of the link doesn't matter: the sound is found by the number at the end. Some sounds aren't available in every country (copyright); then the response is a 404. The audio and cover URLs need no extra headers and expire after a while.

<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/song. Here are the details:

  Endpoint: GET https://api.scraperize.com/v1/tiktok/song
  Description: Returns the details of a TikTok sound from its page link (`musicUrl`, e.g. `https://www.tiktok.com/music/That's-Who-I-Praise-7370375686554782506`): the title, artist name, album, duration and the longest clip a creator can record with it (`shootDuration`), whether it is an "original sound" uploaded by a creator or a released song, copyright / commercial-use / private flags, cover images (three sizes), the audio file (`playUrl`), its links on Apple Music and Spotify when TikTok matches it to a song, how many videos use it (`videoCount`, rounded by TikTok), the artist account(s) for a released song (`artists`) or the creator of an original sound (`author`) — with handle, name, bio and avatars — and TikTok's share text. `url` is the sound's canonical page.

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

  Parameters:
  - musicUrl (string) [required]: The sound's TikTok page link: `https://www.tiktok.com/music/<title>-<musicId>` (as in a post's `music.url`).
  - 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": {
      "id": "7370375686554782506",
      "title": "That's Who I Praise",
      "url": "https://www.tiktok.com/music/That's-Who-I-Praise-7370375686554782506",
      "authorName": "Brandon Lake",
      "album": "That's Who I Praise",
      "duration": 64,
      "preciseDuration": null,
      "shootDuration": 60,
      "original": false,
      "isCopyrighted": true,
      "isCommerceMusic": false,
      "isUnlimitedMusic": false,
      "isPrivate": false,
      "coverUrl": "https://p16-sg.tiktokcdn.com/aweme/720x720/tos-alisg-v-2774/ocFryYgIESDClQQFafBpEmTdkAJBZtAAIHqFfR.jpeg",
      "playUrl": "https://sf16-ies-music-sg.tiktokcdn.com/obj/tos-alisg-ve-2774/ogifeGpqwKAjM2f1xG8IZDI09glmABLwaTFrAe",
      "streaming": [
        {
          "service": "apple_music",
          "serviceCode": 1,
          "songId": "1757500327",
          "url": "https://music.apple.com/song/1757500327"
        }
      ],
      "covers": {
        "thumb": "https://p16-sg.tiktokcdn.com/aweme/100x100/tos-alisg-v-2774/ocFryYgIESDClQQFafBpEmTdkAJBZtAAIHqFfR.jpeg",
        "medium": "https://p16-sg.tiktokcdn.com/aweme/200x200/tos-alisg-v-2774/ocFryYgIESDClQQFafBpEmTdkAJBZtAAIHqFfR.jpeg",
        "large": "https://p16-sg.tiktokcdn.com/aweme/720x720/tos-alisg-v-2774/ocFryYgIESDClQQFafBpEmTdkAJBZtAAIHqFfR.jpeg"
      },
      "videoCount": 27600,
      "artists": [
        {
          "id": "6780744002670396422",
          "secUid": "MS4wLjABAAAAzWDzMQFatDdIcWj_JHHuDZTbsFMeWLpVEzycWCFf6kCf_KL_mff7sVQovdlrWtEr",
          "handle": "brandonlakemusic",
          "nickname": "Brandon Lake",
          "bio": "“Changing” | OCT 16\nPre-Save / Pre-Add now",
          "url": "https://www.tiktok.com/@brandonlakemusic",
          "avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/1d1a7ad3bdc48667aa16c1bed12764bf~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=aba71a7…",
          "avatars": {
            "thumb": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/1d1a7ad3bdc48667aa16c1bed12764bf~tplv-tiktokx-cropcenter:100:100.jpeg?dr=14579&refresh_token=3144ab02&…",
            "medium": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/1d1a7ad3bdc48667aa16c1bed12764bf~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=04d5afb2&…",
            "large": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/1d1a7ad3bdc48667aa16c1bed12764bf~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=aba71a7…"
          },
          "privateAccount": false
        }
      ],
      "author": null,
      "share": {
        "title": "Brandon Lake | ♬ That's Who I Praise | on TikTok",
        "description": "27.6k videos - Watch awesome short videos created with ♬ That's Who I Praise"
      },
      "fetchedAt": "2026-10-05T14:46:05.099Z"
    },
    "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/song
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/song:
    get:
      tags:
        - TikTok
      summary: Song
      description: >-
        Returns the details of a TikTok sound from its page link (`musicUrl`,
        e.g.
        `https://www.tiktok.com/music/That's-Who-I-Praise-7370375686554782506`):
        the title, artist name, album, duration and the longest clip a creator
        can record with it (`shootDuration`), whether it is an "original sound"
        uploaded by a creator or a released song, copyright / commercial-use /
        private flags, cover images (three sizes), the audio file (`playUrl`),
        its links on Apple Music and Spotify when TikTok matches it to a song,
        how many videos use it (`videoCount`, rounded by TikTok), the artist
        account(s) for a released song (`artists`) or the creator of an original
        sound (`author`) — with handle, name, bio and avatars — and TikTok's
        share text. `url` is the sound's canonical page.


        The title part of the link doesn't matter: the sound is found by the
        number at the end. Some sounds aren't available in every country
        (copyright); then the response is a 404. The audio and cover URLs need
        no extra headers and expire after a while.
      parameters:
        - name: musicUrl
          in: query
          required: true
          description: >-
            The sound's TikTok page link:
            `https://www.tiktok.com/music/<title>-<musicId>` (as in a post's
            `music.url`).
          schema:
            type: string
          example: https://www.tiktok.com/music/Thats-Who-I-Praise-7370375686554782506
        - 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: The sound.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      title:
                        type: string
                        nullable: true
                      url:
                        type: string
                        nullable: true
                      authorName:
                        type: string
                        nullable: true
                      album:
                        type: string
                        nullable: true
                      duration:
                        type: integer
                        nullable: true
                        description: Seconds.
                      preciseDuration:
                        type: number
                        nullable: true
                      shootDuration:
                        type: integer
                        nullable: true
                        description: >-
                          The longest clip, in seconds, a creator can record
                          with this sound.
                      original:
                        type: boolean
                        description: >-
                          An "original sound" uploaded by a creator rather than
                          a released song.
                      isCopyrighted:
                        type: boolean
                      isCommerceMusic:
                        type: boolean
                        description: Cleared for commercial use.
                      isUnlimitedMusic:
                        type: boolean
                      isPrivate:
                        type: boolean
                      coverUrl:
                        type: string
                        nullable: true
                      covers:
                        type: object
                        properties:
                          thumb:
                            type: string
                          medium:
                            type: string
                          large:
                            type: string
                      playUrl:
                        type: string
                        nullable: true
                        description: The audio file.
                      streaming:
                        type: array
                        items:
                          type: object
                          properties:
                            service:
                              type: string
                              enum:
                                - apple_music
                                - spotify
                              nullable: true
                            serviceCode:
                              type: integer
                              nullable: true
                            songId:
                              type: string
                            url:
                              type: string
                              nullable: true
                      videoCount:
                        type: integer
                        nullable: true
                        description: Videos using this sound (rounded by TikTok).
                      artists:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              nullable: true
                            secUid:
                              type: string
                              nullable: true
                            handle:
                              type: string
                              nullable: true
                            nickname:
                              type: string
                              nullable: true
                            bio:
                              type: string
                              nullable: true
                            url:
                              type: string
                              nullable: true
                            avatarUrl:
                              type: string
                              nullable: true
                            avatars:
                              type: object
                              properties:
                                thumb:
                                  type: string
                                medium:
                                  type: string
                                large:
                                  type: string
                            privateAccount:
                              type: boolean
                      author:
                        type: object
                        properties:
                          id:
                            type: string
                            nullable: true
                          secUid:
                            type: string
                            nullable: true
                          handle:
                            type: string
                            nullable: true
                          nickname:
                            type: string
                            nullable: true
                          bio:
                            type: string
                            nullable: true
                          url:
                            type: string
                            nullable: true
                          avatarUrl:
                            type: string
                            nullable: true
                          avatars:
                            type: object
                            properties:
                              thumb:
                                type: string
                              medium:
                                type: string
                              large:
                                type: string
                          privateAccount:
                            type: boolean
                        nullable: true
                      share:
                        type: object
                        properties:
                          title:
                            type: string
                            nullable: true
                          description:
                            type: string
                            nullable: true
                      fetchedAt:
                        type: string
                        format: date-time
                  meta:
                    type: object
                    description: >-
                      requestId + credit/caching metadata (creditsCharged,
                      creditsRemaining, cached, cachedAt).
                required:
                  - data
                  - meta
              example:
                data:
                  id: '7370375686554782506'
                  title: That's Who I Praise
                  url: >-
                    https://www.tiktok.com/music/That's-Who-I-Praise-7370375686554782506
                  authorName: Brandon Lake
                  album: That's Who I Praise
                  duration: 64
                  preciseDuration: null
                  shootDuration: 60
                  original: false
                  isCopyrighted: true
                  isCommerceMusic: false
                  isUnlimitedMusic: false
                  isPrivate: false
                  coverUrl: >-
                    https://p16-sg.tiktokcdn.com/aweme/720x720/tos-alisg-v-2774/ocFryYgIESDClQQFafBpEmTdkAJBZtAAIHqFfR.jpeg
                  playUrl: >-
                    https://sf16-ies-music-sg.tiktokcdn.com/obj/tos-alisg-ve-2774/ogifeGpqwKAjM2f1xG8IZDI09glmABLwaTFrAe
                  streaming:
                    - service: apple_music
                      serviceCode: 1
                      songId: '1757500327'
                      url: https://music.apple.com/song/1757500327
                    - service: spotify
                      serviceCode: 3
                      songId: 2A2gVffiPpwEbBENfWHpfa
                      url: https://open.spotify.com/track/2A2gVffiPpwEbBENfWHpfa
                  covers:
                    thumb: >-
                      https://p16-sg.tiktokcdn.com/aweme/100x100/tos-alisg-v-2774/ocFryYgIESDClQQFafBpEmTdkAJBZtAAIHqFfR.jpeg
                    medium: >-
                      https://p16-sg.tiktokcdn.com/aweme/200x200/tos-alisg-v-2774/ocFryYgIESDClQQFafBpEmTdkAJBZtAAIHqFfR.jpeg
                    large: >-
                      https://p16-sg.tiktokcdn.com/aweme/720x720/tos-alisg-v-2774/ocFryYgIESDClQQFafBpEmTdkAJBZtAAIHqFfR.jpeg
                  videoCount: 27600
                  artists:
                    - id: '6780744002670396422'
                      secUid: >-
                        MS4wLjABAAAAzWDzMQFatDdIcWj_JHHuDZTbsFMeWLpVEzycWCFf6kCf_KL_mff7sVQovdlrWtEr
                      handle: brandonlakemusic
                      nickname: Brandon Lake
                      bio: |-
                        “Changing” | OCT 16
                        Pre-Save / Pre-Add now
                      url: https://www.tiktok.com/@brandonlakemusic
                      avatarUrl: >-
                        https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/1d1a7ad3bdc48667aa16c1bed12764bf~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=aba71a7b&x-expires=1791381600&x-signature=PCYU871jzYIa8YeZAs6nes2XkPc%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                      avatars:
                        thumb: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/1d1a7ad3bdc48667aa16c1bed12764bf~tplv-tiktokx-cropcenter:100:100.jpeg?dr=14579&refresh_token=3144ab02&x-expires=1791381600&x-signature=ZNOYXpT6FQjpaWJdiHi5%2FE6MQxg%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        medium: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/1d1a7ad3bdc48667aa16c1bed12764bf~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=04d5afb2&x-expires=1791381600&x-signature=CFQ%2Be6urufJkxbaTcqmYF%2FyYveg%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        large: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/1d1a7ad3bdc48667aa16c1bed12764bf~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=aba71a7b&x-expires=1791381600&x-signature=PCYU871jzYIa8YeZAs6nes2XkPc%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                      privateAccount: false
                  author: null
                  share:
                    title: Brandon Lake | ♬ That's Who I Praise | on TikTok
                    description: >-
                      27.6k videos - Watch awesome short videos created with ♬
                      That's Who I Praise
                  fetchedAt: '2026-10-05T14:46:05.099Z'
                meta:
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  creditsCharged: 1
                  creditsRemaining: 4999
                  cached: false
        '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: >-
            The sound doesn’t exist, was removed, or isn’t available in this
            country.
          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: Missing or invalid `musicUrl` (not a TikTok sound link).
          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.