# Art Institute of Chicago Scraper — Artworks & Artists API (`compute-edge/art-institute-chicago-scraper`) Actor

Extract artworks from the Art Institute of Chicago API. Get title, artist, date, medium, department, classification, place of origin, public-domain status, IIIF image URLs, and credit lines. Search by keyword. Clean JSON for art research and catalogs.

- **URL**: https://apify.com/compute-edge/art-institute-chicago-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Art Institute of Chicago Scraper — Artworks & Artists API

Extract structured artwork data from the **Art Institute of Chicago** public API — one of the world's premier encyclopedic art museums. This Actor lets you browse or search over 120,000 artworks spanning 5,000 years of human creativity, returning clean JSON with titles, artists, dates, mediums, departments, classifications, place of origin, and high-resolution image URLs.

The Art Institute of Chicago's API is a free, open, and well-maintained resource. Unlike many cultural institution APIs, it requires no authentication, enforces no rate limits for reasonable use, and returns richly structured data. Whether you're building an art discovery app, training an image recognition model, conducting academic research, or enriching a RAG pipeline with cultural data, this Actor delivers exactly what you need.

### Key Features

- **Browse or search** — Leave the query blank to paginate through the full collection, or provide a keyword (e.g., "impressionism", "Monet", "sculpture") to search
- **120,000+ artworks** — Complete AIC collection available via the official public API
- **12 structured fields** — Title, artist, date, medium, department, classification, place of origin, image URL, and more
- **IIIF image URLs** — Direct links to high-resolution images via the IIIF standard (843px wide)
- **No authentication required** — Official public API, no keys or credentials needed
- **Configurable result count** — Fetch 1 to 5,000 records per run

### Output Data Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | integer | AIC internal artwork ID |
| `title` | string | Title of the artwork |
| `artist` | string | Artist name (display form, e.g., "Claude Monet (French, 1840–1926)") |
| `dateDisplay` | string | Date or date range as displayed (e.g., "1906", "c. 1890–1895") |
| `medium` | string | Materials used (e.g., "Oil on canvas", "Marble") |
| `department` | string | Museum department (e.g., "Impressionism and Post-Impressionism") |
| `classification` | string | Artwork classification (e.g., "Painting", "Photograph", "Drawing") |
| `placeOfOrigin` | string | Country or region where the work was created |
| `isPublicDomain` | boolean | Whether the artwork image is in the public domain |
| `creditLine` | string | Acquisition credit line (e.g., "Helen Birch Bartlett Memorial Collection") |
| `imageUrl` | string | Direct IIIF image URL (843px wide); empty string if no image available |
| `webUrl` | string | Canonical URL on the AIC website |

### How to Scrape Art Institute of Chicago Data

1. Navigate to the **Art Institute of Chicago Scraper** Actor page on Apify Store.
2. Click **Start** to open the input configuration form.
3. (Optional) Enter a **Search Query** to filter artworks by keyword. Examples: "Picasso", "watercolor", "ancient Egypt", "armor". Leave blank to browse the full collection in default order.
4. Set **Max Results** to control how many records to fetch (default: 100, max: 5,000).
5. Click **Start** to run the Actor.
6. When the run completes, go to the **Dataset** tab to view and download results.
7. Export as JSON, CSV, or Excel using the Apify export buttons.

The Actor typically completes in under 30 seconds for 100 results and under 5 minutes for 5,000 results.

### Input Example

```json
{
    "q": "impressionism",
    "maxResults": 200
}
````

To browse the full collection without filtering, use an empty input:

```json
{}
```

### Output Example

```json
{
    "id": 16568,
    "title": "A Sunday on La Grande Jatte — 1884",
    "artist": "Georges Seurat (French, 1859–1891)",
    "dateDisplay": "1884–86",
    "medium": "Oil on canvas",
    "department": "Impressionism and Post-Impressionism",
    "classification": "Painting",
    "placeOfOrigin": "France",
    "isPublicDomain": true,
    "creditLine": "Helen Birch Bartlett Memorial Collection",
    "imageUrl": "https://www.artic.edu/iiif/2/2d484387-2509-5e8e-2c43-a8a9276c89d5/full/843,/0/default.jpg",
    "webUrl": "https://www.artic.edu/artworks/16568"
}
```

### Pricing

This Actor calls the Art Institute of Chicago's free public API — no browser rendering, no proxies, no authentication.

- **Cost per run**: Under $0.001 for up to 100 results
- **Per-result pricing**: $0.003/result
- **Typical run time**: Under 30 seconds for 100 results; 2–5 minutes for 5,000 results

### Use Cases

- **Art discovery apps** — Power search and browse features for art-focused web or mobile applications
- **Machine learning datasets** — Build labeled image datasets for style classification, object detection, or art history models using public-domain IIIF images
- **Academic research** — Analyze collection composition by department, classification, place of origin, or time period
- **RAG pipelines** — Feed structured art metadata into LLM-based research or question-answering systems
- **Museum data journalism** — Investigate collection diversity, acquisition history, or geographic representation
- **Digital humanities** — Cross-reference AIC collection data with other museum APIs for comparative analysis

### Other Scrapers by SeatSignal

- [CISA KEV Scraper](https://apify.com/seatsignal/cisa-kev-scraper) — Extract CISA Known Exploited Vulnerabilities catalog
- [NIST NVD Scraper](https://apify.com/seatsignal/nist-nvd-scraper) — Extract CVE vulnerability data from the NIST National Vulnerability Database
- [CPSC Product Recalls Scraper](https://apify.com/seatsignal/cpsc-product-recalls-scraper) — Extract consumer product recall data
- [FDA OpenFDA Scraper](https://apify.com/seatsignal/fda-openfda-scraper) — Extract FDA drug and device safety data

### FAQ

#### Is it legal to scrape the Art Institute of Chicago API?

Yes. The Art Institute of Chicago provides an official, documented public API at `api.artic.edu`. No authentication is required. The AIC explicitly makes this data available for developers and researchers. Artwork data (metadata) is freely available; image use depends on whether the specific work is in the public domain (check the `isPublicDomain` field).

#### How many artworks are in the collection?

The AIC collection includes over 120,000 artworks. With `maxResults` set to 5,000 and no search query, you can retrieve large batches. For the full collection, run multiple times or set `maxResults` to 5,000 and paginate.

#### Why is `imageUrl` empty for some records?

Not all artwork records have digitized images. When `image_id` is null in the API response, `imageUrl` is returned as an empty string. The `isPublicDomain` field tells you whether images that do exist can be used freely.

#### Can I export to Excel or CSV?

Yes. After the Actor run completes, use the Apify Dataset export buttons to download results in JSON, CSV, Excel, XML, or RSS formats.

#### What is IIIF?

IIIF (International Image Interoperability Framework) is an open standard for serving high-quality images. The `imageUrl` field returns a direct link to an 843px-wide JPEG. You can adjust the image dimensions by modifying the URL path (e.g., replace `843,` with `200,` for smaller thumbnails).

### Legal Disclaimer

This Actor accesses publicly available data from the Art Institute of Chicago's official public API (`api.artic.edu`). No authentication bypass, scraping of login-protected content, or violation of terms of service is involved. Users are responsible for ensuring their use of extracted data and images complies with applicable copyright law and the AIC's terms of use. Artwork images may be subject to copyright even when metadata is freely available — always check the `isPublicDomain` field before reproducing images. For support, contact the Actor developer through the Apify Store.

# Actor input Schema

## `q` (type: `string`):

Keyword to search for artworks (e.g., 'impressionism', 'Monet', 'water lilies'). Leave empty to browse the full collection.

## `maxResults` (type: `integer`):

Maximum number of artwork records to return. Min 1, max 5000.

## Actor input object example

```json
{
  "q": "",
  "maxResults": 100
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("compute-edge/art-institute-chicago-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("compute-edge/art-institute-chicago-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 '{}' |
apify call compute-edge/art-institute-chicago-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=compute-edge/art-institute-chicago-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Art Institute of Chicago Scraper — Artworks & Artists API",
        "description": "Extract artworks from the Art Institute of Chicago API. Get title, artist, date, medium, department, classification, place of origin, public-domain status, IIIF image URLs, and credit lines. Search by keyword. Clean JSON for art research and catalogs.",
        "version": "0.1",
        "x-build-id": "dsXZDrvere5ZO6suz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~art-institute-chicago-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-art-institute-chicago-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/compute-edge~art-institute-chicago-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-art-institute-chicago-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/compute-edge~art-institute-chicago-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-art-institute-chicago-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",
                "properties": {
                    "q": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword to search for artworks (e.g., 'impressionism', 'Monet', 'water lilies'). Leave empty to browse the full collection.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of artwork records to return. Min 1, max 5000.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
