# Spotify Albums & Track list Scraper (Search & Deep Metadata) (`codenest/spotify-albums-tracklist-scraper-search-deep-metadata`) Actor

High-speed Spotify album scraper. Search by keyword or extract full tracklists, labels, release dates, and copyright metadata from album URLs.

- **URL**: https://apify.com/codenest/spotify-albums-tracklist-scraper-search-deep-metadata.md
- **Developed by:** [CodeNest](https://apify.com/codenest) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 album results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Spotify Albums Scraper: Search, Tracklists & Deep Metadata (No API Key)

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange.svg)](https://apify.com)
[![Pay Per Event](https://img.shields.io/badge/Pricing-Pay--Per--Event-blue.svg)](https://apify.com)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-brightgreen.svg)](https://apify.com)

The fastest and most reliable **Spotify Album Scraper** on Apify. Search Spotify albums by keyword or extract comprehensive metadata, full tracklists, audio durations, record label credits, and copyright notices from direct Spotify URLs. **100% autonomous — no Spotify Developer Account, API keys, or OAuth tokens required.**

***

### 📑 Table of Contents

- [Why Use This Spotify Album Scraper?](#-why-use-this-spotify-album-scraper)
- [Key Features](#-key-features)
- [Comparison: This Scraper vs. Official Spotify API](#-comparison-this-scraper-vs-official-spotify-api)
- [How to Scrape Spotify Albums (Quick Start)](#-how-to-scrape-spotify-albums-quick-start)
- [Supported Extraction Modes](#-supported-extraction-modes)
- [Input Parameters](#-input-parameters)
- [Sample JSON Output](#-sample-json-output)
- [Pay-Per-Event (PPE) Pricing & Free Tier](#-pay-per-event-ppe-pricing--free-tier)
- [Popular Use Cases](#-popular-use-cases)
- [Data Export & Integrations](#-data-export--integrations)
- [Frequently Asked Questions (FAQ)](#-frequently-asked-questions-faq)

***

### 🌟 Why Use This Spotify Album Scraper?

With recent restrictions and strict rate limits placed on the official Spotify Web API, developers, record labels, and music analysts face frequent blocks and authentication barriers.

This **Spotify Albums Scraper** provides a robust, production-ready alternative that scrapes publicly available catalog intelligence directly from Spotify Web:

- 🚀 **Zero API Key Setup**: Start scraping in seconds without registering a Spotify app or configuring OAuth redirects.
- 🔄 **Built-in Session & Proxy Rotation**: Uses intelligent fingerprinting and residential/datacenter proxies to avoid blocks and HTTP 429 rate limits.
- 💿 **Deep Metadata Ingestion**: Goes beyond basic search results to extract full track sequences, audio lengths, disc divisions, record labels, and copyright lines.
- 💰 **Transparent Pay-Per-Event Billing**: Pay only for what you scrape ($0.004 per album result). Stop runs automatically when your budget limit is reached.
- 📊 **One-Click Export**: Download your data in **CSV, Excel (XLSX), JSON, JSONL, XML, or HTML Table**.

***

### ⚡ Key Features

| Feature | Description |
|---|---|
| **Keyword Catalog Search** | Discover studio albums, singles, EPs, live performances, and compilations across any musical genre or artist. |
| **Direct URL & URI Scraping** | Input single or bulk Spotify album links (`https://open.spotify.com/album/...`) or URIs (`spotify:album:...`). |
| **Complete Tracklist Extraction** | Retrieve every track's title, track number, disc number, duration (milliseconds), and playability. |
| **Record Label & Rights Intelligence** | Scrape official record label imprints, publication dates, and legal copyright notices (`(C)` and `(P)` lines). |
| **High-Resolution Artwork** | Access official Spotify CDN cover art images across multiple dimensions (up to 640x640px). |
| **Pre-Release Tracking** | Capture upcoming album announcements, pre-release timestamps, and pre-save statuses. |
| **Strict Data Tidiness** | Machine-generated tokens and internal hashes are automatically removed, leaving clean, ready-to-analyze JSON. |

***

### 📊 Comparison: This Scraper vs. Official Spotify API

| Capability | Spotify Albums Scraper (This Actor) | Official Spotify Web API |
|---|:---:|:---:|
| **Developer Account Required** | ❌ **No (Zero setup)** | ✅ Yes (App review required) |
| **API Keys & OAuth Tokens** | ❌ **None needed** | ✅ Complex token renewal |
| **Rate Limit Interruptions** | 🟢 **Bypassed with Proxy Rotation** | 🔴 Strict 429 Rate Limits |
| **Full Tracklist & Disc Info** | ✅ **Included** | ⚠️ Paginated & Limited |
| **Copyright & Record Label Data** | ✅ **Included** | ⚠️ Partial metadata |
| **Cost Model** | 💳 **Pay-Per-Event ($0.004/item)** | 💵 Free but heavily throttled |
| **Export Directly to Excel/CSV** | ✅ **Yes (One-click)** | ❌ Requires custom code |

***

### 🛠️ How to Scrape Spotify Albums (Quick Start)

Scraping Spotify albums takes less than two minutes:

1. **Choose your input method**:
   - In **Search Keywords**, type the artists, genres, or album names you want to discover (e.g. `["Rock", "Coldplay", "Daft Punk"]`).
   - *OR* paste direct album links into **Spotify Album URIs / URLs**.
2. **Configure limits**:
   - Set **Albums per Keyword (Limit)** (e.g., `10` or `50`).
   - Toggle **Fetch Full Album Details** to `true` if you want track-by-track listings, durations, and labels.
3. **Click Start**:
   - Watch real-time extraction logs in Apify Console.
4. **Download your dataset**:
   - Go to the **Dataset** tab and export to **CSV**, **Excel**, or **JSON**.

***

### 🔍 Supported Extraction Modes

#### Mode 1: Search by Keyword

Best for market research, artist discography discovery, and genre cataloging. Provide keywords like `"Taylor Swift"`, `"90s Hip Hop"`, or `"Hans Zimmer Soundtrack"`. The Actor searches Spotify and pulls all relevant albums up to your specified search limit.

#### Mode 2: Direct Album URL / URI Extraction

Best for targeted data collection and enriching an existing catalog. Input a list of open.spotify.com album URLs or URIs:

```text
https://open.spotify.com/album/4yP0hdKOgrTwcyWu2VHQ07
spotify:album:1ATL5GLyef8AJodEg9X6QA
```

***

### ⚙️ Input Parameters

The Actor's input schema is fully customizable:

| Field Name | Type | Default | Description |
|---|---|---|---|
| `keyword` | Array of strings | `["Rock", "Coldplay"]` | Keywords or artist names to search on Spotify. |
| `spotifyUris` | Array of strings | `[]` | List of Spotify album URLs or URIs to scrape directly. |
| `albums_search_limit` | Integer | `10` | Maximum number of album search results per keyword. |
| `albums_fetchDetails` | Boolean | `false` | Enable to fetch full tracklists, record labels, and copyright metadata. |
| `albums_get_limit` | Integer | `25` | Maximum number of tracks to extract per album. |

***

### 📦 Sample JSON Output

Every record pushed to the Apify Dataset follows a clean, standardized schema:

```json
{
  "id": "4yP0hdKOgrTwcyWu2VHQ07",
  "name": "A Rush of Blood to the Head",
  "albumType": "album",
  "releaseDate": {
    "year": 2002,
    "month": 8,
    "day": 26,
    "precision": "DAY"
  },
  "artists": [
    {
      "name": "Coldplay",
      "uri": "spotify:artist:4gzpq5Yv4eYTN5SQvxrKBs",
      "url": "https://open.spotify.com/artist/4gzpq5Yv4eYTN5SQvxrKBs"
    }
  ],
  "label": "Parlophone UK",
  "copyright": {
    "totalCount": 2,
    "items": [
      {
        "type": "C",
        "text": "2002 Parlophone Records Ltd."
      },
      {
        "type": "P",
        "text": "2002 Parlophone Records Ltd."
      }
    ]
  },
  "url": "https://open.spotify.com/album/4yP0hdKOgrTwcyWu2VHQ07",
  "uri": "spotify:album:4yP0hdKOgrTwcyWu2VHQ07",
  "coverArt": {
    "sources": [
      {
        "url": "https://i.scdn.co/image/ab67616d0000b27390547781b0a8f8fcbf4220d4",
        "width": 640,
        "height": 640
      }
    ]
  },
  "tracks": {
    "totalCount": 11,
    "items": [
      {
        "track": {
          "uri": "spotify:track:0BCPKOYdS2jbQ8iyB56Zns",
          "name": "Politik",
          "duration": {
            "totalMilliseconds": 318893
          },
          "trackNumber": 1,
          "discNumber": 1,
          "playability": {
            "playable": true
          }
        }
      }
    ]
  }
}
```

***

### 💳 Pay-Per-Event (PPE) Pricing & Free Tier

We use Apify's **Pay-Per-Event (PPE)** monetization model so you only pay for actual results:

| Event | Event Title | Cost | When is it charged? |
|---|---|---|---|
| `result` | **Album Result** | **$0.004** / item | Charged once for every album record scraped and pushed to your dataset. |
| `detail` | **Detail Enrichment** | **$0.002** / item | Charged only when `Fetch Full Album Details` is enabled to scrape complete tracklists and label data. |

#### 🛡️ Real-Time Spending Cap

In your Actor run settings, you can define **Maximum Cost Per Run (USD)** (e.g., `$1.00` or `$5.00`). The scraper continuously tracks accumulated costs and safely halts extraction when your limit is reached, protecting you from unexpected overages.

#### 🎁 Free Trial Allowance

Users on Apify's Free Tier can test the Actor with a complimentary trial limit:

- **Up to 3 albums** per run.
- **Up to 3 tracks** per album.
- Upgrade to an Apify paid subscription for unlimited scraping capacity.

***

### 🎯 Popular Use Cases

- 🎼 **A\&R & Record Label Scouting**: Monitor artist discographies, release cadence, and distribution partners across competitive labels.
- 📚 **Music Catalog Archiving**: Synchronize album metadata, ISRC track data, and cover art into your local PostgreSQL, MongoDB, or Airtable databases.
- 📻 **Curators & DJs**: Extract precise track durations, disc ordering, and track names for seamless radio/DJ playlist planning.
- ⚖️ **Music Rights & Publishing Verification**: Verify copyright holders (`(C)` and `(P)` lines) and official record labels for licensing compliance.
- 📈 **Music Journalism & Analytics**: Analyze album release trends, track counts, and artist collaborations across genres.

***

### 🔗 Data Export & Integrations

Integrate your scraped Spotify data seamlessly into your existing tech stack:

- **Direct Webhooks**: Trigger HTTP webhooks to your server or cloud functions when an extraction completes.
- **No-Code Automation**: Connect directly with **Make (Integromat)**, **Zapier**, or **n8n**.
- **Cloud Warehouses**: Feed datasets into **Google BigQuery**, **Snowflake**, or **AWS S3**.
- **Developer APIs**: Access output programmatically using the Apify API (`python`, `javascript`, or `cURL`).

***

### ❓ Frequently Asked Questions (FAQ)

#### Can I scrape Spotify albums without an API key?

**Yes!** This scraper operates autonomously without requiring Spotify Developer credentials, client IDs, client secrets, or OAuth authentication.

#### How do I export Spotify albums to Excel or CSV?

Once the Actor finishes running, navigate to the **Dataset** tab in Apify Console. Click **Export** and choose **CSV** or **Excel (XLSX)**.

#### Can I scrape multiple Spotify album URLs at once?

**Yes.** You can paste dozens or hundreds of Spotify album URLs or URIs into the `Spotify Album URIs / URLs` input field.

#### Does this scraper retrieve track durations and track numbers?

**Yes.** When **Fetch Full Album Details** is turned ON, the scraper extracts individual track numbers, disc numbers, track titles, and exact durations in milliseconds.

#### Is Spotify web scraping legal?

Publicly accessible data on the web can be scraped for research, analysis, and archiving purposes in compliance with data privacy regulations (such as GDPR/CCPA) regarding personal data. Always respect intellectual property rights and applicable terms of service.

***

### 💬 Support & Feedback

Encountered an issue or have a feature request? Open an issue on the Actor's **Issues** tab or contact us through Apify Console. We actively maintain and update this scraper against Spotify Web changes.

# Actor input Schema

## `keyword` (type: `array`):

One or more search terms to find albums on Spotify. Each keyword runs as a separate search.

💡 Leave empty and fill Spotify URIs below to use Get Details mode instead.

## `spotifyUris` (type: `array`):

One or more Spotify album URIs or URLs to fetch full metadata.
Examples: spotify:album:ID · https://open.spotify.com/album/ID

⚠️ Only album URIs/URLs are accepted. Other types (tracks, artists, etc.) will be skipped.
💡 Leave empty and fill Search Keywords above to use Search mode instead.

## `albums_search_limit` (type: `integer`):

Maximum number of album results to return per keyword.

## `albums_fetchDetails` (type: `boolean`):

📌 Search mode only — when using Album URIs/URLs, full details are always fetched automatically.

✅ When ON — runs getAlbum for every search result. You get: complete track listings (paginated), label name, copyright info, all cover art sizes, release date with day precision, disc metadata, and full artist credits.

❌ When OFF — you only get basic search data: album name, artist name, release year, cover art, and URI. You will NOT get the track list, label, copyright, or any detailed metadata.

⚠️ Slower — one extra API call per search result.

## `albums_get_limit` (type: `integer`):

Maximum number of tracks to return from the album.

## Actor input object example

```json
{
  "keyword": [
    "Rock",
    "Coldplay"
  ],
  "spotifyUris": [
    "spotify:album:1DFixLWuPkv3KT3TnV35m3",
    "https://open.spotify.com/album/6dVIqQ8qmQ5GBnJ9shOYGE"
  ],
  "albums_search_limit": 10,
  "albums_fetchDetails": false,
  "albums_get_limit": 25
}
```

# Actor output Schema

## `overview` (type: `string`):

Tabular overview of scraped Spotify albums with title, artists, release date, and links.

## `allResults` (type: `string`):

Complete dataset containing all album details, tracklists, copyright, and metadata.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": [
        "Rock",
        "Coldplay"
    ],
    "spotifyUris": [
        "spotify:album:1DFixLWuPkv3KT3TnV35m3",
        "https://open.spotify.com/album/6dVIqQ8qmQ5GBnJ9shOYGE"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("codenest/spotify-albums-tracklist-scraper-search-deep-metadata").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": [
        "Rock",
        "Coldplay",
    ],
    "spotifyUris": [
        "spotify:album:1DFixLWuPkv3KT3TnV35m3",
        "https://open.spotify.com/album/6dVIqQ8qmQ5GBnJ9shOYGE",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("codenest/spotify-albums-tracklist-scraper-search-deep-metadata").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": [
    "Rock",
    "Coldplay"
  ],
  "spotifyUris": [
    "spotify:album:1DFixLWuPkv3KT3TnV35m3",
    "https://open.spotify.com/album/6dVIqQ8qmQ5GBnJ9shOYGE"
  ]
}' |
apify call codenest/spotify-albums-tracklist-scraper-search-deep-metadata --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,codenest/spotify-albums-tracklist-scraper-search-deep-metadata"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5XdzVqUaF6VNGBpkg/builds/EDKlwew520swJ4WJ0/openapi.json
