# Spotify Scraper — Get Full Details 🎯 (`apiharvest/spotify-scraper-get-full-details`) Actor

🔗 Get complete metadata — works for tracks, albums, artists, playlists, genres, audiobooks, podcasts & episodes. Returns every single field Spotify provides internally. The best way to enrich Spotify data with full detail extraction ✨ Spotify Scraper — Get Full Details 🎯

- **URL**: https://apify.com/apiharvest/spotify-scraper-get-full-details.md
- **Developed by:** [APIHarvest](https://apify.com/apiharvest) (community)
- **Categories:** Automation, Developer tools, Social media
- **Stats:** 6 total users, 3 monthly users, 96.2% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 result scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Spotify Scraper — Get Full Details for 8 Spotify Content Types | Best Spotify Scraper from URIs

### What is the Spotify Scraper?

The **Spotify Scraper** is a unified Apify actor for fetching complete metadata from Spotify URIs or URLs across 8 content types. This Spotify scraper handles tracks, albums, artists, playlists, genres, audiobooks, episodes, and podcasts — all from a single interface. No Spotify API key, no login credentials, no developer account required.

This is a **details-only** Spotify scraper — it fetches full metadata from URIs you already have. For keyword search, use the [Spotify Search](https://apify.com/apiharvest/spotify-search-all-types) actor or the dedicated type-specific Spotify scrapers.

---

### All 8 Supported Content Types

This Spotify scraper supports every entity type that has URI-based detail fetching:

| ## | Content Type | URI Format | URL Format |
|---|-------------|-----------|------------|
| 1 | **Track** | `spotify:track:ID` | `open.spotify.com/track/ID` |
| 2 | **Album** | `spotify:album:ID` | `open.spotify.com/album/ID` |
| 3 | **Artist** | `spotify:artist:ID` | `open.spotify.com/artist/ID` |
| 4 | **Playlist** | `spotify:playlist:ID` | `open.spotify.com/playlist/ID` |
| 5 | **Genre / Mood** | `spotify:genre:ID` or `spotify:page:ID` | N/A |
| 6 | **Audiobook** | `spotify:show:ID` | `open.spotify.com/show/ID` |
| 7 | **Episode** | `spotify:episode:ID` | `open.spotify.com/episode/ID` |
| 8 | **Podcast / Show** | `spotify:show:ID` | `open.spotify.com/show/ID` |

**Note:** Spotify user profiles are NOT supported by this Spotify scraper because they require headless browser scraping. Use the [Spotify Users Scraper](https://apify.com/apiharvest/spotify-users-search-and-profile-scraper) for user profiles.

---

### How Does This Spotify Scraper Work?

1. **Select a Content Type** — Choose which Spotify entity type to scrape
2. **Paste URIs or URLs** — Provide one or more Spotify URIs or URLs
3. **Configure Type-Specific Filters** — Set pagination, toggles, and detail options
4. **Run** — The Spotify scraper fetches full metadata for each URI
5. **Get Results** — Complete structured JSON is pushed to the Apify dataset

---

### Input Configuration

| Field | Description | Default |
|-------|-------------|---------|
| **Content Type** | Dropdown with 8 Spotify entity types. | Track |
| **Spotify URIs / URLs** | One or more Spotify URIs or URLs for the selected type. | — |
| **Proxy Country** | Residential proxy country. US recommended. | US |

#### Type-Specific Filters

The Spotify scraper provides additional configuration depending on the selected content type:

##### Albums & Playlists
| Field | Description | Default |
|-------|-------------|---------|
| **Track List Offset** | Starting position for track listings. | 0 |
| **Track List Limit** | Maximum tracks to return. | 50 |

##### Genres
| Field | Description | Default |
|-------|-------------|---------|
| **Section Limit** | Maximum genre page sections. | 10 |
| **Section Item Limit** | Maximum items per section. | 20 |
| **Include Section Details** | **ON:** Fetches full item details for each section (all playlists/albums/artists up to item limit) — one extra API call per section. **OFF:** Sections return only a quick 10-item preview; you may miss items beyond the first 10. | OFF |

##### Audiobooks
| Field | Description | Default |
|-------|-------------|---------|
| **Include Similar Audiobooks** | **ON:** Fetches similar audiobook recommendations from Spotify. **OFF:** No recommendations returned. ⚠️ Spotify has retired this API in some regions — may return empty. | OFF |

##### Podcasts
| Field | Description | Default |
|-------|-------------|---------|
| **Episode List Offset** | Starting position for episode listing. | 0 |
| **Episode List Limit** | Maximum episodes to return. | 50 |
| **Include Recommended Shows** | **ON:** Fetches related podcast suggestions listeners also enjoy. **OFF:** No recommendations returned. | OFF |

##### Episodes
| Field | Description | Default |
|-------|-------------|---------|
| **Include Recommended Episodes** | **ON:** Fetches recommended episodes based on Spotify's listening context. **OFF:** No recommendations returned. | OFF |

##### Artists & Tracks
No additional filters — the Spotify scraper fetches the complete overview/detail automatically.

---

### Output Data Format

Output format varies by content type. Here are examples for the most common types:

#### Track Detail

```json
{
    "uri": "spotify:track:4cOdK2wGLETKBW3PvgPWqT",
    "name": "Lose Yourself",
    "artists": [{"name": "Eminem", "uri": "spotify:artist:..."}],
    "albumOfTrack": {"name": "Curtain Call: The Hits", "date": {"year": 2005}},
    "duration": {"totalMilliseconds": 326133},
    "playcount": "1234567890",
    "hasLyrics": true
}
````

#### Album Detail

```json
{
    "uri": "spotify:album:2cWBwpqMsDJC1ZUwz813lj",
    "name": "The Eminem Show",
    "artists": [{"name": "Eminem"}],
    "date": {"year": 2002},
    "label": "Aftermath",
    "tracks": {"totalCount": 20, "items": [{"track": {"name": "White America"}}]}
}
```

#### Artist Detail

```json
{
    "uri": "spotify:artist:7dGJo4pcD2V6oG08qCgod6",
    "name": "Eminem",
    "stats": {"followers": 78000000, "monthlyListeners": 65000000},
    "discography": {"albums": {"totalCount": 12}, "singles": {"totalCount": 50}},
    "relatedContent": {"relatedArtists": {"items": [{"name": "50 Cent"}]}}
}
```

#### Playlist Detail

```json
{
    "uri": "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M",
    "name": "Today's Top Hits",
    "followers": 35000000,
    "content": {"totalCount": 50, "items": [{"itemV2": {"data": {"name": "Espresso"}}}]}
}
```

***

### Step-by-Step Tutorial

1. Go to the **Spotify Scraper** actor page on Apify
2. Select a **Content Type** from the dropdown
3. Paste Spotify URIs or URLs into the **Spotify URIs / URLs** field
4. Configure type-specific filters (track list limits, section details, etc.)
5. Set **Proxy Country** to US
6. Set your **spending limit** and click **Start**
7. Download complete metadata from the Dataset tab

***

### When to Use This vs. Dedicated Scrapers

| Need | Recommended Actor |
|------|------------------|
| Full details from URIs (any type) | **Spotify Scraper** (this actor) |
| Search + details for tracks | [Spotify Tracks Scraper](https://apify.com/apiharvest/spotify-tracks-search-and-scraper) |
| Search + details for albums | [Spotify Albums Scraper](https://apify.com/apiharvest/spotify-albums-search-and-scraper) |
| Search for any type (no details) | [Spotify Search](https://apify.com/apiharvest/spotify-search-all-types) |
| Spotify user profiles | [Spotify Users Scraper](https://apify.com/apiharvest/spotify-users-search-and-profile-scraper) |

This Spotify scraper is ideal when you have URIs from multiple sources and need full metadata. Dedicated Spotify scrapers offer search functionality and type-specific conveniences.

***

### Common Use Cases for This Spotify Scraper (Get Details)

#### Batch Data Enrichment

Have a spreadsheet of Spotify URIs? Paste them all into the Spotify scraper and get complete metadata. Works for any of the 8 content types.

#### Cross-Type Data Collection

Scrape tracks, albums, and artists in separate runs using the same Spotify scraper actor — no need to configure different scrapers.

#### Data Pipeline Integration

Feed Spotify URIs from other sources (databases, APIs, web scraping) into this Spotify scraper for structured metadata enrichment.

#### Catalog Analysis

Scrape large collections of Spotify content for research, competitive analysis, or catalog management.

#### Monitoring & Change Detection

Schedule the Spotify scraper to regularly fetch metadata for tracked URIs and detect changes in playlists, albums, or artist profiles.

***

***

### Why Choose This Spotify Scraper Over Others?

Most Spotify scrapers on Apify return incomplete or reformatted data — missing fields, simplified structures, or outdated endpoints. This spotify scraper is different. It delivers **every single data field** that Spotify provides internally — the exact same data the real Spotify app uses.

| Feature | This Spotify Scraper | Other Actors on Apify |
|---------|---------------------|----------------------|
| **Data completeness** | Every field Spotify returns — all 8 content types from URIs — tracks, albums, artists, playlists, genres, audiobooks, podcasts, and episodes with complete metadata | Partial data, missing key fields |
| **Authentication** | No API key, no login, no developer account | Often require Spotify API credentials |
| **Rate limits** | No limits — automatic token rotation | Restricted by official API quotas |
| **Data structure** | Raw Spotify format — identical to real Spotify app | Reformatted, simplified, or flattened |
| **Proxy support** | 50+ residential proxy countries | Limited or no proxy options |
| **Pricing** | Pay per result — you only pay for data delivered | Flat fees, subscriptions, or usage caps |
| **Reliability** | Auto-adapts to Spotify API changes — always up to date | Hardcoded endpoints that break on updates |

> **Bottom line:** If Spotify shows it, this spotify scraper extracts it. No other Spotify detail actor on Apify gives you this level of complete, production-ready data.

### Frequently Asked Questions

**Q: Does this Spotify scraper support keyword search?**
A: No. Use the [Spotify Search](https://apify.com/apiharvest/spotify-search-all-types) actor for keywords. This Spotify scraper fetches details from URIs only.

**Q: Can I scrape Spotify user profiles?**
A: No. User profiles require headless browser scraping. Use the [Spotify Users Scraper](https://apify.com/apiharvest/spotify-users-search-and-profile-scraper).

**Q: Can I scrape multiple content types in one run?**
A: One type per run. The Spotify scraper validates that all URIs match the selected content type.

**Q: What if I paste wrong URI types?**
A: The Spotify scraper validates URIs and logs helpful messages about which actor to use for mismatched URI types.

**Q: Is there a result limit?**
A: No hard limit. The Spotify scraper processes as many URIs as your spending limit allows.

**Q: What's the difference between this and the original Spotify Search & Complete Data Scraper?**
A: This Spotify scraper focuses on URI-based detail fetching for 8 types. The original actor combines search and details for all types in one monolithic interface.

***

### Related Spotify Scrapers by apiharvest

| Actor | Description |
|-------|-------------|
| [Spotify Search — All Types](https://apify.com/apiharvest/spotify-search-all-types) | Search all 9 Spotify content types (search-only) |
| [Spotify Tracks Scraper](https://apify.com/apiharvest/spotify-tracks-search-and-scraper) | Search & scrape Spotify tracks |
| [Spotify Albums Scraper](https://apify.com/apiharvest/spotify-albums-search-and-scraper) | Search & scrape Spotify albums |
| [Spotify Artists Scraper](https://apify.com/apiharvest/spotify-artists-search-and-scraper) | Search & scrape Spotify artists |
| [Spotify Playlists Scraper](https://apify.com/apiharvest/spotify-playlists-search-and-scraper) | Search & scrape Spotify playlists |
| [Spotify Genres Scraper](https://apify.com/apiharvest/spotify-genres-search-and-scraper) | Browse Spotify genre/mood pages |
| [Spotify Audiobooks Scraper](https://apify.com/apiharvest/spotify-audiobooks-search-and-scraper) | Search & scrape Spotify audiobooks |
| [Spotify Episodes Scraper](https://apify.com/apiharvest/spotify-episodes-search-and-scraper) | Search & scrape Spotify episodes |
| [Spotify Podcasts Scraper](https://apify.com/apiharvest/spotify-podcasts-search-and-scraper) | Search & scrape Spotify podcasts |
| [Spotify Users Scraper](https://apify.com/apiharvest/spotify-users-search-and-profile-scraper) | Search & scrape Spotify user profiles |

***

### 🏷️ Keywords

spotify scraper, spotify data scraper, scrape spotify data, spotify metadata scraper, spotify data extractor, apify spotify, spotify api alternative, best spotify scraper

# Actor input Schema

## `getDetailsType` (type: `string`):

Select the type of Spotify content you are scraping.

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

One or more Spotify URIs or URLs to scrape.
Examples:
spotify:track:ID · https://open.spotify.com/track/ID
spotify:album:ID · https://open.spotify.com/album/ID
spotify:artist:ID · https://open.spotify.com/artist/ID
spotify:playlist:ID · https://open.spotify.com/playlist/ID
spotify:genre:ID · spotify:page:ID
spotify:show:ID (audiobooks & podcasts)
spotify:episode:ID

## `proxyCountry` (type: `string`):

Select a proxy country. ⭐ US recommended.

## `albums_get_offset` (type: `integer`):

Starting position in the album's track list. 0 = first track.

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

Maximum number of tracks to return from the album.

## `playlists_get_offset` (type: `integer`):

Starting position in the playlist's track list. 0 = first track.

## `playlists_get_limit` (type: `integer`):

Maximum number of tracks to return from the playlist.

## `genres_get_sectionLimit` (type: `integer`):

Number of sections to fetch from the genre page (e.g. 'Popular Playlists', 'New Releases').

## `genres_get_sectionItemLimit` (type: `integer`):

Maximum items returned inside each section when using browseSection.
📌 Only active when 'Include Section Details' is ON.

## `genres_includeSectionDetails` (type: `boolean`):

✅ When ON — runs browseSection API call for each section on the genre page. Fetches full item details (all playlists, albums, or artists in the section) up to the Items Per Section limit.

❌ When OFF — sections return only a quick 10-item preview from the browsePage response. You may miss items beyond the first 10 in each section.

⚠️ Slower — one extra API call per section.

## `audiobooks_get_offset` (type: `integer`):

Starting position in the audiobook's chapter list. 0 = first chapter.

## `audiobooks_get_limit` (type: `integer`):

Maximum number of chapters to fetch per audiobook.

## `audiobooks_includeSimilar` (type: `boolean`):

✅ When ON — fetches similar audiobook recommendations from Spotify. Gives you related audiobooks listeners also enjoy.

❌ When OFF — no recommendations returned. Turn ON if you want discovery data for related audiobooks.

## `podcasts_get_offset` (type: `integer`):

Starting position in the podcast's episode list. 0 = most recent episode.

## `podcasts_get_limit` (type: `integer`):

Maximum number of episodes to fetch per podcast.

## `podcasts_includeRecommended` (type: `boolean`):

✅ When ON — fetches recommended show suggestions from Spotify. Gives you related podcasts listeners also enjoy.

❌ When OFF — no recommendations returned. Turn ON if you want discovery data for related shows.

## `episodes_includeRecommended` (type: `boolean`):

✅ When ON — fetches recommended episodes based on Spotify's listening context. Gives you related episode suggestions.

❌ When OFF — no recommendations returned. Turn ON to discover related episodes listeners also enjoy.

## Actor input object example

```json
{
  "getDetailsType": "track",
  "spotifyUris": [
    "spotify:track:0VjIjW4GlUZAMYd2vXMi3b",
    "https://open.spotify.com/track/7KA4W4McWYRpgf0fWsJZWB"
  ],
  "proxyCountry": "US",
  "albums_get_offset": 0,
  "albums_get_limit": 50,
  "playlists_get_offset": 0,
  "playlists_get_limit": 50,
  "genres_get_sectionLimit": 10,
  "genres_get_sectionItemLimit": 10,
  "genres_includeSectionDetails": false,
  "audiobooks_get_offset": 0,
  "audiobooks_get_limit": 50,
  "audiobooks_includeSimilar": false,
  "podcasts_get_offset": 0,
  "podcasts_get_limit": 50,
  "podcasts_includeRecommended": false,
  "episodes_includeRecommended": false
}
```

# 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 = {
    "spotifyUris": [
        "spotify:track:0VjIjW4GlUZAMYd2vXMi3b",
        "https://open.spotify.com/track/7KA4W4McWYRpgf0fWsJZWB"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("apiharvest/spotify-scraper-get-full-details").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 = { "spotifyUris": [
        "spotify:track:0VjIjW4GlUZAMYd2vXMi3b",
        "https://open.spotify.com/track/7KA4W4McWYRpgf0fWsJZWB",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("apiharvest/spotify-scraper-get-full-details").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "spotifyUris": [
    "spotify:track:0VjIjW4GlUZAMYd2vXMi3b",
    "https://open.spotify.com/track/7KA4W4McWYRpgf0fWsJZWB"
  ]
}' |
apify call apiharvest/spotify-scraper-get-full-details --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=apiharvest/spotify-scraper-get-full-details",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Spotify Scraper — Get Full Details 🎯",
        "description": "🔗 Get complete metadata — works for tracks, albums, artists, playlists, genres, audiobooks, podcasts & episodes. Returns every single field Spotify provides internally. The best way to enrich Spotify data with full detail extraction ✨ Spotify Scraper — Get Full Details 🎯",
        "version": "0.0",
        "x-build-id": "WcjC4SIJHU5gbBZ8n"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apiharvest~spotify-scraper-get-full-details/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apiharvest-spotify-scraper-get-full-details",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/apiharvest~spotify-scraper-get-full-details/runs": {
            "post": {
                "operationId": "runs-sync-apiharvest-spotify-scraper-get-full-details",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/apiharvest~spotify-scraper-get-full-details/run-sync": {
            "post": {
                "operationId": "run-sync-apiharvest-spotify-scraper-get-full-details",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "getDetailsType",
                    "spotifyUris"
                ],
                "properties": {
                    "getDetailsType": {
                        "title": "🎯 Content Type",
                        "enum": [
                            "track",
                            "album",
                            "artist",
                            "playlist",
                            "genre",
                            "audiobook",
                            "episode",
                            "podcast"
                        ],
                        "type": "string",
                        "description": "Select the type of Spotify content you are scraping.",
                        "default": "track"
                    },
                    "spotifyUris": {
                        "title": "🔗 Spotify URIs / URLs",
                        "type": "array",
                        "description": "One or more Spotify URIs or URLs to scrape.\nExamples:\n  spotify:track:ID · https://open.spotify.com/track/ID\n  spotify:album:ID · https://open.spotify.com/album/ID\n  spotify:artist:ID · https://open.spotify.com/artist/ID\n  spotify:playlist:ID · https://open.spotify.com/playlist/ID\n  spotify:genre:ID · spotify:page:ID\n  spotify:show:ID (audiobooks & podcasts)\n  spotify:episode:ID",
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyCountry": {
                        "title": "🌐 Proxy Country",
                        "enum": [
                            "US",
                            "GB",
                            "AU",
                            "CA",
                            "DE",
                            "FR",
                            "NL",
                            "IT",
                            "ES",
                            "SE",
                            "NO",
                            "DK",
                            "FI",
                            "BE",
                            "AT",
                            "CH",
                            "IE",
                            "PL",
                            "PT",
                            "CZ",
                            "HU",
                            "RO",
                            "GR",
                            "BG",
                            "HR",
                            "SK",
                            "RS",
                            "JP",
                            "KR",
                            "SG",
                            "HK",
                            "TW",
                            "TH",
                            "MY",
                            "ID",
                            "PH",
                            "VN",
                            "IN",
                            "BR",
                            "MX",
                            "AR",
                            "CL",
                            "CO",
                            "PE",
                            "ZA",
                            "NG",
                            "KE",
                            "EG",
                            "SA",
                            "AE",
                            "TR",
                            "IL",
                            "UA",
                            "RU",
                            "BY"
                        ],
                        "type": "string",
                        "description": "Select a proxy country. ⭐ US recommended.",
                        "default": "US"
                    },
                    "albums_get_offset": {
                        "title": "📄 Track List Offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Starting position in the album's track list. 0 = first track.",
                        "default": 0
                    },
                    "albums_get_limit": {
                        "title": "📊 Track List Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of tracks to return from the album.",
                        "default": 50
                    },
                    "playlists_get_offset": {
                        "title": "📄 Track List Offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Starting position in the playlist's track list. 0 = first track.",
                        "default": 0
                    },
                    "playlists_get_limit": {
                        "title": "📊 Track List Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of tracks to return from the playlist.",
                        "default": 50
                    },
                    "genres_get_sectionLimit": {
                        "title": "📊 How Many Sections",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Number of sections to fetch from the genre page (e.g. 'Popular Playlists', 'New Releases').",
                        "default": 10
                    },
                    "genres_get_sectionItemLimit": {
                        "title": "📊 Items Per Section",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum items returned inside each section when using browseSection.\n📌 Only active when 'Include Section Details' is ON.",
                        "default": 10
                    },
                    "genres_includeSectionDetails": {
                        "title": "🔍 Include Section Details",
                        "type": "boolean",
                        "description": "✅ When ON — runs browseSection API call for each section on the genre page. Fetches full item details (all playlists, albums, or artists in the section) up to the Items Per Section limit.\n\n❌ When OFF — sections return only a quick 10-item preview from the browsePage response. You may miss items beyond the first 10 in each section.\n\n⚠️ Slower — one extra API call per section.",
                        "default": false
                    },
                    "audiobooks_get_offset": {
                        "title": "📄 Chapter List Offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Starting position in the audiobook's chapter list. 0 = first chapter.",
                        "default": 0
                    },
                    "audiobooks_get_limit": {
                        "title": "📊 Chapter List Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of chapters to fetch per audiobook.",
                        "default": 50
                    },
                    "audiobooks_includeSimilar": {
                        "title": "🔗 Include Similar Audiobooks",
                        "type": "boolean",
                        "description": "✅ When ON — fetches similar audiobook recommendations from Spotify. Gives you related audiobooks listeners also enjoy.\n\n❌ When OFF — no recommendations returned. Turn ON if you want discovery data for related audiobooks.",
                        "default": false
                    },
                    "podcasts_get_offset": {
                        "title": "📄 Episode List Offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Starting position in the podcast's episode list. 0 = most recent episode.",
                        "default": 0
                    },
                    "podcasts_get_limit": {
                        "title": "📊 Episode List Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of episodes to fetch per podcast.",
                        "default": 50
                    },
                    "podcasts_includeRecommended": {
                        "title": "🔗 Include Recommended Shows",
                        "type": "boolean",
                        "description": "✅ When ON — fetches recommended show suggestions from Spotify. Gives you related podcasts listeners also enjoy.\n\n❌ When OFF — no recommendations returned. Turn ON if you want discovery data for related shows.",
                        "default": false
                    },
                    "episodes_includeRecommended": {
                        "title": "🔗 Include Recommended Episodes",
                        "type": "boolean",
                        "description": "✅ When ON — fetches recommended episodes based on Spotify's listening context. Gives you related episode suggestions.\n\n❌ When OFF — no recommendations returned. Turn ON to discover related episodes listeners also enjoy.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
