Spotify Songs Scraper
Pricing
Pay per event
Spotify Songs Scraper
Extract public Spotify track, album, artist and playlist metadata from open.spotify.com URLs for music research, catalog QA and playlist monitoring.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Export public Spotify song, album, artist and playlist metadata from open.spotify.com pages.
Use this actor to collect Spotify catalog metadata, preview links, release dates, artist URLs, album URLs, playlist positions and public counts for music marketing, catalog QA and playlist research workflows.
What does Spotify Songs Scraper do?
Spotify Songs Scraper reads public Spotify web pages and turns their metadata into a clean Apify dataset.
It supports:
- π΅ Track pages
- πΏ Album pages
- π€ Artist pages
- π Playlist pages
- π Track links exposed by album and playlist pages
The actor uses the public HTML metadata Spotify exposes to browsers. It does not require a Spotify login, cookies or API credentials.
Who is it for?
Music teams use this actor when they need structured Spotify metadata without manual copy-paste.
Common users include:
- π§ Music marketers checking playlist placements
- π·οΈ Record labels validating release pages
- π Playlist analysts monitoring public playlist structure
- π§Ύ Catalog operations teams checking song metadata
- π Research teams building market/category datasets
- π€ Automation builders enriching music databases
Why use this Spotify extractor?
Spotify pages are useful, but manual collection is slow and inconsistent.
This actor helps you:
- Export many Spotify URLs in one run
- Normalize track, album, artist and playlist metadata
- Preserve source URLs for auditability
- Follow public playlist/album track links
- Capture preview audio and image URLs when exposed
- Build repeatable monitoring jobs on Apify
What Spotify data can you extract?
The output depends on what Spotify exposes on each public page.
Typical track data:
- Song name
- Spotify track URL
- Spotify ID
- Artist name and artist URL
- Album URL
- Release date
- Duration in seconds
- Preview audio URL when available
- Cover image URL
- Track number
Typical album data:
- Album name
- Album URL
- Release date
- Artist URL when exposed
- Cover image
- Public track links
- Disc and track positions
Typical playlist data:
- Playlist name
- Playlist URL
- Description
- Item count
- Saves count when exposed
- Image URL
- Linked track URLs
- Playlist positions
- Allowed-country count when exposed
Typical artist data:
- Artist name
- Artist URL
- Description
- Monthly listener count when exposed
- Image URL
Data table
| Field | Description |
|---|---|
sourceUrl | Original URL submitted or parent URL for expanded tracks |
url | Spotify URL for the saved record |
spotifyId | ID parsed from the Spotify URL |
pageType | track, album, artist, playlist, user or unknown |
resultType | page for source pages or track for song records |
name | Song, album, artist or playlist name |
description | Public Spotify description/snippet |
artistName | Artist name where exposed |
artistUrl | Spotify artist URL where exposed |
albumUrl | Spotify album URL where exposed |
releaseDate | Release date where exposed |
durationSeconds | Track duration in seconds |
previewUrl | Public preview audio URL when exposed |
imageUrl | Cover/profile/playlist image URL |
trackNumber | Album track number where exposed |
discNumber | Album disc number where exposed |
itemCount | Playlist item count where parsed |
monthlyListeners | Artist monthly listener count where parsed |
savesCount | Playlist save count where parsed |
allowedCountriesCount | Count of allowed country tags for playlist pages |
parentUrl | Album or playlist URL for expanded track records |
parentName | Album or playlist name for expanded track records |
position | Track position in the parent page |
scrapedAt | ISO timestamp when the record was saved |
How much does it cost to scrape Spotify songs?
This actor uses pay-per-event pricing.
You pay a $0.005 start fee plus one item event for each saved Spotify metadata record.
| Plan tier | Price per saved record |
|---|---|
| Free | $0.00052489 |
| Bronze | $0.00045643 |
| Silver | $0.00035601 |
| Gold | $0.00027386 |
| Platinum | $0.00018257 |
| Diamond | $0.00012780 |
Example: 1,000 saved Spotify records cost about $0.53 on Free tier before the start fee, and about $0.46 on Bronze tier before the start fee.
Tips to control cost:
- Start with a small
maxItemsvalue - Test one playlist or album before large batches
- Disable linked track expansion if you only need page-level metadata
- Use the Apify scheduler for predictable recurring monitoring
How to scrape Spotify songs
- Open the actor on Apify.
- Paste Spotify track, album, artist or playlist URLs into
Spotify URLs. - Choose a
Maximum recordslimit. - Keep
Expand albums and playlists into tracksenabled if you want song rows. - Run the actor.
- Export the dataset as JSON, CSV, Excel, XML or via API.
Input example
{"startUrls": [{ "url": "https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT" },{ "url": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M" }],"maxItems": 100,"includeLinkedTracks": true,"requestDelayMs": 100}
Output example
{"sourceUrl": "https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT","url": "https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT","spotifyId": "4cOdK2wGLETKBW3PvgPWqT","pageType": "track","resultType": "track","name": "Never Gonna Give You Up","artistName": "Rick Astley","artistUrl": "https://open.spotify.com/artist/0gxyHStUsqpMadRV0Di1Qt","albumUrl": "https://open.spotify.com/album/5Z9iiGl2FcIfa3BMiv6OIw","releaseDate": "1987-11-12","durationSeconds": 214,"previewUrl": "https://p.scdn.co/mp3-preview/...","imageUrl": "https://i.scdn.co/image/...","scrapedAt": "2026-07-09T00:00:00.000Z"}
Tips for best results
- Use public
open.spotify.comURLs. - Prefer playlist or album URLs when you want many song records.
- Keep
maxItemshigh enough for expanded tracks. - Use a delay for large batches.
- Store the dataset ID if you need reproducible exports.
Integrations
You can connect the dataset to:
- Google Sheets for playlist reports
- Airtable for catalog review
- BigQuery or Snowflake for music analytics
- Zapier or Make for notifications
- Apify webhooks for recurring monitors
- Internal enrichment pipelines through the Apify API
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/spotify-songs-scraper').call({startUrls: [{ url: 'https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M' }],maxItems: 100,includeLinkedTracks: true});console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/spotify-songs-scraper').call(run_input={'startUrls': [{'url': 'https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT'}],'maxItems': 25,})print(run['defaultDatasetId'])
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~spotify-songs-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M"}],"maxItems":100}'
MCP usage
Use the Apify MCP server with Claude Code or Claude Desktop to run this actor from natural language prompts.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/spotify-songs-scraper
Claude Code setup:
$claude mcp add apify-spotify-songs https://mcp.apify.com/?tools=automation-lab/spotify-songs-scraper
Claude Desktop JSON config:
{"mcpServers": {"apify-spotify-songs": {"url": "https://mcp.apify.com/?tools=automation-lab/spotify-songs-scraper"}}}
Example prompts:
- "Run Spotify Songs Scraper for this playlist and summarize the first 50 tracks."
- "Extract metadata from these Spotify album URLs and return a CSV."
- "Monitor this playlist weekly and tell me when the first 10 songs change."
Scheduling and monitoring
For recurring workflows:
- Create a task with your Spotify URLs.
- Add a schedule in Apify.
- Export each run dataset or connect a webhook.
- Compare new datasets against previous runs.
This is useful for playlist placement monitoring and catalog checks.
Limitations
Spotify decides which metadata is present in public HTML.
Some fields may be missing for certain regions, pages or entities. The actor does not bypass login-only content, private playlists, Spotify API restrictions or Premium-only features.
Legality
This actor extracts publicly available metadata from public Spotify web pages. You are responsible for using the data legally and respecting Spotify's terms, copyright rules, privacy requirements and local regulations.
FAQ
Does it need a Spotify account?
No. The actor targets public open.spotify.com metadata that is visible without login.
Can it scrape private playlists?
No. Private or login-only data is outside the actor scope.
Why are some fields null?
Spotify does not expose every field on every page. The actor leaves unavailable values as null instead of guessing.
Can it extract lyrics?
No. Spotify lyrics are not part of the public metadata used by this actor.
Can it get ISRC or popularity scores?
Only if Spotify exposes them in the public page metadata. The current HTTP extraction does not rely on private APIs.
Related scrapers
Explore other automation-lab actors on Apify:
- https://apify.com/automation-lab
- https://apify.com/automation-lab/soundcloud-scraper
- https://apify.com/automation-lab/apple-music-scraper
- https://apify.com/automation-lab/youtube-scraper
Support
If a public Spotify URL returns no metadata, include the run ID and URL when reporting the issue. That lets us compare the page response and update the extractor if Spotify changes its markup.