MusicBrainz Scraper — Artists, Releases & Recordings
Pricing
from $1.50 / 1,000 results
MusicBrainz Scraper — Artists, Releases & Recordings
Scrape MusicBrainz by artist, release, recording, or label. Extract id, name, type, country, tags, score, life-span, and area. No API key, no login. Bulk pagination up to thousands of results.
MusicBrainz Scraper — Artists, Releases, Recordings & Labels
Extract open music metadata from MusicBrainz with no API key required — search artists, releases, recordings, and labels at scale, with full pagination and structured output.
What does MusicBrainz Scraper do?
MusicBrainz Scraper connects directly to the official MusicBrainz JSON Web Service (https://musicbrainz.org/ws/2/) — a fully open, key-free music metadata API. You choose a mode (artist, release, recording, or label), provide a search query, and the actor paginates through results in batches of up to 100, respecting MusicBrainz's ~1 req/sec rate limit. Each result is normalized into a clean flat object: ID, name/title, type, country, area, begin/end dates, disambiguation, relevance score, and tags. The actor handles transient errors with automatic retries and exponential back-off. A single run can retrieve hundreds to thousands of entries — ideal for bulk music research, catalog enrichment, or analytics pipelines. No credentials, no login, no browser — pure API.
Who is it for?
- Music researchers and academics who need structured discography or artist data in bulk for analysis.
- Music streaming and playlist apps that need to enrich track or artist metadata from a trusted open registry.
- Data journalists covering music industry trends, genre evolution, or country-level artist distributions.
- Record label teams auditing catalog coverage and cross-referencing MusicBrainz IDs with internal databases.
- Developers and data engineers building music knowledge graphs, recommendation systems, or tagging pipelines.
Use cases
- Build a complete discography database for a genre by searching releases with genre-tagged queries.
- Cross-reference your internal artist catalog with MusicBrainz IDs for deduplication and canonical linking.
- Extract all labels registered to a specific country for market research or licensing analysis.
- Collect artist life-span and area data to map music scenes geographically over time.
- Automate metadata enrichment for a music library by searching recordings and pulling canonical titles and dates.
Why use MusicBrainz Scraper?
- Completely keyless — no API key, no account, no login required from you or your users.
- 12 structured output fields — id, name, type, country, score, area, beginDate, endDate, disambiguation, tags, mode, url.
- Bulk pagination — retrieve up to 10,000 results per run via automatic offset pagination.
- Four entity modes — artists, releases, recordings, and labels all in one actor.
- Export anywhere — download results as CSV, JSON, Excel, or JSONL directly from Apify.
- Pay-per-result pricing — you only pay for the data rows you actually retrieve.
What data can you extract?
The actor extracts the following fields for every result:
| Field | Type | Description |
|---|---|---|
id | string | MusicBrainz unique identifier (MBID) |
name | string | Artist name, release title, recording title, or label name |
type | string | Entity type (e.g. "Person", "Group", "Album", "Single") |
country | string | ISO country code (e.g. "GB", "US", "JP") |
disambiguation | string | Parenthetical note to distinguish entities with the same name |
score | string | Relevance match score (0–100) returned by MusicBrainz search |
area | string | Geographic area associated with the entity |
beginDate | string | Formation/release/founded date (YYYY or YYYY-MM-DD) |
endDate | string | Dissolution/ended date if applicable |
tags | string | Comma-separated genre/style tags from the community |
mode | string | Which search mode was used (artistSearch, releaseSearch, etc.) |
url | string | Direct MusicBrainz URL for the entity |
Example JSON output (artist):
{"id": "a74b1b7f-71a5-4011-9441-d0b5e4122711","name": "Radiohead","type": "Group","country": "GB","disambiguation": "","score": "100","area": "United Kingdom","beginDate": "1985","endDate": null,"tags": "rock, alternative rock, art rock, post-rock, electronic","mode": "artistSearch","url": "https://musicbrainz.org/artist/a74b1b7f-71a5-4011-9441-d0b5e4122711"}
How to use
Option A — Search by artist name
- Open the actor in Apify Console.
- Set mode to
artistSearch. - Enter the artist name in query (e.g. "Radiohead", "Nina Simone", "Daft Punk").
- Set maxResults to however many you need (default 100, max 10000).
- Click Start and download results as JSON or CSV.
Input JSON:
{"mode": "artistSearch","query": "Radiohead","maxResults": 100}
Option B — Search releases, recordings, or labels
- Set mode to one of:
releaseSearch,recordingSearch, orlabelSearch. - Enter a descriptive query — can include album name, artist clause, year, etc.
- MusicBrainz supports Lucene-style field queries: e.g.
artist:Radiohead AND type:album. - Increase maxResults for bulk extraction.
Input JSON:
{"mode": "releaseSearch","query": "OK Computer","maxResults": 200}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | artistSearch | Entity to search: artistSearch, releaseSearch, recordingSearch, labelSearch |
query | string | — | Free-text or Lucene-style search query |
maxResults | integer | 100 | Max rows to collect (1–10000) |
proxyConfiguration | object | — | Optional Apify proxy settings |
Full input JSON:
{"mode": "artistSearch","query": "Beatles","maxResults": 500,"proxyConfiguration": {"useApifyProxy": false}}
Output example
{"id": "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d","name": "The Beatles","type": "Group","country": "GB","disambiguation": "","score": "100","area": "United Kingdom","beginDate": "1960","endDate": "1970","tags": "rock, pop, british invasion, classic rock, merseybeat","mode": "artistSearch","url": "https://musicbrainz.org/artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d"}
Tips for best results
- Use Lucene field syntax for precision:
artist:Radiohead AND type:albumin releaseSearch gives cleaner results than a plain title query. - Score field indicates relevance — filter downstream for
score >= 80to keep high-confidence matches. - Disambiguation field helps when multiple entities share a name — always inspect it when deduplicating.
- Rate limit is respected — the actor inserts a 1.1 s delay between requests as required by MusicBrainz ToS; don't try to bypass it.
- Pagination is automatic — just set a high
maxResultsand the actor handles all offsets. - Tags are community-sourced — great for genre analysis but may be incomplete for obscure artists.
- Country codes follow ISO 3166-1 alpha-2 (e.g. "US", "JP", "DE"); filter in spreadsheet tools after download.
- beginDate/endDate formats vary — some entries have full YYYY-MM-DD, others only YYYY or YYYY-MM.
- For label research, combine country filter in your query:
label:EMI AND country:GB. - MBID (id field) is stable and globally unique — use it as your canonical music entity key in databases.
Integrations
- Google Sheets — Use Apify's Google Sheets integration to push results directly to a spreadsheet for team collaboration.
- Slack — Set up a webhook to notify your channel when a scheduled MusicBrainz run completes.
- Zapier / Make — Connect actor runs to thousands of apps: save to Airtable, send rows to a CRM, or trigger downstream processing.
- Webhooks — Configure Apify webhooks to POST the dataset URL to your server when the run finishes.
- Scheduler — Schedule weekly runs to keep your music metadata dataset fresh with the latest MusicBrainz updates.
API usage
cURL:
curl -X POST \"https://api.apify.com/v2/acts/logiover~musicbrainz-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"artistSearch","query":"Radiohead","maxResults":100}'
Node.js (Apify client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('logiover~musicbrainz-scraper').call({mode: 'artistSearch',query: 'Radiohead',maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("logiover~musicbrainz-scraper").call(run_input={"mode": "artistSearch","query": "Radiohead","maxResults": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Use with AI agents (MCP)
MusicBrainz Scraper is available via the Apify MCP server, making it instantly usable from Claude, ChatGPT, and any MCP-compatible agent. Just connect the Apify MCP server and prompt your agent: "Search MusicBrainz for all releases by Portishead and give me their dates and countries" — the agent will trigger a run, wait for results, and summarize them inline.
FAQ
Does this require an API key or account?
No. MusicBrainz's JSON Web Service is publicly accessible without registration. You only need an Apify account to run the actor.
How much data can I extract per run?
Up to 10,000 results per run. MusicBrainz returns up to 100 per page; the actor paginates automatically via offset until maxResults is reached or the result set is exhausted.
Why is there a 1-second delay between requests?
MusicBrainz's usage policy requires clients to send at most 1 request per second. The actor enforces a 1.1 s delay to stay compliant and avoid being rate-limited or blocked.
What happens if my query returns zero results?
The actor logs a warning and exits cleanly with an empty dataset. Check your query spelling; MusicBrainz search is fuzzy but typos still reduce results significantly.
Why are some fields null?
MusicBrainz is community-curated — many entities lack complete metadata. Fields like endDate, country, and tags are frequently null for less well-documented artists or releases.
Can I export results to Excel or CSV?
Yes. From the Apify dataset view, click Export and choose CSV, Excel, JSON, or JSONL. Google Sheets export is also available via the Apify integration.
How fast does it run?
Because of the 1 req/sec rate limit, 100 results take about 1 minute, 1,000 results take about 10 minutes. Plan accordingly for large extractions.
Is this legal to use?
Yes. MusicBrainz data is published under Creative Commons licenses (CC0 for the core data). The actor respects the rate limit and sends a descriptive User-Agent header as required by MusicBrainz policy.
What is the score field?
MusicBrainz search returns a relevance score (0–100) indicating how closely each result matches your query. A score of 100 means an exact match; lower scores indicate partial matches.
How often is MusicBrainz data updated?
MusicBrainz is continuously edited by its community. The API reflects the live database in near-real-time. Schedule weekly runs to keep your local data current.
Can I search for a specific artist's releases?
Yes — use releaseSearch with a Lucene artist clause: query: "artist:Radiohead AND type:album". This targets releases credited to that artist.
Are there related scrapers I should know about?
Absolutely. You might also find these logiover actors useful:
- Discogs Scraper — vinyl marketplace, release editions, and user collections.
- Last.fm Scraper — scrobble counts, listener stats, and tag-based discovery.
- Spotify Unofficial API — track features, playlist data, and artist popularity scores.
- IMDb Scraper — for soundtracks and film-music metadata cross-referencing.
Is it legal?
MusicBrainz data is released under Creative Commons CC0 (public domain dedication) for factual data and CC BY-NC-SA for Wikipedia-derived text. The actor accesses only the public JSON API with a compliant User-Agent and rate limit. No authentication is bypassed, no personal data is collected. Always review MusicBrainz's Terms of Service for your specific use case, especially for commercial redistribution of large dataset dumps.