# Metropolitan Museum of Art Scraper (`crawlerbros/met-museum-scraper`) Actor

Scrape The Metropolitan Museum of Art's open collection of 470,000+ artworks. Search by keyword, browse by department, or look up by artist. Returns full artwork metadata including title, artist, date, medium, dimensions, images, and more

- **URL**: https://apify.com/crawlerbros/met-museum-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Metropolitan Museum of Art Scraper

Scrape The Metropolitan Museum of Art's open collection — one of the world's largest art museums with over 470,000 objects spanning 5,000 years of history. Extract detailed metadata for paintings, sculptures, prints, photographs, decorative arts, and more from departments across European Paintings, Asian Art, Egyptian Art, Greek and Roman Art, and 15 other departments.

### What you get

Every record includes:

| Field | Description |
|---|---|
| `objectId` | Unique Met artwork identifier |
| `title` | Artwork title |
| `artistDisplayName` | Artist's display name |
| `artistDisplayBio` | Artist biographical note (nationality, dates) |
| `artistNationality` | Artist's nationality |
| `artistBeginDate` / `artistEndDate` | Artist birth/death years |
| `artistGender` | Artist gender (when recorded) |
| `department` | Museum department name |
| `objectName` | Object type (e.g., Painting, Vase, Sword) |
| `classification` | Object classification |
| `objectDate` | Human-readable creation date |
| `objectBeginDate` / `objectEndDate` | Numeric date range for filtering |
| `medium` | Materials used (e.g., "Oil on canvas") |
| `dimensions` | Physical dimensions |
| `culture` | Culture of origin |
| `period` | Historical period |
| `dynasty` / `reign` | Dynasty and reign (for applicable works) |
| `creditLine` | Acquisition credit information |
| `accessionNumber` | Museum accession number |
| `country` / `city` / `region` | Geographic origin |
| `isPublicDomain` | Whether the work is CC0 licensed |
| `isHighlight` | Whether the Met features it as a highlight |
| `primaryImage` | Full-resolution image URL |
| `primaryImageSmall` | Web-optimized image URL |
| `additionalImages` | Up to 10 additional view URLs |
| `tags` | Descriptive tags for the artwork |
| `objectURL` | Link to the Met's collection page |
| `objectWikidataUrl` | Wikidata entity link |
| `scrapedAt` | ISO 8601 timestamp of extraction |

### Input options

#### Mode: Search artworks

Search across the full collection by keyword.

```json
{
  "mode": "search",
  "query": "impressionism",
  "hasImages": true,
  "maxItems": 50
}
````

#### Mode: Browse by department

Get artworks from a specific museum department.

```json
{
  "mode": "byDepartment",
  "department": "11",
  "hasImages": true,
  "maxItems": 100
}
```

Available departments:

- `1` — American Decorative Arts
- `3` — Ancient West Asian Art
- `4` — Arms and Armor
- `5` — Arts of Africa, Oceania, and the Americas
- `6` — Asian Art
- `7` — The Cloisters
- `8` — The Costume Institute
- `9` — Drawings and Prints
- `10` — Egyptian Art
- `11` — European Paintings
- `12` — European Sculpture and Decorative Arts
- `13` — Greek and Roman Art
- `14` — Islamic Art
- `15` — The Robert Lehman Collection
- `16` — The Libraries
- `17` — Medieval Art
- `18` — Musical Instruments
- `19` — Photographs
- `21` — Modern Art

#### Mode: Search by artist

Find all artworks attributed to a specific artist.

```json
{
  "mode": "byArtist",
  "query": "Monet",
  "hasImages": true,
  "maxItems": 50
}
```

#### Filters

| Parameter | Type | Description |
|---|---|---|
| `hasImages` | boolean | Only return artworks with images (default: `true`) |
| `isOnView` | boolean | Only return artworks currently on display |
| `isPublicDomain` | boolean | Only return CC0 licensed artworks |
| `dateBegin` | integer | Earliest creation date (year, can be negative for BCE) |
| `dateEnd` | integer | Latest creation date (year) |
| `maxItems` | integer | Maximum records to return (1–5000, default: 50) |

### Example use cases

- **Art research**: Find all Impressionist paintings from 1870–1900 with public domain images
- **Museum data**: Browse Egyptian Art department for catalog integration
- **Artist portfolio**: Scrape all artworks by a specific artist in the Met collection
- **Educational content**: Collect CC0 artwork images for teaching or publishing
- **Art market analysis**: Track classifications and periods across departments
- **Academic study**: Analyze metadata distribution across 5,000 years of art history

### Sample output record

```json
{
  "objectId": 437988,
  "title": "Princess Pauline Metternich on the Beach",
  "artistDisplayName": "Eugene Boudin",
  "artistDisplayBio": "French, Honfleur 1824–1898 Deauville",
  "artistNationality": "French",
  "department": "European Paintings",
  "objectName": "Painting",
  "classification": "Paintings",
  "objectDate": "1865",
  "objectBeginDate": 1865,
  "objectEndDate": 1865,
  "medium": "Oil on panel",
  "dimensions": "10 x 7 7/8 in. (25.4 x 20 cm)",
  "creditLine": "Robert Lehman Collection, 1975",
  "accessionNumber": "1975.1.182",
  "isPublicDomain": true,
  "primaryImage": "https://images.metmuseum.org/CRDImages/ep/original/DT4425.jpg",
  "primaryImageSmall": "https://images.metmuseum.org/CRDImages/ep/web-large/DT4425.jpg",
  "tags": ["Princesses", "Women", "Beaches"],
  "objectURL": "https://www.metmuseum.org/art/collection/search/437988",
  "recordType": "artwork",
  "scrapedAt": "2026-05-25T10:00:00+00:00"
}
```

### Data source

All data is sourced from The Metropolitan Museum of Art's free and open Collection API (`collectionapi.metmuseum.org`). The API provides no-authentication access to the museum's entire digitized collection. No API key or account is required. Images marked `isPublicDomain: true` are released under the Creative Commons Zero (CC0) license.

### FAQ

**Q: Do I need an API key or account?**
A: No. The Met Collection API is completely free and open — no registration required.

**Q: How many artworks does The Met have?**
A: Over 470,000 objects are in the collection, with approximately 375,000 available via the API.

**Q: Can I use the images commercially?**
A: Artworks with `isPublicDomain: true` are released CC0 (no rights reserved) and can be used for any purpose. Always check the `rightsAndReproduction` field for specific terms.

**Q: Why are some artworks missing images?**
A: Many works in the physical collection have not yet been photographed or do not permit digital reproduction. Use `hasImages: true` to filter to only illustrated works.

**Q: What is the date range of the collection?**
A: The collection spans from approximately 5000 BCE (ancient Egyptian) to contemporary works. Use `dateBegin`/`dateEnd` with negative values for BCE dates.

**Q: How often is the data updated?**
A: The Met updates their collection API regularly. The `scrapedAt` field records when each record was extracted.

**Q: Can I scrape all 375,000 artworks?**
A: Yes, set `maxItems` to 5000 and run multiple times with different department or search filters. No rate limits are documented for the public API.

# Actor input Schema

## `mode` (type: `string`):

What to fetch from The Met collection.

## `query` (type: `string`):

Keyword to search artworks (used in mode=search and mode=byArtist).

## `department` (type: `string`):

Museum department to browse (mode=byDepartment).

## `hasImages` (type: `boolean`):

Only return artworks that have at least one image.

## `isOnView` (type: `boolean`):

Only return artworks currently on display at the museum.

## `isPublicDomain` (type: `boolean`):

Only return artworks whose images are in the public domain (CC0 license).

## `dateBegin` (type: `integer`):

Only include artworks created from this year onwards (e.g. 1800).

## `dateEnd` (type: `integer`):

Only include artworks created up to this year (e.g. 1900).

## `maxItems` (type: `integer`):

Maximum number of artwork records to return.

## Actor input object example

```json
{
  "mode": "search",
  "query": "impressionism",
  "department": "11",
  "hasImages": true,
  "isOnView": false,
  "isPublicDomain": false,
  "maxItems": 50
}
```

# Actor output Schema

## `artworks` (type: `string`):

Dataset containing all scraped Metropolitan Museum of Art artworks.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "query": "impressionism",
    "department": "11",
    "hasImages": true,
    "isOnView": false,
    "isPublicDomain": false,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/met-museum-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "query": "impressionism",
    "department": "11",
    "hasImages": True,
    "isOnView": False,
    "isPublicDomain": False,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/met-museum-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "query": "impressionism",
  "department": "11",
  "hasImages": true,
  "isOnView": false,
  "isPublicDomain": false,
  "maxItems": 50
}' |
apify call crawlerbros/met-museum-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/met-museum-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Metropolitan Museum of Art Scraper",
        "description": "Scrape The Metropolitan Museum of Art's open collection of 470,000+ artworks. Search by keyword, browse by department, or look up by artist. Returns full artwork metadata including title, artist, date, medium, dimensions, images, and more",
        "version": "1.0",
        "x-build-id": "m2xUm8TtJupCTpzFy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~met-museum-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-met-museum-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~met-museum-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-met-museum-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~met-museum-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-met-museum-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byDepartment",
                            "byArtist"
                        ],
                        "type": "string",
                        "description": "What to fetch from The Met collection.",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword to search artworks (used in mode=search and mode=byArtist).",
                        "default": "impressionism"
                    },
                    "department": {
                        "title": "Department",
                        "enum": [
                            "1",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7",
                            "8",
                            "9",
                            "10",
                            "11",
                            "12",
                            "13",
                            "14",
                            "15",
                            "16",
                            "17",
                            "18",
                            "19",
                            "21"
                        ],
                        "type": "string",
                        "description": "Museum department to browse (mode=byDepartment).",
                        "default": "11"
                    },
                    "hasImages": {
                        "title": "Has images only",
                        "type": "boolean",
                        "description": "Only return artworks that have at least one image.",
                        "default": true
                    },
                    "isOnView": {
                        "title": "On view only",
                        "type": "boolean",
                        "description": "Only return artworks currently on display at the museum.",
                        "default": false
                    },
                    "isPublicDomain": {
                        "title": "Public domain only",
                        "type": "boolean",
                        "description": "Only return artworks whose images are in the public domain (CC0 license).",
                        "default": false
                    },
                    "dateBegin": {
                        "title": "Date begin (year)",
                        "minimum": -5000,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only include artworks created from this year onwards (e.g. 1800)."
                    },
                    "dateEnd": {
                        "title": "Date end (year)",
                        "minimum": -5000,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only include artworks created up to this year (e.g. 1900)."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of artwork records to return.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
