# Spotify Podcasts Search and Scraper 🎧 (`apiharvest/spotify-podcasts-search-and-scraper`) Actor

🎙Scrape Spotify podcasts with full episode listings, topics, star ratings, trailer URI, publisher data, content classifications & episode pagination. Enable Fetch Details to get complete show metadata with all episodes. Same data as Spotify's podcast pages ✨Spotify Podcasts Search and Scraper 🎧

- **URL**: https://apify.com/apiharvest/spotify-podcasts-search-and-scraper.md
- **Developed by:** [APIHarvest](https://apify.com/apiharvest) (community)
- **Categories:** Automation, Developer tools, Social media
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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 Podcasts Scraper — Search & Scrape Complete Spotify Podcast/Show Data | Best Spotify Scraper | Best Spotify Scraper

### What is the Spotify Podcasts Scraper?

The **Spotify Podcasts Scraper** is a production-ready Apify actor for searching and scraping Spotify podcasts (shows) at scale. This Spotify podcasts scraper extracts complete show metadata including episode listings, publisher info, ratings, descriptions, and recommended shows — directly from Spotify. No Spotify API key, no login credentials, no developer account required.

Spotify is one of the world's largest podcast platforms. This Spotify podcasts scraper gives you programmatic access to show-level metadata including full episode listings — ideal for podcast industry research, competitive analysis, and content discovery.

---

### How Does This Spotify Podcasts Scraper Work?

This Spotify podcasts scraper operates in **two modes** that are auto-detected from your input:

#### Mode 1: Search Spotify Podcasts by Keyword

Enter keywords and the Spotify podcasts scraper searches Spotify's show catalog. Search by show name, topic, publisher, or any keyword.

**Example keywords:** `"true crime"`, `"technology"`, `"comedy"`, `"business"`, `"health"`, `"Joe Rogan"`

#### Mode 2: Scrape Specific Spotify Podcasts by URI or URL

Paste Spotify show URIs or URLs directly. The Spotify podcasts scraper accepts URI format (`spotify:show:ABC123`) and URL format (`https://open.spotify.com/show/ABC123`).

#### Auto-Detection

The Spotify podcasts scraper automatically detects the mode:

- **Fill Search Keywords** → Spotify podcasts search mode activates
- **Fill Spotify Show URIs / URLs** → Spotify podcast details mode activates
- **Fill both** → Runs search first, then fetches podcast details

#### Recommended Shows

The Spotify podcasts scraper can optionally fetch **recommended shows** — Spotify's algorithm-generated podcast suggestions. Enable **Include Recommended Shows** to discover related Spotify podcasts.

---

### Input Configuration

| Field | Mode | Description | Default |
|-------|------|-------------|---------|
| **Search Keywords** | Search | Keywords to search Spotify podcasts. | — |
| **Spotify Show URIs / URLs** | Details | `spotify:show:ID` or `https://open.spotify.com/show/ID` | — |
| **Proxy Country** | Both | Residential proxy country. US recommended. | US |
| **Search Offset** | Search | Starting position for search pagination. | 0 |
| **Search Limit** | Search | Maximum Spotify podcasts per keyword. | 30 |
| **Fetch Full Podcast Details** | Search | Enrich Spotify podcast search results with complete metadata. | OFF |
| **Episode List Offset** | Details | Starting position for the Spotify podcast episode list. | 0 |
| **Episode List Limit** | Details | Maximum episodes to return from each Spotify podcast. | 50 |
| **Include Recommended Shows** | Details | Fetch similar Spotify podcast recommendations. | OFF |

#### Understanding Filters & Toggles

| Toggle / Filter | Default | What Happens When ON | What You Miss When OFF |
|----------------|---------|---------------------|----------------------|
| **Fetch Full Podcast Details** | OFF | Each search result is enriched with complete metadata: full episode listings (paginated), star ratings, topics, trailer URI, publisher data, and content classifications. | You only get basic search data — podcast name, publisher, image, and URI. No episodes, no ratings, no topics. |
| **Include Recommended Shows** | OFF | Fetches recommended show suggestions from Spotify. Gives you related podcasts listeners also enjoy. | No recommendation data returned. |
| **Episode Offset** | 0 | Start position in the episode list. Use for paginating shows with many episodes. | — |
| **Episode Limit** | 50 | Max episodes to return from each podcast. | — |
| **Search Limit** | 10 | Controls how many podcast results you get per keyword. | — |
| **Search Offset** | 0 | Skip results for pagination. | — |

> **💡 Tip:** When using Podcast URIs/URLs (Get Details mode), full details are **always** fetched automatically — the Fetch Full Podcast Details toggle only applies to Search mode.

**Note:** Spotify's podcast search API does not support `numberOfTopResults`. This is a Spotify API limitation.

---

### Output Data Format

#### Search Result Example

```json
{
    "query": "true crime",
    "uri": "spotify:show:ABC123",
    "name": "Serial",
    "publisher": "Serial Productions",
    "description": "Serial is a podcast from the creators of This American Life...",
    "coverArt": {"sources": [{"url": "https://i.scdn.co/image/..."}]},
    "mediaType": "PODCAST"
}
````

#### Full Detail Example

```json
{
    "uri": "spotify:show:ABC123",
    "name": "Serial",
    "description": "Serial is a podcast from the creators of This American Life, hosted by Sarah Koenig...",
    "htmlDescription": "<p>Serial is a podcast...</p>",
    "publisher": {"name": "Serial Productions & The New York Times"},
    "coverArt": {"sources": [{"url": "https://i.scdn.co/image/...", "width": 640}]},
    "rating": {"averageRating": 4.7, "totalRatings": 85000},
    "topics": {"items": [{"title": "True Crime"}, {"title": "News"}]},
    "trailerUri": "spotify:episode:trailer123",
    "episodes": {
        "totalCount": 42,
        "items": [
            {
                "name": "S01 Episode 01: The Alibi",
                "uri": "spotify:episode:...",
                "description": "It's Baltimore, 1999...",
                "duration": {"totalMilliseconds": 3360000},
                "releaseDate": {"isoString": "2014-10-03T00:00:00Z"},
                "isPlayable": true
            }
        ]
    },
    "recommendedShows": [
        {"name": "Undisclosed", "uri": "spotify:show:...", "publisher": "Undisclosed"},
        {"name": "Crime Junkie", "uri": "spotify:show:...", "publisher": "audiochuck"}
    ]
}
```

The Spotify podcasts scraper returns rich show-level data with full episode listings, ratings, topics, and recommendations.

***

### Step-by-Step Tutorial

#### How to Search Spotify Podcasts

1. Go to the **Spotify Podcasts Scraper** actor page
2. Enter keywords like `"comedy"`, `"tech news"`, `"self improvement"`
3. Set **Proxy Country** to US
4. (Optional) Enable **Fetch Full Podcast Details** for episode listings
5. Click **Start** and download results

#### How to Scrape Specific Spotify Podcasts

1. Copy Spotify show URIs or URLs
2. Paste into the **Spotify Show URIs / URLs** field
3. Set **Episode List Limit** to control how many episodes per Spotify podcast
4. (Optional) Enable **Include Recommended Shows** for discovery
5. Click **Start**

***

### Common Use Cases for This Spotify Scraper (Podcasts)

#### Podcast Industry Research

Analyze the podcast landscape on Spotify — popular categories, publisher distribution, rating patterns, and episode cadences. The Spotify podcasts scraper provides structured data for industry reports.

#### Competitive Monitoring

Track competitor podcasts by scraping their show pages regularly. Monitor episode releases, ratings, and topic coverage using the Spotify podcasts scraper.

#### Advertising & Sponsorship Research

Identify high-performing Spotify podcasts for ad placements. The Spotify podcasts scraper returns ratings, review counts, and episode frequency — key metrics for ad buyers.

#### Content Discovery & Curation

Find Spotify podcasts in niche topics for recommendation lists, newsletters, or app integrations. The Spotify podcasts scraper searches Spotify's entire catalog.

#### Show Migration & Cataloging

Export complete Spotify podcast metadata including all episodes for content migration or catalog management.

#### Recommendation Graph Analysis

Map Spotify's podcast recommendation algorithm by scraping recommended shows across many Spotify podcasts. Build your own discovery engine.

***

### 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 — full episode listings, topics, ratings, trailer info, content classifications, and publisher data | 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 podcast actor on Apify gives you this level of complete, production-ready data.

### Frequently Asked Questions

**Q: Does this Spotify podcasts scraper require a Spotify account?**
A: No. Works without any authentication.

**Q: Why is there no Top Results for Spotify podcast search?**
A: Spotify's podcast search API does not support the `numberOfTopResults` parameter.

**Q: Podcasts share `spotify:show:` URI with audiobooks?**
A: Yes. Both Spotify podcasts and audiobooks use `spotify:show:` URIs. This Spotify podcasts scraper handles podcasts specifically.

**Q: Can I get all episodes from a Spotify podcast?**
A: Yes. Increase **Episode List Limit** or use multiple runs with different offsets for very large Spotify podcasts.

**Q: Can I find similar podcasts?**
A: Yes. Enable **Include Recommended Shows** for algorithm-generated Spotify podcast suggestions.

**Q: How fast is this Spotify podcasts scraper?**
A: Search is fast (seconds). Detail fetching processes each Spotify podcast sequentially — a few seconds per show.

***

### Related Spotify Scrapers by apiharvest

| Actor | Description |
|-------|-------------|
| [Spotify Episodes Scraper](https://apify.com/apiharvest/spotify-episodes-search-and-scraper) | Search & scrape individual Spotify podcast episodes |
| [Spotify Tracks Scraper](https://apify.com/apiharvest/spotify-tracks-search-and-scraper) | Search & scrape Spotify track metadata |
| [Spotify Albums Scraper](https://apify.com/apiharvest/spotify-albums-search-and-scraper) | Search & scrape Spotify album metadata |
| [Spotify Artists Scraper](https://apify.com/apiharvest/spotify-artists-search-and-scraper) | Search & scrape Spotify artist profiles |
| [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 Users Scraper](https://apify.com/apiharvest/spotify-users-search-and-profile-scraper) | Search & scrape Spotify user profiles |
| [Spotify Search — All Types](https://apify.com/apiharvest/spotify-search-all-types) | Search all 9 Spotify content types |
| [Spotify Scraper — Get Full Details](https://apify.com/apiharvest/spotify-scraper-get-full-details) | Get full details for 8 Spotify content types |

***

### 🏷️ Keywords

spotify scraper, spotify podcast scraper, scrape spotify podcasts, spotify show scraper, spotify data extractor, apify spotify, spotify api alternative, best spotify scraper

# Actor input Schema

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

One or more search terms to find podcasts/shows on Spotify.

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

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

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

⚠️ Only show URIs/URLs are accepted.
💡 Leave empty and fill Search Keywords above to use Search mode instead.

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

Select a proxy country for scraping. ⭐ US recommended for best results.

## `podcasts_search_offset` (type: `integer`):

Starting position for search pagination.

## `podcasts_search_limit` (type: `integer`):

Maximum number of results per keyword.

## `podcasts_fetchDetails` (type: `boolean`):

Search mode only — Get Details mode always fetches full details.

✅ When ON — fetches full podcast metadata for every search result. You get: full episode listings (paginated), star ratings, topics, trailer URI, publisher data, and content classifications.

❌ When OFF — you only get basic search data: podcast name, publisher, image, and URI. You will NOT get episodes, ratings, topics, or any detailed show metadata.

⚠️ Slower — extra API calls per search result.

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

Starting position in the episode list. 0 = most recent.

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

## Actor input object example

```json
{
  "keyword": [
    "tech podcast",
    "comedy podcast"
  ],
  "spotifyUris": [
    "spotify:show:0UetHF8bYSGBtDsjVl4GDv",
    "https://open.spotify.com/show/1jMAdj6UyWokbPSj8ZZWrl"
  ],
  "proxyCountry": "US",
  "podcasts_search_offset": 0,
  "podcasts_search_limit": 30,
  "podcasts_fetchDetails": false,
  "podcasts_get_offset": 0,
  "podcasts_get_limit": 50,
  "podcasts_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 = {
    "keyword": [
        "tech podcast",
        "comedy podcast"
    ],
    "spotifyUris": [
        "spotify:show:0UetHF8bYSGBtDsjVl4GDv",
        "https://open.spotify.com/show/1jMAdj6UyWokbPSj8ZZWrl"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("apiharvest/spotify-podcasts-search-and-scraper").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": [
        "tech podcast",
        "comedy podcast",
    ],
    "spotifyUris": [
        "spotify:show:0UetHF8bYSGBtDsjVl4GDv",
        "https://open.spotify.com/show/1jMAdj6UyWokbPSj8ZZWrl",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("apiharvest/spotify-podcasts-search-and-scraper").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 '{
  "keyword": [
    "tech podcast",
    "comedy podcast"
  ],
  "spotifyUris": [
    "spotify:show:0UetHF8bYSGBtDsjVl4GDv",
    "https://open.spotify.com/show/1jMAdj6UyWokbPSj8ZZWrl"
  ]
}' |
apify call apiharvest/spotify-podcasts-search-and-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Spotify Podcasts Search and Scraper 🎧",
        "description": "🎙Scrape Spotify podcasts with full episode listings, topics, star ratings, trailer URI, publisher data, content classifications & episode pagination. Enable Fetch Details to get complete show metadata with all episodes. Same data as Spotify's podcast pages ✨Spotify Podcasts Search and Scraper 🎧",
        "version": "0.0",
        "x-build-id": "MjWcg3NitQQA4jSIq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apiharvest~spotify-podcasts-search-and-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apiharvest-spotify-podcasts-search-and-scraper",
                "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-podcasts-search-and-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apiharvest-spotify-podcasts-search-and-scraper",
                "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-podcasts-search-and-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apiharvest-spotify-podcasts-search-and-scraper",
                "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",
                "properties": {
                    "keyword": {
                        "title": "🔍 Search Keyword(s)",
                        "type": "array",
                        "description": "One or more search terms to find podcasts/shows on Spotify.\n\n💡 Leave empty and fill Spotify URIs below to use Get Details mode instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "spotifyUris": {
                        "title": "🔗 Spotify Show URIs / URLs",
                        "type": "array",
                        "description": "One or more Spotify show URIs or URLs to fetch podcast metadata.\nExamples: spotify:show:ID · https://open.spotify.com/show/ID\n\n⚠️ Only show URIs/URLs are accepted.\n💡 Leave empty and fill Search Keywords above to use Search mode instead.",
                        "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 for scraping. ⭐ US recommended for best results.",
                        "default": "US"
                    },
                    "podcasts_search_offset": {
                        "title": "📄 Search Offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Starting position for search pagination.",
                        "default": 0
                    },
                    "podcasts_search_limit": {
                        "title": "📊 Search Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of results per keyword.",
                        "default": 30
                    },
                    "podcasts_fetchDetails": {
                        "title": "🔄 Fetch Full Podcast Details",
                        "type": "boolean",
                        "description": "Search mode only — Get Details mode always fetches full details.\n\n✅ When ON — fetches full podcast metadata for every search result. You get: full episode listings (paginated), star ratings, topics, trailer URI, publisher data, and content classifications.\n\n❌ When OFF — you only get basic search data: podcast name, publisher, image, and URI. You will NOT get episodes, ratings, topics, or any detailed show metadata.\n\n⚠️ Slower — extra API calls per search result.",
                        "default": false
                    },
                    "podcasts_get_offset": {
                        "title": "📄 Episode List Offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Starting position in the episode list. 0 = most recent.",
                        "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
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
