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:
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.
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.