Art & Design — entry 002 of 20

Art Institute of Chicago

Verified Jul 2026

The Art Institute of Chicago publishes its full collection of 130,000+ objects as a versioned, keyless REST API (api.artic.edu/api/v1) built on the same data that powers its own website and mobile app, with IIIF-based endpoints for zoomable, high-resolution images. A live GET against a real artwork record returned genuine JSON carrying Access-Control-Allow-Origin: *, reconfirming both auth None and cors yes with no key required.

The Art Institute of Chicago publishes its full collection — 130,000+ objects — as a versioned, keyless REST API. A live GET this run against /artworks/27992?fields=id,title,artist_display,date_display,image_id returned genuine JSON for Seurat's "A Sunday on La Grande Jatte", plus a config.iiif_url block the caller has to combine with the record's image_id to assemble the actual image URL — the API never returns a ready-made image link directly.

museumartopen-datacollectioniiif
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score94out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 94 on greatapis.com
<a href="https://greatapis.com/api/art-institute-of-chicago/"><img src="https://greatapis.com/badge/art-institute-of-chicago.svg" alt="Scored 94 on greatapis.com"></a>

Auth quickstart

  1. No API key, signup, or credit card required. A live GET this run against a real artwork record returned genuine JSON while carrying access-control-allow-origin: *, confirming both keyless auth and open CORS with nothing to configure first.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://api.artic.edu/api/v1
agent-roles2
GET/agent-roles
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/agent-roles/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
agent-types2
GET/agent-types
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/agent-types/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
agents3
GET/agents
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/agents/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/agents/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
articles3
GET/articles
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/articles/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/articles/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
artists2
GET/artists
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/artists/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
artwork-date-qualifiers2
GET/artwork-date-qualifiers
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/artwork-date-qualifiers/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
artwork-place-qualifiers2
GET/artwork-place-qualifiers
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/artwork-place-qualifiers/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
artwork-types2
GET/artwork-types
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/artwork-types/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
artworks3
GET/artworks
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/artworks/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/artworks/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
category-terms3
GET/category-terms
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/category-terms/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/category-terms/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
digital-publication-articles3
GET/digital-publication-articles
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/digital-publication-articles/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/digital-publication-articles/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
digital-publications3
GET/digital-publications
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/digital-publications/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/digital-publications/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
educator-resources3
GET/educator-resources
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/educator-resources/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/educator-resources/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
event-occurrences3
GET/event-occurrences
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/event-occurrences/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/event-occurrences/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
event-programs3
GET/event-programs
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/event-programs/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/event-programs/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
events3
GET/events
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/events/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/events/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
exhibitions3
GET/exhibitions
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/exhibitions/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/exhibitions/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
galleries3
GET/galleries
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/galleries/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/galleries/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
generic-pages3
GET/generic-pages
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/generic-pages/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/generic-pages/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
highlights3
GET/highlights
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/highlights/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/highlights/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
hours3
GET/hours
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/hours/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/hours/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
images3
GET/images
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/images/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/images/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
landing-pages3
GET/landing-pages
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/landing-pages/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/landing-pages/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
mobile-sounds3
GET/mobile-sounds
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/mobile-sounds/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/mobile-sounds/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
places3
GET/places
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/places/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/places/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
press-releases3
GET/press-releases
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/press-releases/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/press-releases/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
printed-publications3
GET/printed-publications
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/printed-publications/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/printed-publications/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
products3
GET/products
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/products/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/products/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
publications3
GET/publications
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/publications/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/publications/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
search1
GET/searchSearch all data in the aggregator
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
sections3
GET/sections
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/sections/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/sections/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
sites3
GET/sites
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/sites/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/sites/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
sounds3
GET/sounds
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/sounds/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/sounds/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
static-pages3
GET/static-pages
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/static-pages/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/static-pages/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
texts3
GET/texts
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/texts/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/texts/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
tours3
GET/tours
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/tours/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/tours/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
videos3
GET/videos
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/videos/search
Parameters
NameInRequiredType
qquerynostring
queryquerynostring
sortquerynostring
fromquerynostring
sizequerynostring
facetsquerynostring
Responses
StatusDescriptionSchema
200Successful operation
defaulterror
GET/videos/{id}
Parameters
NameInRequiredType
idpathyes
Responses
StatusDescriptionSchema
200Successful operation
defaulterror

Try it

Developer reference

Base URLhttps://api.artic.edu/api/v1
Rate limit

60 requests/minute for anonymous/unauthenticated users, per api.artic.edu/docs (own API documentation)

Key endpoints
  • GET/artworks
  • GET/artworks/{id}
  • GET/artworks/search

Gotchas & limits

  • ?limit=101 on the collection listing doesn't clamp or 400 — a live GET this run against /artworks?limit=101 returned HTTP 403 with {"status":403,"error":"Invalid limit","detail":"You have requested too many resources per page. Please set a smaller limit."}. Keep limit at 100 or below.
  • A nonexistent artwork id 404s with a structured body, not an empty one — a live GET this run against /artworks/999999999 returned HTTP 404 {"status":404,"error":"Not found","detail":"The item you requested cannot be found."}.
  • /artworks/search results are lean hits, not full records — a live GET this run against /artworks/search?q=seurat&limit=1 returned only {"_score":...,"id":27992,"api_model":"artworks","api_link":"...","title":"...","thumbnail":{...},"timestamp":"..."} per result, with none of the sparse-fieldset fields (artist_display, date_display, image_id) present. A full record needs either ?fields= on the search itself or a follow-up /artworks/{id} fetch.
  • The image is never inline — image_id is a bare UUID with no extension or host; you must combine it with config.iiif_url yourself using IIIF Image API path syntax (see the example note) rather than expecting a direct URL field.
  • You cannot paginate past 10,000 results in the search endpoints, and the ceiling is a hard error rather than an empty page — a live GET this run against /artworks/search?q=painting&limit=10&page=1001 (result 10,010) returned HTTP 403 {"status":403,"error":"Invalid number of results","detail":"You have requested too many results. Please refine your parameters."}, while the same query at page=100 returned 200. Artic's docs direct anyone needing a larger result set to its nightly data dumps instead.

Availability

Uptime100%
Median latency666 ms
Last checkUp · 200 · Sep 2026

4 checks since Aug 2026. A person runs this check by hand, not an automated monitor.

Changelog

Spec version1.15
Tracked paths103
  • Aug 2026gained an OpenAPI spec

Tracking since Sep 2026. See every tracked change ↗ ·Subscribe with RSS ↗