Songsterr scraper avatar

Songsterr scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Songsterr scraper

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

Scrape Scape

Maintained by Community

Actor 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 / fileTypeDescription
title, artist, songId, urltextSong identity and Songsterr link
tracksarrayEvery track: name, instrument, tuning, difficulty, views
tags, views, favoritesCountarray / numberGenre tags and popularity
generatedGpUrl → generated.gp5fileGuitar Pro 5 file built from the current tab
originalGpUrl → source.gpfileGuitar Pro file originally uploaded to Songsterr
<partId>.jsonfileRaw track data: measures, beats, notes, effects, tempo
meta.jsonfileFull Songsterr metadata for the song
lyricsUrl → lyrics.txt / lyrics.jsonfileLyrics
chordsUrl → chords.chordprofileChord sheet
bundleUrl → bundle.zipfileEverything for the song in one ZIP
dadagp.txtfileDadaGP tokens (optional)
revisions.jsonfileFull revision history (optional)

How to scrape Songsterr tabs

  1. Open the Actor's Input tab.
  2. Add what you want to scrape: Songsterr URLs, search queries such as Metallica - One, artist names, or song IDs. You can mix them.
  3. Optionally limit songs per artist, or pick instruments (guitar, bass, drums, vocals).
  4. Click Start.
  5. 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 .gp only 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: check originalGp.isCurrentRevision. generated.gp5 always 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 use generated.gp5 with 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

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, or newLyrics in 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 pytest
apify 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).