Spotify Podcast and Episode Search Scraper avatar

Spotify Podcast and Episode Search Scraper

Pricing

Pay per event

Go to Apify Store
Spotify Podcast and Episode Search Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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/.../podcasts and /search/.../episodes URLs.
  • 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:

  1. one input contract for podcast and episode searches;
  2. consistent fields across repeated runs;
  3. bounded pagination and deduplication;
  4. clear failures instead of silently returning an empty dataset after an upstream change;
  5. Apify scheduling, integrations, webhooks, API access, and MCP support.

Only public metadata surfaced by Spotify search is returned.

What data does it extract?

FieldMeaning
recordTypepodcast or episode
spotifyIdSpotify ID for the result
uriCanonical Spotify URI
urlCanonical public Spotify result URL
nameShow or episode title
descriptionEpisode description when surfaced
publisherPodcast publisher or creator
showNameParent show name
showIdParent Spotify show ID
showUrlParent show URL
releaseDateEpisode publication timestamp when surfaced
durationMsEpisode duration in milliseconds
durationSecondsRounded episode duration in seconds
explicitSpotify explicit-content marker when available
mediaTypesSurfaced formats such as AUDIO, VIDEO, or MIXED
imageUrlLargest artwork image surfaced in search
querySearch term that produced the row
positionPosition within the query and record type
scrapedAtCollection 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

  1. Open the Actor input page.
  2. Add one or more terms under Search queries.
  3. Choose Podcasts and episodes, Podcasts only, or Episodes only.
  4. Set Maximum results.
  5. Click Start.
  6. 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/podcasts
https://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:

  • both searches podcast shows and episodes;
  • podcasts searches shows only;
  • episodes searches 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 resultsEvents charged
201 Start + 20 Search result events
1001 Start + 100 Search result events
5001 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:

  1. create a Task with stable input;
  2. attach it to a Schedule;
  3. send completed datasets to your database or webhook;
  4. compare records by uri and runs by scrapedAt.

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 releaseDate downstream.
  • 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 ApifyClient
import os
client = 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().items
print(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.

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.