Songsterr scraper
Pricing
from $5.00 / 1,000 results
Songsterr scraper
Download Songsterr tabs as Guitar Pro (GP5) files, track JSON, lyrics and chords. Scrape a single song or a full artist catalog.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Scrape Scape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
What does Songsterr Tabs Scraper do?
Songsterr Tabs Scraper downloads guitar, bass and drum tabs from Songsterr for one song or an artist's whole catalog. Point it at a Songsterr URL, a song ID, a search like "Metallica - One", or an artist name. It saves the full tab data, including Guitar Pro files, track JSON, lyrics and chords. Songsterr has no official API, so this Actor works as a Songsterr API alternative.
It doesn't log in and doesn't download Songsterr Plus features such as audio.
Why use Songsterr Tabs Scraper?
- 🎸 Get Guitar Pro files for any tab, including tabs that only exist in Songsterr's web editor. A Guitar Pro 5 file is built from the current tab.
- 📚 Scrape whole catalogs. Give an artist name and get every song, most popular first.
- 🔎 Search by name. "One by Metallica" finds Metallica's own tab, not covers with the same title.
- 🤖 Build machine-learning datasets. Optional DadaGP token export, plus raw note-level JSON.
- 🧾 Lyrics and chords in plain text and ChordPro format.
The Apify platform adds scheduling, API access, integrations (Make, Zapier, Google Drive, webhooks), proxy rotation and run monitoring.
What data can Songsterr Tabs Scraper extract?
Each song becomes one dataset item. Its files go to the key-value store as song-<songId>-<file>.
| Field / file | Type | Description |
|---|---|---|
title, artist, songId, url | text | Song identity and Songsterr link |
tracks | array | Every track: name, instrument, tuning, difficulty, views |
tags, views, favoritesCount | array / number | Genre tags and popularity |
generatedGpUrl → generated.gp5 | file | Guitar Pro 5 file built from the current tab |
originalGpUrl → source.gp | file | Guitar Pro file originally uploaded to Songsterr |
<partId>.json | file | Raw track data: measures, beats, notes, effects, tempo |
meta.json | file | Full Songsterr metadata for the song |
lyricsUrl → lyrics.txt / lyrics.json | file | Lyrics |
chordsUrl → chords.chordpro | file | Chord sheet |
bundleUrl → bundle.zip | file | Everything for the song in one ZIP |
dadagp.txt | file | DadaGP tokens (optional) |
revisions.json | file | Full revision history (optional) |
How to scrape Songsterr tabs
- Open the Actor's Input tab.
- Add what you want to scrape: Songsterr URLs, search queries such as
Metallica - One, artist names, or song IDs. You can mix them. - Optionally limit songs per artist, or pick instruments (guitar, bass, drums, vocals).
- Click Start.
- When the run finishes, open the Output tab. Download the dataset, or click the ZIP / Guitar Pro links for each song.
How much will it cost to scrape Songsterr?
The Actor uses plain HTTP requests (no browser), so it is light on compute units. You pay only Apify platform usage. A typical song with 10 or more tracks takes a few seconds. Large artist catalogs (hundreds or thousands of songs) cost proportionally more. Run a small test with Max songs in total first to see the cost for your use case. The Apify free plan covers small runs.
Input
See the Input tab for every option. Examples:
{ "startUrls": [{ "url": "https://www.songsterr.com/a/wsa/led-zeppelin-stairway-to-heaven-tab-s27" }] }
{ "searchQueries": ["Metallica - One", "smells like teen spirit"] }
{ "artists": ["Led Zeppelin"], "maxSongsPerArtist": 50, "trackInstruments": ["guitar", "bass"] }
- Search mode: by default only the best match per query is scraped. "All results" scrapes up to Max results per query.
- Artist URLs (
...-tabs-a20) in Songsterr URLs scrape the whole catalog, like the Artists field. - Songs are scraped once, even when several inputs point to the same song.
Output
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Example item (shortened):
{"songId": 27,"artist": "Led Zeppelin","title": "Stairway to Heaven","url": "https://www.songsterr.com/a/wsa/led-zeppelin-stairway-to-heaven-tab-s27","revisionId": 9538267,"trackCount": 13,"tracks": [{ "partId": 1, "name": "Jimmy Page | Harmony Sovereign | Acoustic Guitar", "instrument": "Acoustic Guitar (steel)", "category": "guitar", "tuning": [64, 59, 55, 50, 45, 40], "difficulty": 3 }],"lyricsSource": "track newLyrics","originalGp": { "revisionId": 2579237, "isCurrentRevision": false, "format": "Guitar Pro 7+", "file": "source.gp" },"generatedGp": { "built": true, "file": "generated.gp5" },"bundleUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/song-27-bundle.zip","generatedGpUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/song-27-generated.gp5","errors": []}
A song that can't be scraped (for example, a wrong ID) still gets an item, with an error field, so you can see what failed.
Tips and advanced options
- Save compute units. Turn off Save track JSON files and ZIP per song if you only need Guitar Pro files, or turn off Build a Guitar Pro 5 file if you only need the raw data.
- Original vs. generated Guitar Pro file. Songsterr keeps an uploaded
.gponly for revisions imported from Guitar Pro. If the current revision has none, the Actor takes the newest older imported revision. That tab can be outdated: checkoriginalGp.isCurrentRevision.generated.gp5always reflects the current tab. It matched the originals on 99%+ of measures in our checks; GP5 can't store double-dotted notes, so they become a dotted note plus a tied note. - GP7 files. Most uploads are Guitar Pro 7 (
.gp). Tools based on PyGuitarPro read only GP3 to GP5, so usegenerated.gp5with them. - DadaGP. DadaGP allows at most 3 distorted guitars, 2 clean guitars, 1 bass and drums. The Actor keeps the most-viewed tracks that fit and lists the rest in
dadagp.skippedTracks. - Blocked requests. Songsterr normally works without a proxy. If you see repeated errors, enable a proxy under Advanced.
FAQ, disclaimers, and support
Is it legal to scrape Songsterr?
Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
Tabs are transcriptions of copyrighted music. Respect Songsterr's terms of service and the rights holders when you use the data.
Why does a song have no original Guitar Pro file?
The song was written in Songsterr's editor and never imported from Guitar Pro. Use generated.gp5.
Why are there no lyrics?
Many tabs have no vocal track with lyrics. lyricsSource is null for those songs.
Can I use it from code?
Yes. See the API tab for HTTP, Python and JavaScript examples.
Something is wrong or missing
Please open an issue in the Issues tab with the song URL and run ID.
For developers
How it works: the Actor uses the same public endpoints as songsterr.com's frontend.
- Search:
/api/search?pattern= - Artist catalogs:
/api/artist/{id}/search, paged by 50 - Metadata:
/api/meta/{songId}, falling back to the song page's<script id="state">JSON - Track JSON: the CloudFront host from the page's
<link rel="dns-prefetch">, at/<songId>/<revisionId>/<image>/<partId>.json - Lyrics:
.../lyrics.json, ornewLyricsin the vocal tracks - Original Guitar Pro upload:
/api/revision/{id}→source - Chords:
/api/chords/{songId}→ ChordPro CDN
Run it locally:
python -m venv .venv && .venv/bin/pip install -r requirements.txt pytestapify run # input: storage/key_value_stores/default/INPUT.json.venv/bin/python -m src.cli "Metallica - One" --dadagp # standalone, writes data/raw/<songId>/.venv/bin/python -m pytest # offline tests
The DadaGP encoder in src/dadagp/ is adapted from dada-bots/dadaGP (MIT, © 2020 Dadabots).