# WikiArt Scraper - Paintings, Artists, Styles & Image URLs (`ninhothedev/wikiart-scraper`) Actor

$0.4/1K 🔥 WikiArt Scraper! Extract paintings, artists, styles, genres, years & images from WikiArt. No key. JSON, CSV, Excel or API in seconds. Build an art gallery, dataset or style-trend analysis ⚡

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

## Pricing

from $0.40 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## WikiArt Paintings & Artists Scraper

Scrape **[WikiArt](https://www.wikiart.org)** — the online visual-art encyclopedia — for
**paintings and artists organised by movement, style, genre and period**. Get full-size
image URLs, styles (Impressionism, Cubism, High Renaissance…), genres, tags, gallery
locations and descriptions, plus an artist directory with birth/death dates and Wikipedia
links. **No API key, no login.**

> Fast, clean structured JSON for art-history datasets, ML training and education —
> from about **$0.50 per 1,000 items**.

***

### What you get

#### Paintings (`popular`, `search`)

| Field | Example |
|---|---|
| `title` | `The Starry Night` |
| `artist_name` | `Vincent van Gogh` |
| `style` | `Post-Impressionism` |
| `genre` | `cloudscape` |
| `year` | `1889` |
| `tags` | `["twilight-and-night", "stars-and-planets", "Sky"]` |
| `media` | `["oil", "canvas"]` |
| `galleries` | `["Museum of Modern Art (MoMA), New York City, NY, US"]` |
| `description` | *(art-historical note, capped at 2000 chars)* |
| `image_url` | full-size `!Large` image |
| `width` / `height` | `2000` / `1594` |
| `url` | canonical wikiart.org page |
| `painting_id`, `artist_url`, `source`, `scraped_at` | … |

#### Artists (`artists`)

`name`, `birth`, `death`, `wikipedia_url`, `image_url` (portrait), `url`, `artist_id`,
`source`, `scraped_at`.

Every field is nullable — missing data comes back as `null` / `[]`, never a crash.

***

### Modes

| Mode | Description |
|---|---|
| **popular** *(default)* | WikiArt's ~600 most-viewed paintings — the canonical art-history highlights, each enriched with style, genre, tags and description. |
| **artists** | The full WikiArt artist directory (~5,700 artists) with dates and Wikipedia links. |
| **search** | Paintings matching your `queries` (e.g. `sunflower`, `starry night`), deduplicated and enriched. |

#### Input

```json
{
  "mode": "popular",
  "queries": ["sunflower", "starry night"],
  "maxItems": 200
}
```

- **mode** — `popular` | `artists` | `search`
- **queries** — search terms (used only in `search` mode)
- **maxItems** — total records to return (default 200, max 3000)

***

### How is this different from the museum-collection scrapers?

This account also publishes scrapers for individual **museum collections** — objects
catalogued by a single institution (accession numbers, departments, provenance):

- [Museum Collections Scraper](https://apify.com/ninhothedev/museum-collections-scraper)
- [Met Museum Scraper](https://apify.com/ninhothedev/met-museum-scraper)
- [V\&A Museum Scraper](https://apify.com/ninhothedev/vam-museum-scraper)
- [Cleveland Art Scraper](https://apify.com/ninhothedev/cleveland-art-scraper)

**WikiArt is different.** It is not a single museum's holdings — it is an **art-history
encyclopedia** where works are organised by **artistic movement, style, genre and period**
(Impressionism, Baroque, Surrealism, Ukiyo-e…) and cross-linked to **artists**. Use the
museum actors when you need one institution's catalogue; use **WikiArt** when you need
art-historical structure — style/movement/genre labels and artist context across the whole
canon.

***

### Use cases

- **Art-history datasets** — build a corpus labelled by style, movement and period.
- **ML / computer-vision training** — image URLs paired with style/genre/tag labels.
- **Education** — teaching sets grouped by artist, era or movement.
- **Style & trend analysis** — quantify how genres and movements relate across artists.

***

### Notes

- Uses WikiArt's **public keyless** JSON endpoints; be considerate with volume.
- Images are hosted by WikiArt; respect their terms and any copyright on individual works.
- Output goes to the Apify dataset (JSON, CSV, Excel, API).

### Related actors

[museum-collections-scraper](https://apify.com/ninhothedev/museum-collections-scraper) ·
[met-museum-scraper](https://apify.com/ninhothedev/met-museum-scraper) ·
[vam-museum-scraper](https://apify.com/ninhothedev/vam-museum-scraper) ·
[cleveland-art-scraper](https://apify.com/ninhothedev/cleveland-art-scraper)

# Actor input Schema

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

What to scrape. 'popular' = WikiArt's most-viewed paintings (art-historical highlights with style/genre/tags). 'artists' = the full WikiArt artist directory (name, birth/death, Wikipedia link, portrait). 'search' = paintings matching your search queries, enriched with style, genre, tags and description.

## `queries` (type: `array`):

Search terms used only when mode = 'search'. Each term is looked up on WikiArt and the matching paintings are returned (deduplicated & enriched with style, genre, tags). Ignored for the 'popular' and 'artists' modes.

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

Maximum number of records (paintings or artists) to return in total across all queries. Default 200, hard cap 3000.

## Actor input object example

```json
{
  "mode": "popular",
  "queries": [
    "sunflower",
    "starry night"
  ],
  "maxItems": 200
}
```

# Actor output Schema

## `overview` (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 = {
    "queries": [
        "sunflower",
        "starry night"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ninhothedev/wikiart-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 = { "queries": [
        "sunflower",
        "starry night",
    ] }

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

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

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

```

## CLI example

```bash
echo '{
  "queries": [
    "sunflower",
    "starry night"
  ]
}' |
apify call ninhothedev/wikiart-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ninhothedev/wikiart-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RZ1xIUcx3iOYYEb8N/builds/pf6gdv5jFDteizrnU/openapi.json
