BYTETOOLS

Cover Art Archive API

Free album artwork API with no key: pass a MusicBrainz release id and get every scanned cover, front and back, at several thumbnail sizes. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Cover Art Archive API?

Cover Art Archive serves album artwork keyed by MusicBrainz release identifier, with no API key. Each response lists every image held for that release, flagged front or back, with pre-generated thumbnails at 250, 500 and 1200 pixels.

Album art is one of those problems that looks trivial until you try to source it legally at scale. Cover Art Archive is the MetaBrainz answer: a joint project with the Internet Archive that stores community-contributed scans and serves them free, keyed by the same MusicBrainz identifiers the rest of that ecosystem uses.

Two things about the mechanics matter in practice. The JSON request 307-redirects to the Internet Archive, where the images actually live, so your HTTP client must follow redirects — a client configured not to will simply appear to fail. And the `thumbnails` object gives you 250, 500 and 1200 pixel versions already rendered, so a list view should never be pulling down full-resolution scans. If you only want the front cover and do not need the metadata, the shortcut path `/release/{mbid}/front` redirects straight to the image.

Quick facts

Base URL
https://coverartarchive.org
Authentication
No API key and no account for reads. Uploading artwork requires a MusicBrainz account and happens through MusicBrainz itself.
Rate limit
No published limit for reads. Images are served from Internet Archive infrastructure and are heavily cached.
Pricing
Free. Images are contributed by the community and served under the archive's terms.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Cover Art Archive API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch all artwork for a MusicBrainz release

GET https://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd

curl
curl 'https://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd'
JavaScript (fetch)
const res = await fetch("https://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "images": [
    {
      "approved": true,
      "back": false,
      "comment": "",
      "edit": 17462565,
      "front": true,
      "id": 829521842,
      "image": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/829521842.jpg",
      "thumbnails": {
        "1200": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/829521842-1200.jpg",
        "250": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/829521842-250.jpg",
        "500": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/829521842-500.jpg",
        "large": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/829521842-500.jpg",
        "small": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/829521842-250.jpg"
      },
      "types": [
        "Front"
      ]
    },
    {
      "approved": true,
      "back": false,
      "comment": "",
      "edit": 65037291,
      "front": false,
      "id": 24546038908,
      "image": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/24546038908.jpg",
      "thumbnails": {
        "1200": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/24546038908-1200.jpg",
        "250": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/24546038908-250.jpg",
        "500": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/24546038908-500.jpg",
        "large": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd/24546038908-500.jpg",

Parameters

ParameterTypeRequiredDescription
(mbid)pathRequiredMusicBrainz release identifier, a UUID. Use `/release-group/{mbid}` instead to key by album rather than by specific edition. 76df3287-6cda-33eb-8e9a-044b5e15ffdd
/frontpathOptionalShortcut that redirects to the front cover image itself rather than returning JSON.
/backpathOptionalSame for the back cover.
(size suffix)pathOptionalAppend `-250`, `-500` or `-1200` to an image path for a pre-rendered thumbnail. -500

Response fields

imagesarray
Every image held for the release, in the order contributors set.
images[].imagestring
Full-resolution image URL. Note that these are served over http in the response body — upgrade the scheme yourself if your page is https.
images[].thumbnailsobject
Pre-rendered sizes keyed `250`, `500` and `1200`, with `small` and `large` aliases for the first two. Use these in lists.
images[].front / backboolean
Whether this image is the designated front or back cover. Exactly one image is normally flagged front.
images[].typesarray
Descriptive labels such as `Front`, `Back`, `Booklet`, `Medium` or `Tray`.
images[].approvedboolean
Whether the image passed community review. Unapproved images are still returned.
images[].idinteger
Image identifier, which also forms part of the file URL.
images[].editinteger
MusicBrainz edit number that added the image, for provenance.
images[].commentstring
Free-text note from the contributor. Frequently empty.
releasestring
MusicBrainz URL of the release the images belong to.

What you can build with the Cover Art Archive API

  • Fetch album art for a music player or library scanner
  • Illustrate a discography page built from MusicBrainz data
  • Pull booklet and tray scans for a collection-cataloguing tool
  • Serve correctly sized thumbnails without running your own image pipeline

Common errors and how to fix them

500

Intermittent server error -- roughly one request in three fails.

Fix: This is the service's normal behaviour, not an outage: it proxies to Internet Archive infrastructure that sheds load. Retry once or twice with a short backoff before treating it as a miss, and cache successful lookups.

Request appears to fail with no body

The response 307-redirects to the Internet Archive.

Fix: Enable redirect following in your HTTP client. This is the single most common integration mistake here.

404

No artwork has been contributed for that release.

Fix: Coverage is community-driven and far from complete. Fall back to the release group, then to a placeholder.

Mixed content warnings

Image URLs in the body use the http scheme.

Fix: Rewrite them to https before rendering. The same hosts serve https perfectly well.

Slow first load

Full-resolution scans can be several megabytes.

Fix: Use the `thumbnails` sizes for anything except a dedicated full-size view.

Cover Art Archive API — frequently asked questions

Do I need an API key for Cover Art Archive?

No. Reads are entirely open. Contributing artwork requires a MusicBrainz account, and happens through MusicBrainz rather than here.

What identifier does it take?

A MusicBrainz release MBID for a specific edition, or a release-group MBID for the album as a concept. The release-group path is more forgiving when you do not know which pressing you have.

Why did my request seem to return nothing?

The endpoint redirects to the Internet Archive with a 307. Clients configured not to follow redirects see an empty response and report a failure that is not really one.

Is every album covered?

No. The archive depends on community contributions, so obscure and regional releases are frequently missing. Always handle a 404 as an expected outcome.

Tools that pair with this API

Cover Art Archive is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.