Discover/Metal Archives API
live

Metal Archives APImetal-archives.com

Access Metal Archives band details, discographies, lyrics, artist bios, and label rosters via 12 structured endpoints. Search bands, albums, and songs by name.

Endpoint health
verified 6d ago
search_bands
get_band_recommendations
search_songs
get_band_details
search_albums
12/12 passing latest checkself-healing
Endpoints
12
Updated
21d ago

What is the Metal Archives API?

The Metal Archives API exposes 12 endpoints covering the full depth of the Encyclopaedia Metallum database — bands, albums, songs, lyrics, artists, and record labels. Use search_bands to find acts by name with genre and country in each result, get_band_discography to pull a filtered release timeline, or get_lyrics to retrieve song text by ID. Band, album, artist, and label data are all cross-linked through shared numeric IDs.

Try it
Max results to return per page.
Band name to search for.
Pagination offset (number of results to skip).
api.parse.bot/scraper/b08fc1e3-313a-4420-8e34-14bd3568c8d1/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/b08fc1e3-313a-4420-8e34-14bd3568c8d1/search_bands?limit=5&query=Metallica&offset=0' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace metal-archives-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Metal Archives SDK — search bands, explore discographies, and discover similar artists."""
from parse_apis.metal_archives_api import MetalArchives, DiscographyTab, NotFoundError_

client = MetalArchives()

# Search for bands by name — limit= caps total items fetched.
for band in client.bands.search(query="Metallica", limit=3):
    print(band.name, band.genre, band.country)

# Drill into the first result's full details.
band = client.bands.search(query="Slayer", limit=1).first()
if band:
    detail = band.details()
    print(detail.name, detail.status, detail.formed_in, detail.years_active)

    # Walk discography filtered to main releases.
    for release in detail.discography(tab=DiscographyTab.MAIN, limit=5):
        print(release.name, release.year, release.type)

    # Get album details from the first release.
    first_release = detail.discography(tab=DiscographyTab.MAIN, limit=1).first()
    if first_release:
        album = first_release.details()
        print(album.name, album.release_date, album.label)
        for track in album.tracklist:
            print(track.number, track.title, track.duration)

    # Explore band members and drill into an artist.
    lineup = detail.members()
    for member in lineup.current:
        print(member.name, member.role)

    # Fetch similar bands.
    for rec in detail.recommendations(limit=5):
        print(rec.name, rec.genre, rec.score)

# Typed error handling for a non-existent band.
try:
    client.bands.get(band_id="9999999999")
except NotFoundError_ as exc:
    print(f"Band not found: {exc}")

# Fetch a label and explore its roster.
label = client.labels.get(label_id="2")
print(label.name, label.country, label.founded)
for roster_band in label.roster.list(limit=5):
    print(roster_band.name, roster_band.genre)

print("exercised: bands.search / bands.get / discography / members / recommendations / albums.get / labels.get / roster.list")
All endpoints · 12 totalmissing one? ·

Full-text search over metal band names. Returns paginated results with band name, genre, and country. Each result carries a band ID usable with get_band_details, get_band_discography, get_band_members, and get_band_recommendations.

Input
ParamTypeDescription
limitintegerMax results to return per page.
queryrequiredstringBand name to search for.
offsetintegerPagination offset (number of results to skip).
Response
{
  "type": "object",
  "fields": {
    "limit": "integer limit used",
    "total": "integer total number of matching bands",
    "offset": "integer pagination offset used",
    "results": "array of band objects with name, url, id, genre, and country"
  },
  "sample": {
    "data": {
      "limit": 200,
      "total": 1,
      "offset": 0,
      "results": [
        {
          "id": "125",
          "url": "https://www.metal-archives.com/bands/Metallica/125",
          "name": "Metallica",
          "genre": "Thrash Metal (early); Hard Rock (mid); Heavy/Thrash Metal (later)",
          "country": "United States"
        }
      ]
    },
    "status": "success"
  }
}

About the Metal Archives API

Band and Discography Data

The get_band_details endpoint returns a band's bio, genre, status, themes, country, location, formed_in, and logo_url given a numeric band_id (sourced from search_bands results). get_band_discography accepts an optional tab parameter — all, main, lives, demos, or misc — and returns an array of releases each containing name, type, year, and a reviews field. get_band_members splits the roster into current, past, and live arrays, with each member carrying their own numeric id for downstream artist lookups.

Album and Song Data

get_album_details returns a tracklist where every track includes a song_id that feeds directly into get_lyrics. The album object also exposes type (Full-length, EP, Demo, etc.), label, format, catalog_id, and release_date. search_songs lets you query by title and returns lyrics_status alongside band and album cross-references, so you can check whether lyrics are available before fetching them.

Artist and Label Data

get_artist_details returns personal fields including real_name, age, gender, place_of_birth, and bio for individual musicians. On the label side, get_label_details surfaces address, phone, founded, specialties, status, and online_shopping. get_label_roster supports past (boolean) and paginated lookups via limit and offset, returning each signed band with name, genre, and country. Label IDs are not currently returned by band detail endpoints, so you will need a label ID from external context or from the label field in get_album_details.

Search and Recommendations

All three search endpoints — search_bands, search_albums, and search_songs — return total, offset, and limit alongside results, enabling straightforward pagination. get_band_recommendations returns similar bands ordered by a score field, each with name, country, genre, and a direct id for further lookups.

Reliability & maintenanceVerified

The Metal Archives API is a managed, monitored endpoint for metal-archives.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when metal-archives.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official metal-archives.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
6d ago
Latest check
12/12 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a metal band encyclopedia that shows biography, genre, formed year, and logo from get_band_details.
  • Generate a band's full release timeline filtered by demo or live recordings using get_band_discography with the tab parameter.
  • Display song lyrics in a music player app by chaining get_album_details tracklist song_id values into get_lyrics.
  • Map musician career histories by pulling past and current members from get_band_members and resolving each via get_artist_details.
  • Recommend similar bands in a discovery app using the score-sorted results from get_band_recommendations.
  • Audit a record label's current and historical artist roster with get_label_roster using the past boolean and pagination.
  • Index searchable song metadata including lyrics_status across a large catalogue using search_songs with paginated offsets.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Metal Archives have an official developer API?+
Metal Archives (Encyclopaedia Metallum) does not publish an official public developer API. The site's data is accessible through its web interface at metal-archives.com, and this Parse API provides structured programmatic access to that data.
How do I retrieve lyrics, and what does `lyrics_status` tell me in search results?+
get_lyrics requires a song_id, which you get from the tracklist array in get_album_details — each track object includes number, title, duration, and song_id. The lyrics_status field returned by search_songs indicates whether lyrics are present for a given song before you commit a lookup, helping avoid empty requests.
Can I look up a band's label ID directly from band detail or search endpoints?+
get_band_details returns only a label name string, not a numeric label ID. get_album_details returns the label name in the label field but also does not include a numeric label ID. Currently, direct label-ID resolution from band or album endpoints is not supported. You can fork this API on Parse and revise it to add a label search or label-ID lookup endpoint.
Does the API expose band images beyond the logo?+
get_band_details returns a logo_url field. Band photo galleries or additional image assets are not currently included in any endpoint response. You can fork this API on Parse and revise it to add an endpoint returning band photo URLs.
How does pagination work across the search and roster endpoints?+
All paginated endpoints — search_bands, search_albums, search_songs, and get_label_roster — return total, offset, and limit in every response. Pass offset as the number of results to skip and limit to control page size. total gives you the full match count so you can calculate how many pages exist without a separate call.
Page content last updated . Spec covers 12 endpoints from metal-archives.com.
Related APIs in MusicSee all →
darklyrics.com API
Search for song and album lyrics from metal music bands, browse newly added albums and complete band discographies, and access full lyrics organized by artist and release. Filter bands alphabetically and find specific songs to read their complete lyrical content.
allmusic.com API
Search for music, browse artist biographies and discographies, and retrieve detailed album and song information all in one place. Discover new releases and access comprehensive metadata about artists and tracks.
musicbrainz.org API
Search MusicBrainz for artists and recordings, then fetch detailed metadata for artists, recordings, releases, and release groups, including credits, tags/genres, and track listings.
lyrics.com API
Search and retrieve song lyrics, artist biographies, and album information across multiple genres and artists. Browse music content by artist, letter, or genre, and discover new or random songs to explore.
albumoftheyear.org API
Search for music albums and discover their release dates, genres, and record labels, while browsing the best-rated and newest releases from across the music industry. Find detailed information about any album to stay updated on new music and make informed decisions about what to listen to next.
rateyourmusic.com API
Search for albums, artists, and genres to retrieve detailed information including release dates, ratings, and chart rankings from Rate Your Music. Browse music charts and explore genre-specific data to discover trends across the catalog.
musixmatch.com API
Search for song lyrics, metadata, and translations while discovering artist profiles, discographies, and album details all in one place. Build music apps that let you retrieve complete song information, explore artist catalogs, and discover new music through curated feeds.
merchbar.com API
Search and discover music merchandise across vinyls, CDs, apparel, and accessories, then track product details, new arrivals, and sales by artist. Find exactly what you're looking for with real-time product information and pricing updates.