Spotify Songs Scraper
Pricing
from $1.75 / 1,000 tracks
Spotify Songs Scraper
Search public Spotify tracks with one or more keywords and choose the number of tracks per keyword. Get structured rows with track, artist, album, cover art, duration, explicit status, playability, availability, and Spotify links.
Pricing
from $1.75 / 1,000 tracks
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
🎵 Find public Spotify tracks by keyword
For music researchers, playlist planners, and developers, this Actor searches public Spotify tracks from one or more keywords and saves structured track rows. You get track and artist details, album context, cover art, duration, explicit status, playability, availability, and Spotify links in one dataset.
- Search a broad music phrase with Spotify Songs Scraper and save matching track rows.
- Run Spotify Music Search for a music phrase and collect Spotify track details.
- Use Spotify Track Search to find tracks for a specific song or style.
- Try Spotify Song Search when you need song titles, artists, and album context.
- Use Spotify Songs to build a structured track list from a keyword.
🎧 Spotify track rows
Each saved row keeps the submitted keyword with the track it found. Track identity, artist profiles, album details, cover-art links, duration, explicit status, and availability stay together for later review or data work.
▶️ Search public Spotify tracks
Add one or more keywords and start a run. Each keyword is searched separately. Set maxResultsPerKeyword to stop each search after a chosen number. Leave it empty to return all available results until the source is exhausted. When the same source track matches more than one keyword, the first eligible match is saved and later matches are ignored. Open the default dataset to read the rows or use its API link.
⚙️ Input
Input fields
keywords is required. maxResultsPerKeyword is optional.
| Field | Type | What it does |
|---|---|---|
keywords | array of strings | Adds one or more words or phrases for separate Spotify track searches. |
maxResultsPerKeyword | integer | Limits saved tracks for each keyword. Leave it empty to return all available results until the source is exhausted. |
Example input
This example uses the public input from a successful current-beta run.
{"keywords": ["jazz piano"]}
🧾 Output
Run output
| Field | Type | What it does |
|---|---|---|
tracks | string link | Opens the returned track rows in the default dataset. |
The default dataset uses one row shape for saved tracks. The dotted paths below show nested fields.
Dataset row fields
| Field | Type | What it does |
|---|---|---|
keyword | string | Shows the keyword linked to the saved track. |
track | object | Holds the track title, stable identity, and public links. |
track.id | string | Shows the stable Spotify track ID. |
track.title | string | Shows the track title. |
track.spotifyUrl | URL string | Links to the canonical Spotify track page. |
track.webUrl | URL string | Links to the public web page for the track. |
artists | array of objects | Lists the artists linked to the track. |
artists[].id | string | Shows the stable Spotify artist ID. |
artists[].name | string | Shows the artist name. |
artists[].spotifyUrl | URL string | Links to the canonical Spotify artist profile. |
artists[].webUrl | URL string | Links to the public web page for the artist. |
artists[].isVerified | boolean | Shows the public artist verification flag when available. |
album | object | Holds album identity, name, and release date when available. |
album.id | string | Shows the stable Spotify album ID. |
album.name | string | Shows the album name. |
album.releaseDate | string | Shows the public album release date when available. |
coverArt | array of objects | Lists album cover image links and available sizes. |
coverArt[].url | URL string | Links to one album cover image. |
coverArt[].width | integer | Shows the image width in pixels when available. |
coverArt[].height | integer | Shows the image height in pixels when available. |
durationMs | integer | Shows the track duration in milliseconds. |
isExplicit | boolean | Shows whether the track is marked as explicit. |
availability | object | Holds playability and source availability flags. |
availability.isPlayable | boolean | Shows whether Spotify reports that the track can be played. |
availability.isAvailable | boolean | Shows whether the track is available from the source. |
Genuine current-beta row
This is a full row from the successful current-beta run that used the example input above.
{"keyword": "jazz piano","track": {"id": "1YQWosTIljIvxAgHWTp7KP","title": "Take Five","spotifyUrl": "https://open.spotify.com/track/1YQWosTIljIvxAgHWTp7KP","webUrl": "https://open.spotify.com/track/1YQWosTIljIvxAgHWTp7KP"},"artists": [{"id": "4iRZAbYvBqnxrbs6K25aJ7","name": "The Dave Brubeck Quartet","spotifyUrl": "https://open.spotify.com/artist/4iRZAbYvBqnxrbs6K25aJ7","webUrl": "https://open.spotify.com/artist/4iRZAbYvBqnxrbs6K25aJ7"}],"album": {"id": "0nTTEAhCZsbbeplyDMIFuA","name": "Time Out","releaseDate": "1959-12-14T00:00:00Z"},"coverArt": [{"url": "https://image-cdn-fa.spotifycdn.com/image/ab67616d00001e02b6bd44cf06bf8f4d5ce1e080","width": 300,"height": 300},{"url": "https://image-cdn-fa.spotifycdn.com/image/ab67616d00004851b6bd44cf06bf8f4d5ce1e080","width": 64,"height": 64},{"url": "https://image-cdn-fa.spotifycdn.com/image/ab67616d0000b273b6bd44cf06bf8f4d5ce1e080","width": 640,"height": 640}],"durationMs": 328831,"isExplicit": false,"availability": {"isPlayable": true,"isAvailable": true}}
💳 Pricing
This Actor uses pay-per-event pricing. A track event covers each track saved to the default dataset. Check the Apify pricing panel for the current tier price.
🔌 Integrations
Read the returned rows in the Apify dataset or through its API link. You can export the structured dataset in the formats offered by Apify.
❓ FAQ
What happens when the same track matches more than one keyword?
The Actor saves the first eligible match and ignores later matches for the same source track. The saved row keeps the keyword linked to that first match.
What does leaving Results per keyword empty do?
It returns all available results until the source is exhausted. Set a positive number when you want each keyword search to stop earlier.
Can I submit more than one keyword?
Yes. Add several values to keywords. Each value is searched separately, and each saved row shows the keyword linked to it.
Which fields are in a track row?
Rows include track IDs and links, artist IDs and profiles, album details, cover-art links, duration, explicit status, playability, and availability.
Does this Actor search playlists or albums?
Tracks are the primary search target. Album and artist data is context for each track, so this Actor does not search playlists, albums, artists, or user profiles as primary targets.
Can I download audio or create playlists?
No. The Actor returns public track data and links. It does not download audio, create or edit playlists, or provide lyrics or audio analysis.
Can I use the returned data through an API?
Yes. The returned track data is available in a structured Apify dataset for download and API use.
📝 Changelog
0.0: Initial release
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Spotify Downloader - Download metadata and media links for a track media workflow.
- YouTube Music Scraper - Search another public music source for songs, albums, artists, and playlists.
- SoundCloud Scraper - Collect public tracks and related SoundCloud data for cross-source research.
- Billboard - Compare song or album entries with current or historical chart ranks.
- YouTube Music Downloader - Save audio from direct public YouTube Music or YouTube links.
Made with ❤️ by Maxime Dupré