Spotify Podcast and Episode Search Scraper
Pricing
Pay per event
Spotify Podcast and Episode Search Scraper
Search public Spotify podcasts and episodes by keyword and export show, publisher, publication date, duration, artwork, and canonical link metadata.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Search Spotify's public podcast catalog by keyword and export clean podcast and episode metadata.
The Actor turns Spotify search results into structured rows for podcast research, sponsorship discovery, guest prospecting, topic analysis, and scheduled monitoring.
It does not require a Spotify login or developer API credentials.
What can Spotify Podcast and Episode Search Scraper do?
- Search podcast shows by topic or keyword.
- Search individual podcast episodes by topic or keyword.
- Return shows and episodes together in one run.
- Accept public Spotify
/search/.../podcastsand/search/.../episodesURLs. - Paginate beyond the first visible search screen.
- Deduplicate records by canonical Spotify URI.
- Stop at a user-controlled result limit.
- Export JSON, CSV, Excel, XML, RSS, or JSONL through Apify datasets.
- Run on a schedule for repeatable podcast research.
This is a search product, not a chart scraper. For ranked market and genre charts, use our related Spotify Podcast Charts Scraper.
Who is this Spotify podcast search for?
Podcast networks and publishers can discover adjacent shows and episodes around a programming theme.
Sponsorship and PR teams can build public show and publisher lists for manual qualification.
Guest researchers can identify relevant episodes, parent shows, and canonical links.
Content strategists can compare which episodes Spotify surfaces for recurring topics.
Data teams can schedule the same searches and feed normalized rows into warehouses, spreadsheets, or dashboards.
Why use this Actor?
Spotify's search interface is designed for interactive browsing rather than repeatable exports. This Actor provides:
- one input contract for podcast and episode searches;
- consistent fields across repeated runs;
- bounded pagination and deduplication;
- clear failures instead of silently returning an empty dataset after an upstream change;
- Apify scheduling, integrations, webhooks, API access, and MCP support.
Only public metadata surfaced by Spotify search is returned.
What data does it extract?
| Field | Meaning |
|---|---|
recordType | podcast or episode |
spotifyId | Spotify ID for the result |
uri | Canonical Spotify URI |
url | Canonical public Spotify result URL |
name | Show or episode title |
description | Episode description when surfaced |
publisher | Podcast publisher or creator |
showName | Parent show name |
showId | Parent Spotify show ID |
showUrl | Parent show URL |
releaseDate | Episode publication timestamp when surfaced |
durationMs | Episode duration in milliseconds |
durationSeconds | Rounded episode duration in seconds |
explicit | Spotify explicit-content marker when available |
mediaTypes | Surfaced formats such as AUDIO, VIDEO, or MIXED |
imageUrl | Largest artwork image surfaced in search |
query | Search term that produced the row |
position | Position within the query and record type |
scrapedAt | Collection timestamp |
Fields unavailable for a record type are returned as null or an empty array.
For example, podcast search rows normally do not include an episode duration.
How to search Spotify podcasts and episodes
- Open the Actor input page.
- Add one or more terms under Search queries.
- Choose Podcasts and episodes, Podcasts only, or Episodes only.
- Set Maximum results.
- Click Start.
- Open the default dataset to preview or export results.
A useful first input is:
{"queries": ["artificial intelligence"],"mode": "both","maxItems": 20}
This returns a balanced sample of public podcast shows and episodes for the topic.
Input parameters
queries
An array of non-empty search phrases.
Examples include artificial intelligence, climate change, and renewable energy.
searchUrls
Optional public Spotify search URLs. Supported forms are:
https://open.spotify.com/search/technology/podcastshttps://open.spotify.com/search/technology/episodes
The URL's final path segment controls its record type. Other Spotify pages, hosts, and paths fail input validation.
mode
Controls query inputs:
bothsearches podcast shows and episodes;podcastssearches shows only;episodessearches episodes only.
A source-specific searchUrls entry keeps the type encoded in that URL.
maxItems
The maximum number of unique rows saved across the run. Allowed values are 1–1,000. When several query/type jobs are requested, the Actor divides the available limit across them so one type does not starve the others.
Output example
A current episode result has this shape:
{"recordType": "episode","spotifyId": "0BGcaYvcDPkvBzFmkRI5uY","uri": "spotify:episode:0BGcaYvcDPkvBzFmkRI5uY","url": "https://open.spotify.com/episode/0BGcaYvcDPkvBzFmkRI5uY","name": "#494 – Jensen Huang: NVIDIA - The $4 Trillion Company & the AI Revolution","publisher": "Lex Fridman","showName": "Lex Fridman Podcast","showId": "2MAi0BvDc6GTFvKFPXnkCL","showUrl": "https://open.spotify.com/show/2MAi0BvDc6GTFvKFPXnkCL","releaseDate": "2026-03-23T16:29:00Z","durationMs": 9104576,"durationSeconds": 9105,"explicit": false,"mediaTypes": ["AUDIO", "VIDEO"],"query": "artificial intelligence","position": 1}
Long descriptions and artwork fields are omitted from this README example for readability but remain available in dataset rows.
How much does it cost to search Spotify podcasts and episodes?
Pricing uses one Start event per run plus one Search result event for every row saved. There is no separate surcharge for episode metadata.
Current BRONZE-tier prices are:
- Start: $0.00005 per run
- Search result: $0.0024 per row
Example charge calculations:
| Saved results | Events charged |
|---|---|
| 20 | 1 Start + 20 Search result events |
| 100 | 1 Start + 100 Search result events |
| 500 | 1 Start + 500 Search result events |
Your exact tier price is displayed by Apify before the run. Platform compute is included under the Actor's PPE pricing model.
Schedule recurring podcast research
Use an Apify Schedule to run the same query daily, weekly, or monthly.
Each dataset row includes query, position, and scrapedAt, making it suitable for snapshots.
For change tracking:
- create a Task with stable input;
- attach it to a Schedule;
- send completed datasets to your database or webhook;
- compare records by
uriand runs byscrapedAt.
The Actor does not maintain historical state or send alerts itself. Those workflows belong in your integration layer.
Integration ideas
- Send rows to Google Sheets for editorial research.
- Load JSONL into a warehouse for topic coverage analysis.
- Trigger a webhook when a scheduled run finishes.
- Filter episode rows by
releaseDatedownstream. - Join show IDs with separately collected public chart snapshots.
- Build a manual sponsorship qualification queue from publisher and show links.
Search position is contextual and may change between runs. Treat it as an observation, not a permanent rank.
Run with the Apify API
Replace YOUR_TOKEN with an Apify API token.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~spotify-podcast-episode-search/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"queries":["climate change"],"mode":"both","maxItems":20}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/spotify-podcast-episode-search').call({queries: ['climate change'],mode: 'both',maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/spotify-podcast-episode-search').call(run_input={'queries': ['climate change'],'mode': 'both','maxItems': 20,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with Apify MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/spotify-podcast-episode-search"
Claude Desktop, Cursor, and VS Code
Claude Desktop, Cursor, and VS Code clients can use this HTTP MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/spotify-podcast-episode-search"}}}
Example prompts:
- “Search Spotify for 20 podcasts and episodes about AI regulation.”
- “Export 50 Spotify episodes about renewable energy and summarize the publishers represented.”
- “Run my saved Spotify podcast research Task and return the dataset URL.”
Reliability and retries
Spotify search requires a short anonymous browser session bootstrap. After bootstrap, bounded pagination requests use the same coherent session.
The Actor retries temporary HTTP 429 and server errors with backoff. It does not blindly retry malformed inputs, non-Spotify URLs, invalid response formats, or GraphQL errors.
If Spotify changes its search operation, the run fails with a diagnostic message rather than succeeding with misleading empty output. Retry once later for a temporary upstream issue; inspect the run log if the error persists.
Limits and data freshness
- Results reflect Spotify search at run time.
- Spotify decides catalog availability, ordering, locale behavior, and metadata completeness.
- Search may surface fewer records than requested.
- A result description can be long and may contain links supplied by its publisher.
- The Actor does not download audio, video, transcripts, or private listener data.
- The Actor does not guarantee exhaustive coverage of Spotify's catalog.
- Maximum output is 1,000 unique rows per run.
- Direct show and episode detail URLs are not inputs; use search terms or supported search URLs.
Responsible use and legality
This Actor accesses public metadata surfaced by Spotify search. You are responsible for complying with Spotify's terms, Apify's terms, and applicable laws.
Do not use exported contact or publisher information for unlawful spam, harassment, discrimination, or privacy-invasive profiling. Respect intellectual property in episode names, descriptions, and artwork. Store only the data you need and apply appropriate retention and access controls.
This documentation is not legal advice.
Troubleshooting
Why did the run return fewer rows than maxItems?
Spotify may expose fewer records for a narrow query, or duplicate records may appear across searches and be removed by URI. Try a broader phrase or additional distinct queries.
Why is a field null?
Spotify returns different fields for shows and episodes. For example, show search rows normally have no episode release date or duration.
Why was my Spotify URL rejected?
Only public search URLs ending in /podcasts or /episodes are accepted.
Use a keyword in queries for all other search jobs.
Should I enable a proxy?
No proxy option is exposed. The current direct anonymous browser route is the tested path and avoids unnecessary proxy cost.
Can I scrape an entire show's episode archive?
Not with this Actor. It searches episodes by keyword rather than crawling every episode from a known show.
Related Automation Lab Actors
- Spotify Podcast Charts Scraper exports ranked podcasts by market and genre.
- Spotify Songs Scraper extracts public metadata from known Spotify music URLs.
Use this Actor when the starting point is a podcast or episode keyword. Use the charts Actor when the starting point is a country, chart, or genre ranking.
FAQ
Does it need Spotify credentials?
No. It uses the anonymous public web search session created for the run.
Can it return podcasts and episodes together?
Yes.
Set mode to both.
Are duplicates removed?
Yes. The Actor deduplicates by canonical Spotify URI across all jobs in a run.
Can I export CSV or Excel?
Yes. Use the dataset export controls or Apify dataset API.
Does it track changes automatically?
No. Run a saved Task on a Schedule and compare datasets in your destination system.
Does it download media?
No. It exports public metadata and links only.