a public domain art api.
66,000+ public-domain artworks from world-class museums, searchable by keyword, meaning, and colour.
GET /v1/artworks/random?count=8quickstart
all responses are { data, meta? } — data is the result, meta carries pagination where it applies.
# base url
https://art-publica.com/api/art
# one call, no auth
curl \
"https://art-publica.com/api/art/v1/smart-search?q=stormy+seascape&limit=12"authentication
anonymous requests get 100/day. for more, create a free key and send it as the X-API-Key header. keys are shown once. to list, revoke, or add keys later, sign in to your account.
rate limits
limits reset daily at midnight utc. every response carries X-RateLimit-* headers; over the limit returns 429 with Retry-After.
ai agents (mcp)
art publica is also an mcp server — connect it once and your ai assistant can search the collection by meaning, colour, similarity, or a photo, and actually look at the artworks it recommends. eight read-only tools, works anonymously, same rate limits as the api.
# mcp server (streamable http)
https://art-publica.com/mcpclaude.ai — settings → connectors → add custom connector → paste the url. (custom connectors need a pro, max, or team plan.)
claude code —
claude mcp add --transport http art-publica https://art-publica.com/mcpclaude api — pass it on the request and the model gets the tools automatically:
"mcp_servers": [{ "type": "url", "url": "https://art-publica.com/mcp", "name": "art-publica" }],
"tools": [{ "type": "mcp_toolset", "mcp_server_name": "art-publica" }]tools: art_search (by meaning, cross-lingual), art_search_by_color (hex palette), art_find_by_image (reverse visual search from an image url), art_find_similar, art_view_artwork (returns the image so the assistant can see it), art_get_artwork, art_random, and art_list_filters. three built-in prompts — find_art_for, moodboard, artist_tour — appear as quick actions in clients that support them.
anonymous use gets the same 100/day per user as the api; add your api key as an X-API-Key header in the connector config for keyed limits. verify the server is up:
curl https://art-publica.com/mcp/health
# → {"status":"ok","server":"art-publica-mcp","tools":8}browse
8 endpoints/v1/artworkslist artworks
browse the catalogue with sorting and filters.
/v1/artworks/:idget an artwork
full detail for one artwork, including description and tags.
required: id
/v1/artworks/randomrandom artworks
random artworks, optionally filtered.
/v1/artworks/:id/similarsimilar artworks
more like this one, by image + text embedding.
required: id
/v1/museumslist museums
every source institution and its slug.
/v1/museums/:slugget a museum
one museum by slug.
/v1/categorieslist categories
the normalized category vocabulary and its slugs.
/v1/statscollection stats
totals across the whole catalogue.
search
6 endpoints/v1/searchtext search
keyword match across titles, artists, and descriptions.
/v1/semantic-searchsemantic search
vector search over embeddings.
/v1/smart-searchsmart search
keyword + vector hybrid, fused by rrf.
/v1/color-searchsearch by colour
find artworks dominated by a single hex colour.
/v1/palette-matchmatch a palette
find artworks built from a 1–5 colour palette.
/v1/search-by-imagesearch by image
reverse visual search — find artworks that look like your image.
discover
8 endpoints/v1/artistslist artists
artists ranked by works, with optional search and filters.
/v1/artists/:nameget an artist
full profile — bio, movements, influences, connections.
/v1/artists/:name/similarsimilar artists
network-based artist recommendations.
/v1/movementslist movements
every art movement with its artist count.
/v1/movements/:slugget a movement
movement detail plus its artists, paginated.
/v1/timelinetimeline
artworks by year, decade, or range.
/v1/originslist origins
every culture / place of origin in the collection.
/v1/origins/:cultureget an origin
one culture / origin by name.
account
2 endpoints/v1/keyscreate a key
register by email for the free tier. use the form above — keys are shown once.
create a key with the form in authentication above — keys are shown once.
/v1/keysrevoke a key
permanently revoke a key. pass it as X-API-Key — this can't be undone.