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

# Track

> Returns an Apple Music song by id or link (a song link or an album link with `?i=`): name, artists, album, genres, release date, length, track and disc number, composer, explicit flag, Apple's "popular" mark, a 30-second preview, artwork, the lyrics excerpt Apple shows, full credits (performers, songwriters, production and engineering, with their roles), the album's copyright and audio badges, and more by the artist. Only publicly available data is returned.

> [!NOTE]
>
> **Cost: 1 credit** per successful request. Errors and cache hits (`cache_max_age`) are free.

> [accordion] Copy for AI assistant
>
> 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/apple-music/track. Here are the details:
>
> Endpoint: GET https://api.scraperize.com/v1/apple-music/track
> Description: Returns an Apple Music song by id or link (a song link or an album link with `?i=`): name, artists, album, genres, release date, length, track and disc number, composer, explicit flag, Apple's "popular" mark, a 30-second preview, artwork, the lyrics excerpt Apple shows, full credits (performers, songwriters, production and engineering, with their roles), the album's copyright and audio badges, and more by the artist. Only publicly available data is returned.
>
> Required Headers:
> - x-api-key: Your API key
>
> Parameters:
> - id (string): The song's Apple Music id (digits). Required unless `url` is given. Looked up in the US storefront.
> - url (string): The song's music.apple.com link — a song link or an album track link (`…/album/<name>/<album id>?i=<song id>`). Required unless `id` is given. The link's storefront (country) is used.
> - 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": "1528112365",
>     "name": "my tears ricochet",
>     "url": "https://music.apple.com/us/song/my-tears-ricochet/1528112365",
>     "artists": [
>       {
>         "id": "159260351",
>         "name": "Taylor Swift",
>         "url": "https://music.apple.com/us/artist/taylor-swift/159260351"
>       }
>     ],
>     "artistName": "Taylor Swift",
>     "album": {
>       "id": "1528112358",
>       "name": "folklore (deluxe version)",
>       "url": "https://music.apple.com/us/album/folklore-deluxe-version/1528112358"
>     },
>     "genres": [
>       "Alternative"
>     ],
>     "releaseDate": "2020-07-24",
>     "durationMs": 255894,
>     "trackNumber": 5,
>     "discNumber": 1,
>     "composer": "Taylor Swift",
>     "isExplicit": false,
>     "isPopular": true,
>     "previewUrl": "https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/5c/fa/60/5cfa60f1-aacc-faed-7035-c9fe631fa812/mzaf_10932633414186713721.plus.aac.ep.m4a",
>     "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/b5/80/dc/b580dca0-349d-036b-e09b-bd849f6affd8/20UMGIM64216.rgb.jpg/3000x3000bb.jpg",
>     "lyricsExcerpt": "We gather here\nWe line up, weeping in a sunlit room\nAnd if I'm on fire",
>     "credits": {
>       "performers": [
>         {
>           "name": "Taylor Swift",
>           "roles": [
>             "Lead Vocals"
>           ]
>         }
>       ],
>       "composersAndLyricists": [
>         {
>           "name": "Taylor Swift",
>           "roles": [
>             "Songwriter"
>           ]
>         }
>       ],
>       "productionAndEngineering": [
>         {
>           "name": "Taylor Swift",
>           "roles": [
>             "Producer"
>           ]
>         }
>       ]
>     },
>     "copyright": "℗ 2020 Taylor Swift",
>     "audioBadges": {
>       "dolbyAtmos": true,
>       "dolbyAudio": false,
>       "lossless": true,
>       "hiResLossless": false,
>       "digitalMaster": true
>     },
>     "moreByArtist": [
>       {
>         "kind": "album",
>         "id": "1440933849",
>         "name": "reputation",
>         "headline": null,
>         "subtitle": null,
>         "url": "https://music.apple.com/us/album/reputation/1440933849",
>         "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/eb/e6/06/ebe606da-e00f-82d3-47f3-b79904eed541/17UM1IM24651.rgb.jpg/6000x6000bb.jpg",
>         "isExplicit": false
>       }
>     ],
>     "fetchedAt": "2026-11-10T16:02:29.607Z"
>   },
>   "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.
> ```


## OpenAPI

````yaml /api-reference/openapi.json get /v1/apple-music/track
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
  - name: Instagram
    description: Instagram scraping endpoints
  - name: Lagos Life
    description: Lagos Life scraping endpoints
  - name: Bluesky
    description: Bluesky (bsky.app) scraping endpoints
  - name: Threads
    description: Threads (threads.com) scraping endpoints
  - name: Reddit
    description: Reddit (reddit.com) scraping endpoints
  - name: Rumble
    description: Rumble (rumble.com) scraping endpoints
  - name: SoundCloud
    description: SoundCloud (soundcloud.com) scraping endpoints
  - name: Kwai
    description: Kwai (kwai.com) scraping endpoints
  - name: Apple Music
    description: Apple Music (music.apple.com) scraping endpoints
  - name: Truth Social
    description: Truth Social (truthsocial.com) scraping endpoints
  - name: YouTube
    description: YouTube (youtube.com) scraping endpoints
paths:
  /v1/apple-music/track:
    get:
      tags:
        - Apple Music
      summary: Track
      description: >-
        Returns an Apple Music song by id or link (a song link or an album link
        with `?i=`): name, artists, album, genres, release date, length, track
        and disc number, composer, explicit flag, Apple's "popular" mark, a
        30-second preview, artwork, the lyrics excerpt Apple shows, full credits
        (performers, songwriters, production and engineering, with their roles),
        the album's copyright and audio badges, and more by the artist. Only
        publicly available data is returned.
      parameters:
        - name: id
          in: query
          required: false
          description: >-
            The song's Apple Music id (digits). Required unless `url` is given.
            Looked up in the US storefront.
          schema:
            type: string
          example: '1528112365'
        - name: url
          in: query
          required: false
          description: >-
            The song's music.apple.com link — a song link or an album track link
            (`…/album/<name>/<album id>?i=<song id>`). Required unless `id` is
            given. The link's storefront (country) is used.
          schema:
            type: string
          example: https://music.apple.com/us/song/my-tears-ricochet/1528112365
        - 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 track.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                  meta:
                    type: object
                    description: >-
                      requestId + credit/caching metadata (creditsCharged,
                      creditsRemaining, cached, cachedAt).
                required:
                  - data
                  - meta
              example:
                data:
                  id: '1528112365'
                  name: my tears ricochet
                  url: https://music.apple.com/us/song/my-tears-ricochet/1528112365
                  artists:
                    - id: '159260351'
                      name: Taylor Swift
                      url: https://music.apple.com/us/artist/taylor-swift/159260351
                  artistName: Taylor Swift
                  album:
                    id: '1528112358'
                    name: folklore (deluxe version)
                    url: >-
                      https://music.apple.com/us/album/folklore-deluxe-version/1528112358
                  genres:
                    - Alternative
                    - Music
                  releaseDate: '2020-07-24'
                  durationMs: 255894
                  trackNumber: 5
                  discNumber: 1
                  composer: Taylor Swift
                  isExplicit: false
                  isPopular: true
                  previewUrl: >-
                    https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/5c/fa/60/5cfa60f1-aacc-faed-7035-c9fe631fa812/mzaf_10932633414186713721.plus.aac.ep.m4a
                  artworkUrl: >-
                    https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/b5/80/dc/b580dca0-349d-036b-e09b-bd849f6affd8/20UMGIM64216.rgb.jpg/3000x3000bb.jpg
                  lyricsExcerpt: |-
                    We gather here
                    We line up, weeping in a sunlit room
                    And if I'm on fire
                  credits:
                    performers:
                      - name: Taylor Swift
                        roles:
                          - Lead Vocals
                      - name: Jack Antonoff
                        roles:
                          - Programming
                          - Drums
                          - Percussion
                      - name: Bobby Hawk
                        roles:
                          - Strings
                    composersAndLyricists:
                      - name: Taylor Swift
                        roles:
                          - Songwriter
                    productionAndEngineering:
                      - name: Taylor Swift
                        roles:
                          - Producer
                          - Executive Producer
                      - name: Jack Antonoff
                        roles:
                          - Producer
                          - Recording Engineer
                      - name: Laura Sisk
                        roles:
                          - Recording Engineer
                  copyright: ℗ 2020 Taylor Swift
                  audioBadges:
                    dolbyAtmos: true
                    dolbyAudio: false
                    lossless: true
                    hiResLossless: false
                    digitalMaster: true
                  moreByArtist:
                    - kind: album
                      id: '1440933849'
                      name: reputation
                      headline: null
                      subtitle: null
                      url: https://music.apple.com/us/album/reputation/1440933849
                      artworkUrl: >-
                        https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/eb/e6/06/ebe606da-e00f-82d3-47f3-b79904eed541/17UM1IM24651.rgb.jpg/6000x6000bb.jpg
                      isExplicit: false
                    - kind: album
                      id: '1468058165'
                      name: Lover
                      headline: null
                      subtitle: null
                      url: https://music.apple.com/us/album/lover/1468058165
                      artworkUrl: >-
                        https://is1-ssl.mzstatic.com/image/thumb/Music125/v4/49/3d/ab/493dab54-f920-9043-6181-80993b8116c9/19UMGIM53909.rgb.jpg/3900x3900bb.jpg
                      isExplicit: false
                    - kind: album
                      id: '1742057774'
                      name: 'THE TORTURED POETS DEPARTMENT: THE ANTHOLOGY'
                      headline: null
                      subtitle: null
                      url: >-
                        https://music.apple.com/us/album/the-tortured-poets-department-the-anthology/1742057774
                      artworkUrl: >-
                        https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/a4/86/59/a486593a-53c9-1c2a-5122-8f25339f7359/24UMGIM44778.rgb.jpg/3000x3000bb.jpg
                      isExplicit: false
                  fetchedAt: '2026-11-10T16:02:29.607Z'
                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: >-
            No song with that id in that storefront (it may not exist or not be
            available there).
          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 (`id` or `url` is required).
          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: url is 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.