MusicBrainz Scraper · Artists, Releases, Labels & Recordings
Pricing
from $1.30 / 1,000 record returneds
MusicBrainz Scraper · Artists, Releases, Labels & Recordings
Extract comprehensive MusicBrainz data for artists, releases, labels, and recordings. Get structured MBID identifiers, release dates, genres, countries, and barcodes without browser automation.
Pricing
from $1.30 / 1,000 record returneds
Rating
0.0
(0)
Developer
Tarek Etman
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share

MusicBrainz Scraper · Artists, Releases, Labels & Recordings
The MusicBrainz scraper extracts comprehensive, structured music database records directly from the official MusicBrainz REST API (https://musicbrainz.org/ws/2/). Query artists, releases, record labels, and sound recordings with custom Lucene search queries, genre tags, ISO country codes, and release decades. Every row includes standard addressable entity slugs (slug), canonical MusicBrainz UUIDs (mbid), credit information, track counts, release dates, and barcodes.
Maintained by reapX. Every row cites the Apify run that produced it — nothing is inferred, modelled or filled in, and a field absent from the source is absent from the row. The extracted archive for this source is browsable at reapx.dev/data/musicbrainz-scraper/ and mirrored as an open dataset on Hugging Face and Kaggle. Questions: reapxdev@proton.me
Features
- Multi-Entity Extraction: Retrieve structured data for Artists, Releases, Labels, and Recordings.
- Addressable Entity Key: Emits a normalized
slug(e.g.the-beatles,pink-floyd,abbey-road) for direct entity page routing and indexing across knowledge graphs. - Canonical MBIDs: Preserves exact 36-character MusicBrainz UUID identifiers in the
mbidfield. - Rich Lucene Search Support: Combine free-text queries, genre tags (
tag:rock), country codes (country:GB), and decade ranges (date:[1970 TO 1979]). - Compliant Rate Limiting: Built-in 1 request per second throttling with automatic exponential backoff on HTTP 429 and 503 status codes.
- No Headless Browser Overhead: Uses direct HTTP API calls for maximum efficiency and speed.
- Pay-Per-Event Pricing: Billed strictly per valid record returned; rate-limited, empty, or failed requests cost $0.
⬇️ Input
Configure the MusicBrainz Scraper using the input parameters below.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
entityType | string | Yes | "artist" | Select MusicBrainz entity category: artist, release, label, or recording. | "artist" |
query | string | No | "tag:rock AND country:GB" | Free-text keyword query or custom Lucene search string. | "artist:Pink Floyd" |
genre | string | No | "" | Musical genre or community style tag filter. | "jazz" |
country | string | No | "" | 2-letter ISO 3166-1 alpha-2 country code. | "GB" |
decade | string | No | "" | Release or activity decade filter (e.g. 1970s, 1980s). | "1970s" |
maxResults | integer | Yes | 50 | Maximum number of entity records to extract and push. | 50 |
Input Example
{"entityType": "release","query": "tag:jazz AND country:US","genre": "jazz","country": "US","decade": "1960s","maxResults": 50}
⬆️ Output
The scraper writes extracted records directly to the run's default dataset. Each row corresponds to a single MusicBrainz entity.
Output Dataset Fields
| Field Name | Type | Description | Example |
|---|---|---|---|
slug | string | Normalized URL-friendly slug derived from entity name or title. | "the-beatles" |
mbid | string | Canonical 36-character MusicBrainz UUID identifier. | "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d" |
name | string | Human-readable name of the artist, release, label, or recording. | "The Beatles" |
entityType | string | Category of entity (artist, release, label, recording). | "artist" |
type | string | Subtype classification (e.g. Group, Person, Album, Single). | "Group" |
country | string | ISO 3166-1 alpha-2 country code of origin. | "GB" |
area | string | Associated geographic area or region name. | "United Kingdom" |
disambiguation | string | MusicBrainz comment distinguishing identical entity names. | "UK rock band" |
date | string | Primary release date or activity start date. | "1969-09-26" |
lifeSpanStart | string | Formation or birth date. | "1960" |
lifeSpanEnd | string | Dissolution or death date. | "1970" |
tags | string | Comma-separated genre and style tags. | "rock, pop, classic rock" |
score | integer | Search relevance score (0–100). | 100 |
barcode | string | Commercial EAN/UPC barcode (releases). | "077774644624" |
artistCredit | string | Credited artists or collaborators. | "The Beatles" |
label | string | Associated record label name(s). | "Apple Records" |
format | string | Physical or digital format (e.g. Vinyl, CD). | "Vinyl" |
trackCount | integer | Total number of tracks on release. | 17 |
length | integer | Duration in milliseconds (recordings). | 260000 |
url | string | Canonical MusicBrainz entity webpage URL. | "https://musicbrainz.org/artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d" |
Sample Output Record
{"slug": "pink-floyd","mbid": "83d91898-7763-47d7-b03b-b92132375c47","name": "Pink Floyd","entityType": "artist","type": "Group","country": "GB","area": "United Kingdom","disambiguation": "UK progressive rock band","date": "1965","lifeSpanStart": "1965","lifeSpanEnd": "2014","tags": "progressive rock, psychedelic rock, art rock","score": 100,"barcode": "","artistCredit": "","label": "","format": "","trackCount": 0,"length": 0,"url": "https://musicbrainz.org/artist/83d91898-7763-47d7-b03b-b92132375c47"}
How it works
- HTTP Query Execution: Sends direct GET requests to
https://musicbrainz.org/ws/2/{entity}without launching headless browser instances. - Lucene Search Integration: Translates input parameters (keywords, genre, country, decade) into standard MusicBrainz Lucene query syntax.
- Rate Limiting & Resiliency: Enforces a strict 1 request/second rule with
User-Agent: reapx/1.0 ( reapxdev@proton.me )and exponential backoff retry on HTTP 429 or 503 responses. - Key Normalization: Automatically transforms entity names into clean, lowercased ASCII slugs (
slug), while preserving exact MusicBrainz UUIDs (mbid). - Streaming Output: Emits items row-by-row into the default dataset as they are fetched.
❓ FAQ
How are MusicBrainz rate limits handled?
MusicBrainz requires clients to limit requests to 1 per second and present a descriptive User-Agent header. This scraper enforces rate limits natively and retries transparently if temporary rate limit errors (HTTP 429/503) occur.
Can I search using complex Lucene queries?
Yes. You can supply full Lucene query strings in the query field, such as artist:"Miles Davis" AND type:Album AND date:[1950 TO 1960].
What is the slug field used for?
The slug field provides a clean, predictable URL identifier (e.g. pink-floyd) suitable for entity page routing, knowledge graph cross-linking, and dataset deduplication.
How does pricing work?
This actor runs under Pay-Per-Event pricing. You are charged a flat micro-fee per valid entity record returned. Searches yielding zero results or failing due to rate limits cost nothing.
💬 Your feedback
Have feature requests, questions, or bug reports? Reach out directly to reapx:
- Email: reapxdev@proton.me
- Data Hub: reapx.dev/data/musicbrainz-scraper/
Disclaimer: Unofficial - not affiliated with MusicBrainz / MetaBrainz Foundation. Collects public data only. reapx. Contact reapxdev@proton.me.
🧪 Example input
A real, runnable configuration — this is an actual input this Actor has run with.
{"entityType": "artist","query": "tag:rock AND country:US","genre": "rock","country": "US","decade": "1960s","maxResults": 50}
📄 Sample output
One real row from a real run of this Actor, unedited.
{"slug": "the-beatles","mbid": "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d","name": "The Beatles","entityType": "artist","type": "Group","country": "GB","area": "United Kingdom","disambiguation": "UK rock band, “The Fab Four”","date": "1960-03-27","lifeSpanStart": "1960-03-27","lifeSpanEnd": "1970-04-10","tags": "rock, pop, progressive rock, 80s, heavy metal, pop-rock, orchestral, experimental, british, uk, 60s, hard rock, indie rock, folk rock, psychedelic rock, psychedelic, blues rock, britpop, art rock, folk-rock, baroque pop, classic rock, 1960s, psychedelic pop, experimental rock, pop rock, europop, british invasion, rock and roll, rock roll, beat, english, sunshine pop, folk pop, rock music, liverpool, parlophone, united kingdom, hair metal, europe, 1, bbc, film soundtrack, classic pop and rock, singer songwriter, classical pop, instrumental pop, merseybeat, adult alternative pop rock, tribute albums, british psychedelia, orchestral pop, pop-metal, psychedelia, male vocalists, the-beatles, mainstream rock, boys band, abbey road, rock & roll, pop/rock, rhythm & blues, overrated, psychedelic/garage, art pop, one beatles, n., popular music, a filk artist, british rhythm & blues, beat music, get back, favoritos, the beatles - primal colours, reino unido, rock groups, vyrzukhisuc-artiest","score": 100,"barcode": "","artistCredit": "","label": "","format": "","trackCount": 0,"length": 0,"url": "https://musicbrainz.org/artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d"}
⚠️ Run outcomes and error handling
This Actor reports what happened in the run's status message, and it always keeps whatever it collected. These are the outcomes you can get and what each one means.
| Outcome | What it means |
|---|---|
| Success | Rows were returned and you were charged record-returned at $0.002 per row. |
| No matches | The source returned nothing for your filters. Nothing is charged. Widen the date window or drop a filter. |
What is guaranteed either way
- Every row is pushed as it is built, not buffered to the end of the run. Anything that buffers output loses everything to a timeout, a block or a migration; this does not.
- A field absent from the source is absent from the row. Nothing is inferred, modelled or filled in to make a row look complete.