Skip to main content
Thirdwatchthirdwatch
Social & news

Harvest 30-Second Preview URLs for a Tracklist

Collect Spotify's 30-second MP3 preview URLs for every track in a playlist or album — ready for audio pipelines.

Editorial illustration for social & news
Sep 16, 2026 · 3 min read · 518 words
View the Apify scraper →

Spotify hosts a free 30-second MP3 for most tracks — it's the cheapest legal audio sample pipeline there is. Thirdwatch's Spotify Scraper reads Spotify's public embed pages — no API key, no OAuth app — and returns structured track rows for playlists, albums, artists, and individual tracks.

Skip the setup: Run this as a ready-to-go task on Apify — pre-loaded with the configuration from this guide.

Why harvest preview URLs

For audio fingerprinting, recommendation demos, or review tooling, a 30-second preview is enough — and Spotify serves them publicly. What's missing is a bulk way to collect the URLs.

Every track row carries previewUrl when the track offers one; a playlist run harvests dozens at once.

The scraper reads the embed surface directly, so a playlist URL in means a full tracklist dataset out.

How does this compare to the alternatives?

Approach Cost model Coverage Effort
Spotify Web API Free tier, OAuth app Full catalog App registration + tokens
Manual playlist export tools Per-export or subscription Playlists only Account auth required
Thirdwatch Spotify Scraper Pay per row Public playlists, albums, artists, tracks Paste a URL, run

Why this Actor

  • No API key or app registration — public embed pages carry the data.
  • One input field accepts playlists, albums, artists and tracks together.
  • Every track row includes a 30-second previewUrl MP3 when available.
  • includeEntityRows adds a container-level summary row for each playlist or album.
  • Pure HTTP and fast — a playlist pull costs a fraction of a cent.

How to do it in 3 steps

Step 1: Configure the input

Set the inputs as shown below — urls takes the targets, Playlist, album, artist and track URLs all work in the same input; maxTracksPerEntity bounds the tracklist size.

Step 2: Run the Actor

Run it from the console, the API, or the linked saved task. One dataset row is written per track.

Step 3: Use the output

Track rows carry artists, album, duration, release date, preview URL and Spotify URI; includeEntityRows adds a summary row per playlist or album.

{
  "urls": [
    "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M"
  ],
  "maxTracksPerEntity": 50
}

Each dataset row looks like:

{
  "title": "Flowers",
  "artists": "Miley Cyrus",
  "parentName": "Today's Top Hits",
  "parentType": "playlist",
  "position": 1,
  "durationSec": 200,
  "isExplicit": false,
  "releaseDate": "2023-01-13",
  "previewUrl": "https://p.scdn.co/mp3-preview/...",
  "spotifyUrl": "https://open.spotify.com/track/...",
  "uri": "spotify:track:..."
}

What to watch for

Play counts and follower numbers aren't available — embed surfaces don't carry them, so playlist-popularity metrics are out of scope. Playlists return roughly the top 50 tracks per entity.

Related use cases

Run the Spotify Scraper on Apify Store — pay per result, free to try, no credit card to test.

Frequently asked questions

Do I need a Spotify API key or developer app?

No — the Actor reads public embed pages, so there is nothing to register or provision.

What entity types work?

Playlists, albums, artists, and individual tracks — all accepted in the same `urls` list.

Do I get play counts or follower numbers?

No — embed pages don't expose them. You get catalog metadata: tracks, artists, durations, release dates, previews.

Is there a playlist size cap?

Embed pages return roughly the first 50 tracks per playlist; `maxTracksPerEntity` controls how many rows you keep.

What's in the preview URL?

A 30-second MP3 preview hosted by Spotify, where the track offers one — handy for audio-fingerprinting or review pipelines.

Does it work for editorial playlists?

Yes — Spotify-curated playlists like Today's Top Hits work the same as user playlists.

Related