Cleveland Museum

Media API · Works in USA · Cleveland Museum of Art · 60,000+ artworks

TL;DR

The Cleveland Museum of Art Open Access API provides programmatic access to the museum's digital collection of over 60,000 artworks. The API supports searching by keyword, type, technique, culture, and artist. Each artwork record includes title, creator, date, medium, measurements, and IIIF image URLs. All public domain artworks have freely downloadable images with no usage restrictions.

Quick start: https://openaccess-api.clevelandart.org/api/artworks/78459

No API key needed — just make a request!

How to Use This API

1. Get Artwork by ID

https://openaccess-api.clevelandart.org/api/artworks/78459

2. Search Artworks

https://openaccess-api.clevelandart.org/api/artworks?q=monet&limit=5

3. Filter by Type

https://openaccess-api.clevelandart.org/api/artworks?type=Painting&culture=Japan&limit=5

4. JavaScript — Fetch and Display

fetch('https://openaccess-api.clevelandart.org/api/artworks?q=van+gogh&has_image=1&limit=5')
  .then(r => r.json())
  .then(d => {
    d.data.forEach(a => {
      console.log(a.title, '-', a.creators?.[0]?.description);
      console.log('IIIF:', a.images?.web?.url);
    });
  });

5. Python — Get Artwork Details

import requests

resp = requests.get('https://openaccess-api.clevelandart.org/api/artworks/78459')
art = resp.json()['data']
print(f"Title: {art['title']}")
print(f"Date: {art['creation_date']}")
print(f"Medium: {art['technique']}")
print(f"Credit: {art['creditline']}")
Try it: https://openaccess-api.clevelandart.org/api/artworks/78459

Frequently Asked Questions

How do I get only artworks with images?
Add has_image=1 parameter to filter for artworks that have associated digital images.
What search fields are available?
Keyword (q), type (type), technique (technique), culture (culture), creator (creator), and date range (created_after, created_before).
Can I use images commercially?
Yes! Artworks marked with share_license_status: 'CC0' are in the public domain and can be used for any purpose.
How is the API paginated?
Use skip (offset) and limit (max 100) parameters. The response includes total and count fields.

What You Can Build