# Spotify Genres Search and Scraper 🎨 (`apiharvest/spotify-genres-search-and-scraper`) Actor

🎨 Scrape Spotify genre & mood browse pages with all sections, curated playlist URIs, section item details, cover art & content previews. Enable Fetch Details to expand every section with full item metadata. Complete browse data identical to Spotify's genre pages✨Spotify Genres Search and Scraper 🎨

- **URL**: https://apify.com/apiharvest/spotify-genres-search-and-scraper.md
- **Developed by:** [APIHarvest](https://apify.com/apiharvest) (community)
- **Categories:** Automation, Developer tools, Social media
- **Stats:** 1 total users, 1 monthly users, 0.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 Genres Scraper — Search & Browse Spotify Genre and Mood Pages | Best Spotify Scraper | Best Spotify Scraper

### What is the Spotify Genres Scraper?

The **Spotify Genres Scraper** is a specialized Apify actor designed to search and scrape Spotify genre and mood browse pages at scale. This Spotify genres scraper extracts complete genre page data including sections, curated playlists, new releases, and trending content — directly from Spotify. No Spotify API key, no login credentials, no developer account required.

Spotify organizes its catalog into genre and mood categories like "Hip-Hop", "Pop", "Chill", "Focus", "Workout", and hundreds more. This Spotify genres scraper lets you programmatically explore these browse pages and extract their structure, sections, and content — something the official Spotify API barely supports.

---

### How Does This Spotify Genres Scraper Work?

This Spotify genres scraper operates in **two modes** that are auto-detected from your input:

#### Mode 1: Search Spotify Genres by Keyword

Enter keywords and the Spotify genres scraper searches Spotify's genre/mood catalog. You can search for genre names, mood keywords, or activity types. The Spotify genres scraper returns matching genre categories.

**Example keywords:** `"hip hop"`, `"chill"`, `"workout"`, `"focus"`, `"party"`, `"sleep"`, `"classical"`

#### Mode 2: Scrape Specific Spotify Genre Pages by URI

Already have Spotify genre URIs? Paste them directly. The Spotify genres scraper accepts two URI formats:

- `spotify:genre:hip_hop` — Standard Spotify genre URIs
- `spotify:page:genre_hip_hop` — Spotify page-type genre URIs

Each Spotify genre URI is resolved to its full browse page data including all sections and their content.

#### Auto-Detection

The Spotify genres scraper automatically detects the mode:

- **Fill Search Keywords** → Spotify genres search mode activates
- **Fill Spotify Genre URIs** → Spotify genre details mode activates
- **Fill both** → The Spotify genres scraper runs search first, then fetches genre page details

#### Detail Enrichment & Section Details

The Spotify genres scraper offers two levels of detail enrichment:

1. **Fetch Full Genre Details** — Basic enrichment: fetches the genre browse page structure with section titles and content counts.
2. **Include Section Details** — Deep enrichment: drills into each section for detailed content (playlists, albums, tracks within each section). This is the most comprehensive Spotify genres scraper mode.

---

### Input Configuration

| Field | Mode | Description | Default |
|-------|------|-------------|---------|
| **Search Keywords** | Search | One or more keywords to search Spotify genres/moods. | — |
| **Spotify Genre URIs** | Details | `spotify:genre:ID` or `spotify:page:ID` URIs | — |
| **Proxy Country** | Both | Residential proxy country. US recommended for best Spotify genres scraper results. | US |
| **Search Offset** | Search | Starting position for search pagination. | 0 |
| **Search Limit** | Search | Maximum Spotify genres to return per keyword. | 30 |
| **Top Results Count** | Search | Number of top-ranked Spotify genres. | 20 |
| **Fetch Full Genre Details** | Search | Enrich Spotify genre search results with browse page data. | OFF |
| **Section Limit** | Details | Maximum sections to fetch from each Spotify genre page. | 10 |
| **Section Item Limit** | Details | Maximum items per section in each Spotify genre page. | 20 |
| **Include Section Details** | Details | Deep-scrape each Spotify genre section for detailed content (playlists, tracks, etc.). | OFF |

#### Understanding Filters & Toggles

| Toggle / Filter | Default | What Happens When ON | What You Miss When OFF |
|----------------|---------|---------------------|----------------------|
| **Fetch Full Genre Details** | OFF | Each search result is enriched with the genre's browse page: all sections with curated playlists, section titles, cover art, and item metadata. | You only get basic search data — genre name, URI, and image. No section data, no curated playlists, no browse page content. |
| **Include Section Details** | OFF | Fetches full item details for each section on the genre page (all playlists/albums/artists up to the item limit). One extra API call per section. | Sections return only a quick 10-item preview. You may miss items beyond the first 10 in each section. |
| **Section Limit** | 10 | Max number of sections to scrape from each genre page. | — |
| **Section Item Limit** | 20 | Max items per section when Include Section Details is ON. | — |
| **Search Limit** | 30 | Controls how many genre results you get per keyword. | — |
| **Search Offset** | 0 | Skip results for pagination. | — |

> **💡 Tip:** When using Genre URIs (Get Details mode), full details are **always** fetched automatically — the Fetch Full Genre Details toggle only applies to Search mode. Enable **Include Section Details** for the most complete genre data.

---

### Output Data Format

#### Search Result Example

```json
{
    "query": "hip hop",
    "uri": "spotify:page:genre_hip_hop",
    "name": "Hip-Hop",
    "images": [{"url": "https://t.scdn.co/images/..."}]
}
````

#### Full Genre Page Example

```json
{
    "uri": "spotify:page:genre_hip_hop",
    "name": "Hip-Hop",
    "header": {"title": {"text": "Hip-Hop"}, "backgroundImage": {"url": "https://..."}},
    "sections": [
        {
            "title": {"text": "Popular Hip-Hop Playlists"},
            "totalCount": 25,
            "items": [
                {"uri": "spotify:playlist:...", "name": "RapCaviar", "description": "New music from..."},
                {"uri": "spotify:playlist:...", "name": "Hip-Hop Controller", "description": "..."}
            ]
        },
        {
            "title": {"text": "New Hip-Hop Releases"},
            "totalCount": 50,
            "items": [
                {"uri": "spotify:album:...", "name": "New Album Title", "artist": "Artist Name"}
            ]
        }
    ]
}
```

The Spotify genres scraper returns a hierarchical structure: each genre page has multiple sections, and each section contains items (playlists, albums, or tracks).

***

### Step-by-Step Tutorial

#### How to Search Spotify Genres

1. Go to the **Spotify Genres Scraper** actor page on Apify
2. Enter keywords like `"rock"`, `"mood"`, `"workout"`, `"focus"`
3. Set **Proxy Country** to US
4. (Optional) Enable **Fetch Full Genre Details** for complete browse page data
5. Click **Start** and download results

#### How to Scrape Specific Spotify Genre Pages

1. Get Spotify genre URIs (e.g., `spotify:genre:hip_hop` or `spotify:page:genre_hip_hop`)
2. Paste into the **Spotify Genre URIs** field
3. Configure **Section Limit** and **Section Item Limit** for depth control
4. (Optional) Enable **Include Section Details** for the deepest Spotify genre scrape
5. Click **Start**

***

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

#### Genre Taxonomy Research

Map out Spotify's entire genre and mood taxonomy. The Spotify genres scraper reveals how Spotify categorizes music and organizes browse pages.

#### Playlist Discovery

Find curated Spotify playlists within specific genres. The Spotify genres scraper extracts all playlists featured on genre browse pages.

#### Market & Trend Analysis

Track which genres are trending by monitoring Spotify genre page content over time. Schedule the Spotify genres scraper for regular snapshots.

#### Music App Development

Build genre-aware music apps using Spotify genre structure data. The Spotify genres scraper provides the hierarchical section data needed for navigation UIs.

#### Content Strategy

Labels and artists can discover which Spotify genre pages feature their target audience. The Spotify genres scraper reveals editorial curation patterns.

***

### 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 section data, mood/genre categories, curated playlist URIs, section items, and cover art | 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 genre actor on Apify gives you this level of complete, production-ready data.

### Frequently Asked Questions

**Q: Does this Spotify genres scraper require a Spotify account?**
A: No. The Spotify genres scraper works without any authentication.

**Q: What are the two URI formats?**
A: Spotify genres use either `spotify:genre:ID` or `spotify:page:ID`. Both are valid and the Spotify genres scraper accepts both.

**Q: What does Include Section Details do?**
A: It tells the Spotify genres scraper to drill into each section and fetch detailed content (playlist tracks, album details, etc.) rather than just section titles and counts.

**Q: How many genres does Spotify have?**
A: Spotify has hundreds of genre and mood categories. The Spotify genres scraper can search and discover them via keywords.

**Q: Can I scrape all Spotify genres at once?**
A: Search with broad keywords like `"music"` or `"genre"` to find many categories. The Spotify genres scraper returns all matches.

***

### Related Spotify Scrapers by apiharvest

| Actor | Description |
|-------|-------------|
| [Spotify Tracks Scraper](https://apify.com/apiharvest/spotify-tracks-search-and-scraper) | Search & scrape Spotify track metadata with play counts |
| [Spotify Albums Scraper](https://apify.com/apiharvest/spotify-albums-search-and-scraper) | Search & scrape Spotify album metadata with track listings |
| [Spotify Artists Scraper](https://apify.com/apiharvest/spotify-artists-search-and-scraper) | Search & scrape Spotify artist profiles and discography |
| [Spotify Playlists Scraper](https://apify.com/apiharvest/spotify-playlists-search-and-scraper) | Search & scrape Spotify playlists with full track listings |
| [Spotify Audiobooks Scraper](https://apify.com/apiharvest/spotify-audiobooks-search-and-scraper) | Search & scrape Spotify audiobooks with chapter listings |
| [Spotify Episodes Scraper](https://apify.com/apiharvest/spotify-episodes-search-and-scraper) | Search & scrape Spotify podcast episodes |
| [Spotify Podcasts Scraper](https://apify.com/apiharvest/spotify-podcasts-search-and-scraper) | Search & scrape Spotify podcasts/shows with episode listings |
| [Spotify Users Scraper](https://apify.com/apiharvest/spotify-users-search-and-profile-scraper) | Search & scrape Spotify user profiles with playlists |
| [Spotify Search — All Types](https://apify.com/apiharvest/spotify-search-all-types) | Search all 9 Spotify content types in one actor |
| [Spotify Scraper — Get Full Details](https://apify.com/apiharvest/spotify-scraper-get-full-details) | Get full details for 8 Spotify content types from URIs |

***

### 🏷️ Keywords

spotify scraper, spotify genre scraper, scrape spotify genres, spotify mood scraper, spotify browse scraper, apify spotify, spotify api alternative, best spotify scraper

# Actor input Schema

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

One or more search terms to find genres/moods 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 genre URIs or URLs to fetch full metadata.
Examples: spotify:genre:ID · spotify:page:ID · https://open.spotify.com/genre/ID

⚠️ Only genre/page URIs/URLs are accepted. Other types will be skipped.
💡 Leave empty and fill Search Keywords above to use Search mode instead.

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

Residential proxy exit country. ⭐ US recommended — widest catalog.
If results are empty, switch to US.

## `genres_search_offset` (type: `integer`):

Starting position for search pagination. 0 = first page.

## `genres_search_limit` (type: `integer`):

Maximum number of genre results to return per keyword.

## `genres_search_numberOfTopResults` (type: `integer`):

Number of top-ranked items highlighted in the response.

## `genres_fetchDetails` (type: `boolean`):

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

✅ When ON — runs browsePage for every search result. You get: all genre sections with curated playlists, section titles, cover art images, and item metadata for each section.

❌ When OFF — you only get basic search data: genre name, URI, and image. You will NOT get any section data, curated playlists, or browse page content.

⚠️ Slower — one or more extra API calls per search result.

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

Number of sections to fetch from the genre page (e.g. 'Popular Playlists', 'New Releases').
📌 Active in Get Details mode (always) and in Search mode when Fetch Full Genre Details is ON.

## `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. Only relevant when Fetch Full Genre Details is also ON or in Get Details mode.

## Actor input object example

```json
{
  "keyword": [
    "Rock",
    "Chill"
  ],
  "spotifyUris": [
    "spotify:genre:0JQ5DAqbMKFHOzuVTgTizF",
    "https://open.spotify.com/genre/0JQ5IMCbQBLmdB4JJr3HmK"
  ],
  "proxyCountry": "US",
  "genres_search_offset": 0,
  "genres_search_limit": 30,
  "genres_search_numberOfTopResults": 20,
  "genres_fetchDetails": false,
  "genres_get_sectionLimit": 10,
  "genres_get_sectionItemLimit": 20,
  "genres_includeSectionDetails": 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": [
        "Rock",
        "Chill"
    ],
    "spotifyUris": [
        "spotify:genre:0JQ5DAqbMKFHOzuVTgTizF",
        "https://open.spotify.com/genre/0JQ5IMCbQBLmdB4JJr3HmK"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("apiharvest/spotify-genres-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": [
        "Rock",
        "Chill",
    ],
    "spotifyUris": [
        "spotify:genre:0JQ5DAqbMKFHOzuVTgTizF",
        "https://open.spotify.com/genre/0JQ5IMCbQBLmdB4JJr3HmK",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("apiharvest/spotify-genres-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": [
    "Rock",
    "Chill"
  ],
  "spotifyUris": [
    "spotify:genre:0JQ5DAqbMKFHOzuVTgTizF",
    "https://open.spotify.com/genre/0JQ5IMCbQBLmdB4JJr3HmK"
  ]
}' |
apify call apiharvest/spotify-genres-search-and-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Spotify Genres Search and Scraper 🎨",
        "description": "🎨 Scrape Spotify genre & mood browse pages with all sections, curated playlist URIs, section item details, cover art & content previews. Enable Fetch Details to expand every section with full item metadata. Complete browse data identical to Spotify's genre pages✨Spotify Genres Search and Scraper 🎨",
        "version": "0.0",
        "x-build-id": "HfSoaEVUxOfFTgsuo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apiharvest~spotify-genres-search-and-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apiharvest-spotify-genres-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-genres-search-and-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apiharvest-spotify-genres-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-genres-search-and-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apiharvest-spotify-genres-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 genres/moods on Spotify. Each keyword runs as a separate search.\n\n💡 Leave empty and fill Spotify URIs below to use Get Details mode instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "spotifyUris": {
                        "title": "🔗 Spotify Genre URIs / URLs",
                        "type": "array",
                        "description": "One or more Spotify genre URIs or URLs to fetch full metadata.\nExamples: spotify:genre:ID · spotify:page:ID · https://open.spotify.com/genre/ID\n\n⚠️ Only genre/page URIs/URLs are accepted. Other types will be skipped.\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": "Residential proxy exit country. ⭐ US recommended — widest catalog.\nIf results are empty, switch to US.",
                        "default": "US"
                    },
                    "genres_search_offset": {
                        "title": "📄 Search Offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Starting position for search pagination. 0 = first page.",
                        "default": 0
                    },
                    "genres_search_limit": {
                        "title": "📊 Search Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of genre results to return per keyword.",
                        "default": 30
                    },
                    "genres_search_numberOfTopResults": {
                        "title": "🏆 Top Results Count",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Number of top-ranked items highlighted in the response.",
                        "default": 20
                    },
                    "genres_fetchDetails": {
                        "title": "🔄 Fetch Full Genre Details",
                        "type": "boolean",
                        "description": "������ Search mode only — when using Genre URIs/URLs, full details are always fetched automatically.\n\n✅ When ON — runs browsePage for every search result. You get: all genre sections with curated playlists, section titles, cover art images, and item metadata for each section.\n\n❌ When OFF — you only get basic search data: genre name, URI, and image. You will NOT get any section data, curated playlists, or browse page content.\n\n⚠️ Slower — one or more extra API calls per search result.",
                        "default": false
                    },
                    "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').\n📌 Active in Get Details mode (always) and in Search mode when Fetch Full Genre Details is ON.",
                        "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": 20
                    },
                    "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. Only relevant when Fetch Full Genre Details is also ON or in Get Details mode.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
