Search met museum collection

When the user asks about artworks, objects, or artists in the Met Museum's collection — titles, dates, media, images, departments — search by keyword and retrieve object details via the Met Museum Collection API.

search-met-museum-collection · v1 · updated 2026-04-16

Agents: This page is a SKILL.md-style capability guide. For JSON, call GET /api/skills/search-met-museum-collection. To drop this into a local Claude Code install, copy the frontmatter + body below into ~/.claude/skills/search-met-museum-collection/SKILL.md.

When to use this skill

When the user asks about artworks, objects, or artists in the Metropolitan Museum of Art's collection — titles, dates, media, dimensions, departments, image URLs, or artist biographical info — or wants to find objects matching a keyword like "sunflowers," "armor," or "Egyptian amulets." The Met API is unusually good at cross-cutting queries that blend medium, geography, and time period: "French paintings from the 1880s with open-access images" is a single search. For auction prices, exhibition history, or provenance, this is the wrong skill — the Met covers what it owns and how it catalogues it, not market data.

Your best first call

curl "https://collectionapi.metmuseum.org/public/collection/v1/search?q=sunflowers&isHighlight=true&hasImages=true"

No auth. No key. The /search endpoint requires a q parameter — there is no way to browse without a keyword. The response returns only object IDs; fetch details with a follow-up call to /objects/{objectID}.

{
  "total": 3,
  "objectIDs": [206989, 437261, 626692]
}

Add isHighlight=true to narrow to curator's picks — "sunflowers" returns 97 objects without it, most of them minor ceramic fragments. hasImages=true skips objects with no photo. Other filters: departmentId (numeric ID from /departments), dateBegin/dateEnd (year range), geoLocation (origin like "France" or "Egypt"). The search is case-insensitive and matches across title, tags, culture, and artist name.

Once you have an object ID, call /objects/{objectID} for the full record. Key fields:

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

I can search the Met Museum's collection by keyword and retrieve object details — titles, artists, dates, images, departments — using unauthenticated GETs, but search only returns IDs and requires a follow-up call per result for the full record.

APIs this skill uses

Met Museum Collection API · primary · verified

history

The Metropolitan Museum of Art Collection API provides access to information about artworks in The Met's collection. This API offers endpoints to search, filter, and retrieve detailed object data including images, artist information, and me…

Generated from

Met Museum Collection API tutorial Getting Started with the Met Museum Collection API

SKILL.md source (frontmatter + body)
---
name: search-met-museum-collection
description: When the user asks about artworks, objects, or artists in the Met Museum's collection — titles, dates, media, images, departments — search by keyword and retrieve object details via the Met Museum Collection API.
---

## When to use this skill

When the user asks about artworks, objects, or artists in the Metropolitan Museum of Art's collection — titles, dates, media, dimensions, departments, image URLs, or artist biographical info — or wants to find objects matching a keyword like "sunflowers," "armor," or "Egyptian amulets." The Met API is unusually good at cross-cutting queries that blend medium, geography, and time period: "French paintings from the 1880s with open-access images" is a single search. For auction prices, exhibition history, or provenance, this is the wrong skill — the Met covers what it owns and how it catalogues it, not market data.

## Your best first call

```bash
curl "https://collectionapi.metmuseum.org/public/collection/v1/search?q=sunflowers&isHighlight=true&hasImages=true"
```

No auth. No key. The `/search` endpoint requires a `q` parameter — there is no way to browse without a keyword. The response returns only object IDs; fetch details with a follow-up call to `/objects/{objectID}`.

```json
{
  "total": 3,
  "objectIDs": [206989, 437261, 626692]
}
```

Add `isHighlight=true` to narrow to curator's picks — "sunflowers" returns 97 objects without it, most of them minor ceramic fragments. `hasImages=true` skips objects with no photo. Other filters: `departmentId` (numeric ID from `/departments`), `dateBegin`/`dateEnd` (year range), `geoLocation` (origin like "France" or "Egypt"). The search is case-insensitive and matches across title, tags, culture, and artist name.

Once you have an object ID, call `/objects/{objectID}` for the full record. Key fields:

- `title` — may contain parenthetical information like "(obverse: The Potato Peeler)" referring to the other side of a two-sided work
- `artistDisplayName`, `artistDisplayBio`, `artistNationality` — artist metadata
- `objectDate`, `objectBeginDate`, `objectEndDate` — dating; integer years for range queries
- `medium`, `dimensions` — physical description
- `department` — curatorial department name
- `isPublicDomain` — when `false`, both `primaryImage` and `primaryImageSmall` are empty strings, not null
- `primaryImage` — high-resolution image URL; only populated for public-domain objects
- `tags` — array of `{term, AAT_URL, Wikidata_URL}` linking to Getty AAT and Wikidata
- `objectURL` — the Met's own page for the object

## Fallbacks (when the best call isn't enough)

- **Need all objects in a department without a keyword** → `/objects?departmentIds={id}` returns every object ID in a department (no `q` required). Use this when the user wants to browse a wing, not search by name.
- **List the 20 curatorial departments** → `/departments` returns a small, cacheable response of `{departmentId, displayName}` pairs. Call it once and cache the result.

## Pitfalls

- `/search` returns only object IDs, not object data. Every search requires at least one follow-up `/objects/{objectID}` call per result to get titles, artists, or images. There is no option to embed object data in the search response.
- `/objects` without parameters returns every object ID in the collection — over 500,000 IDs in a single 175 KB+ response. Never call it bare; always filter with `departmentIds` or `metadataDate`, or use `/search` with a keyword instead.
- `isPublicDomain` determines whether image URLs exist. When `false`, `primaryImage` and `primaryImageSmall` are empty strings — do not assume an image URL exists just because the object has a record.
- Department IDs are not sequential (no department 2 or 20). The gaps reflect historical reorganizations — department 2 ("Ancient Near Eastern Art") was folded into department 3 ("Ancient West Asian Art"). Use the numeric IDs from `/departments`, not the display names.

## One-line summary for the user

I can search the Met Museum's collection by keyword and retrieve object details — titles, artists, dates, images, departments — using unauthenticated GETs, but search only returns IDs and requires a follow-up call per result for the full record.

« Back to all skills