Design Museum Gent API
Home
Developers
Policy
Github
Swagger
Home
Developers
Policy
Github
Swagger
  • Overview
  • DCAT
  • Overview
  • Object
  • Objects
  • Exhibition
  • Exhibitions
  • Agent
  • Agents
  • Concept
  • Concepts
  • Colors
  • Types
  • Nationalities
  • Materials

Objects

Info

The objects collection endpoint provides paginated access to all objects in the Design Museum Gent collection. For full metadata on a single object, use the object endpoint.

endpoint:

GET https://data.designmuseumgent.be/v2/id/objects

Parameters

ParameterTypeDefaultDescription
pageinteger1Page number
itemsPerPageinteger10Number of objects per page (max 100)
fullRecordbooleanfalseReturn full CIDOC-CRM records instead of lightweight stubs
modifiedSincedate—Only return records modified on or after this date. Format: YYYY-MM-DD
qstring—Full text search on titles, descriptions and object number
hasImagesbooleanfalseOnly return objects that have a IIIF manifest
hasPartsbooleanfalseOnly return koepelrecords — objects that are composed of a set of member objects
isPartOfbooleanfalseOnly return set members — objects that belong to a koepelrecord
onDisplaybooleanfalseOnly return objects currently on display in the collection presentation
languagestring—Only return objects with a title in the specified language. Supported: NLD, FRA, ENG
typestring—Filter by object type label. Comma-separated for multiple (AND). Use /v2/id/types to discover available values
materialstring—Filter by material label. Comma-separated for multiple (AND). Use /v2/id/materials to discover available values
colorstring—Filter by base color. Comma-separated for multiple (AND). Use /v2/id/colors to discover available values
cssColorstring—Filter by CSS color name. Comma-separated for multiple (AND)
colorsbooleanfalseInclude color data in full records. Requires fullRecord=true
hasColorsbooleanfalseOnly return objects processed by the color tagger
agentstring—Filter by agent PID or full URI. Returns objects where the agent is designer or producer
datestring—Filter by production date range using EDTF interval notation. Format: YYYY/YYYY
dateFrominteger—Only return objects produced from this year onwards
dateTointeger—Only return objects produced up to and including this year
conceptstring—Filter by concept PID or URI — exact match, expands to include narrower concepts
conceptSearchstring—Filter by concept label — searches the thesaurus and expands to narrower concepts
koepelsstring—Set to exclude to hide koepelrecords from results. Useful for image-based browsing where koepelrecords typically have no image
sortBystringobjectNumberField to sort by. Supported: objectNumber, modified, titleNL, titleFR, titleEN, dateBegin, dateEnd
sortOrderstringascSort direction. asc or desc

Filter reference

Full text search — ?q=

Supports natural language search syntax across Dutch, French and English titles, descriptions and object numbers. Titles and object numbers are weighted higher than descriptions.

GET https://data.designmuseumgent.be/v2/id/objects?q=roze+glas&hasImages=true
GET https://data.designmuseumgent.be/v2/id/objects?q="opaalglas"&fullRecord=true
GET https://data.designmuseumgent.be/v2/id/objects?q=glas+OR+keramiek

By agent — ?agent=

Returns all objects where the specified agent appears as designer (crm:P94i_was_created_by) or producer (crm:P108i_was_produced_by). Accepts PID or full URI:

GET https://data.designmuseumgent.be/v2/id/objects?agent=DMG-A-00162
GET https://data.designmuseumgent.be/v2/id/objects?agent=DMG-A-00162&hasImages=true&fullRecord=true

By production date — ?date=, ?dateFrom=, ?dateTo=

Filters by production or creation date using overlap logic — an object is returned when its production period overlaps the requested range. EDTF uncertainty markers are stripped before storing.

GET https://data.designmuseumgent.be/v2/id/objects?date=1950/1969
GET https://data.designmuseumgent.be/v2/id/objects?dateFrom=1950&dateTo=1969
GET https://data.designmuseumgent.be/v2/id/objects?dateFrom=1900
GET https://data.designmuseumgent.be/v2/id/objects?date=1920/1940&agent=DMG-A-00162

Info

Objects with no recorded production or creation date are excluded from date-filtered results.

By color — ?color=, ?cssColor=

Colors are extracted from digital images using background removal, KMeans clustering and LAB color distance matching.

Available base colors: red orange yellow green blue purple pink brown grey black white

GET https://data.designmuseumgent.be/v2/id/objects?color=pink
GET https://data.designmuseumgent.be/v2/id/objects?color=pink,grey
GET https://data.designmuseumgent.be/v2/id/objects?cssColor=Old+rose
GET https://data.designmuseumgent.be/v2/id/objects?hasColors=true&colors=true&fullRecord=true

Use /v2/id/colors to discover available CSS color names and collection statistics.

By type and material

GET https://data.designmuseumgent.be/v2/id/objects?type=vaas
GET https://data.designmuseumgent.be/v2/id/objects?type=vaas,bord
GET https://data.designmuseumgent.be/v2/id/objects?material=glas+%28materiaal%29
GET https://data.designmuseumgent.be/v2/id/objects?type=vaas&material=glas+%28materiaal%29&onDisplay=true

By concept — ?concept=, ?conceptSearch=

Both parameters automatically expand to include narrower concepts from the thesaurus hierarchy via recursive CTE.

# exact match by PID
GET https://data.designmuseumgent.be/v2/id/objects?concept=530000049

# search by label — expands to narrower concepts
GET https://data.designmuseumgent.be/v2/id/objects?conceptSearch=stoel
GET https://data.designmuseumgent.be/v2/id/objects?conceptSearch=glas&hasImages=true

Concepts are matched across object types, materials, techniques and sub-collections.

Object hierarchy — ?hasParts=, ?isPartOf=

?hasParts=true returns koepelrecords — objects that are administratively composed of a set of member objects (e.g. a cutlery service, a series). On these records the response includes crm:P106_is_composed_of listing all members.

?isPartOf=true returns the individual set members. On these records the response includes crm:P46i_forms_part_of pointing to the parent koepelrecord.

Note that crm:P46_has_component on any object expresses something different — the named physical parts (fysiekeOnderdelen) that physically constitute the object, such as individual ceramic forms or a wooden box. These are always present when recorded, regardless of koepelrecord status.

GET https://data.designmuseumgent.be/v2/id/objects?hasParts=true
GET https://data.designmuseumgent.be/v2/id/objects?isPartOf=true

Excluding koepelrecords — ?koepels=exclude

By default the collection includes koepelrecords alongside individual objects. Pass koepels=exclude to hide them — useful for image-based browsing interfaces where koepelrecords typically carry no IIIF image of their own.

GET https://data.designmuseumgent.be/v2/id/objects?koepels=exclude
GET https://data.designmuseumgent.be/v2/id/objects?koepels=exclude&hasImages=true&fullRecord=true

Tips

To browse only koepelrecords, use ?hasParts=true instead. To browse only the individual members of sets, use ?isPartOf=true.

Sorting — ?sortBy=, ?sortOrder=

By default results are sorted by objectNumber ascending. Use sortBy and sortOrder to change this.

sortBy valueSorts onNotes
objectNumberObject numberDefault
modifiedLast modification dateUse with sortOrder=desc to get recently updated objects first
titleNLDutch titleObjects without a Dutch title appear last
titleFRFrench titleObjects without a French title appear last
titleENEnglish titleObjects without an English title appear last
dateBeginStart of production date rangeObjects with no recorded date appear last
dateEndEnd of production date rangeObjects with no recorded date appear last
# most recently modified first
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=modified&sortOrder=desc

# alphabetical by Dutch title
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=titleNL&hasImages=true

# oldest objects first
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=dateBegin&sortOrder=asc

# most recently modified, full records
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=modified&sortOrder=desc&fullRecord=true&itemsPerPage=25

Info

Sorting is not applied on ?agent= queries — those results are returned in object number order from the RPC.

Language — ?language=

Returns only objects with a title in the specified language. Useful for identifying translation gaps:

GET https://data.designmuseumgent.be/v2/id/objects?language=FRA
GET https://data.designmuseumgent.be/v2/id/objects?language=ENG&itemsPerPage=1

Incremental harvesting — ?modifiedSince=

GET https://data.designmuseumgent.be/v2/id/objects?modifiedSince=2026-05-01&fullRecord=true&itemsPerPage=50

Active filters are preserved in all Hydra pagination links. An invalid date format returns 400 Bad Request.


Response format

Data is returned as a Hydra Collection with CIDOC-CRM members.

CodeDescription
200Successful request
400Invalid modifiedSince date format
500Server error

Pagination — hydra:view

All active filters are preserved in pagination links. An RFC 8288 Link header is also included on every response.

Harvesting the full collection

async function harvest(url) {
    const res = await fetch(url)
    const data = await res.json()

    // process data["hydra:member"]

    if (data["hydra:view"]["hydra:next"]) {
        await new Promise(r => setTimeout(r, 250)) // polite delay
        await harvest(data["hydra:view"]["hydra:next"])
    }
}

harvest('https://data.designmuseumgent.be/v2/id/objects?fullRecord=true&itemsPerPage=50')

Members — hydra:member

Lightweight stub (default)

FieldDescription
@idInternal DMG URI — resolvable to full record
@typeAlways crm:E22_Human-Made_Object
rdfs:labelDutch title
crm:P129i_is_subject_ofIIIF manifest link if available

Full record (?fullRecord=true)

Each member contains the complete CIDOC-CRM JSON-LD record — identical in structure to the single object endpoint. Includes production and creation events, acquisition, materials, dimensions, physical parts with their own dimensions, set composition, sub-collection membership, exhibitions, color data and IIIF images.

Info

Merged and permanently removed objects are automatically excluded from collection responses.

Performance

Full records return significantly larger payloads. Keep itemsPerPage at 50 or lower to avoid timeouts.


Example response (lightweight)

{
  "@context": {
    "crm": "http://www.cidoc-crm.org/cidoc-crm/",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "hydra": "http://www.w3.org/ns/hydra/core#",
    "owl": "https://www.w3.org/2002/07/owl#"
  },
  "@id": "https://data.designmuseumgent.be/v2/id/objects",
  "@type": "hydra:Collection",
  "hydra:totalItems": 8423,
  "hydra:view": {
    "@id": "https://data.designmuseumgent.be/v2/id/objects?page=1&itemsPerPage=10",
    "@type": "hydra:PartialCollectionView",
    "hydra:first": "https://data.designmuseumgent.be/v2/id/objects?page=1&itemsPerPage=10",
    "hydra:last": "https://data.designmuseumgent.be/v2/id/objects?page=843&itemsPerPage=10",
    "hydra:next": "https://data.designmuseumgent.be/v2/id/objects?page=2&itemsPerPage=10"
  },
  "hydra:member": [
    {
      "@id": "https://data.designmuseumgent.be/v2/id/object/1987-1105",
      "@type": "crm:E22_Human-Made_Object",
      "rdfs:label": "Beeldje van een vis in opaalglas",
      "crm:P129i_is_subject_of": {
        "@id": "https://api.collectie.gent/iiif/presentation/v2/manifest/dmg:1987-1105",
        "@type": "crm:E73_Information_Object"
      }
    },
    {
      "@id": "https://data.designmuseumgent.be/v2/id/object/2016-0017",
      "@type": "crm:E22_Human-Made_Object",
      "rdfs:label": "Artefacts of a New History",
      "crm:P129i_is_subject_of": {
        "@id": "https://api.collectie.gent/iiif/presentation/v2/manifest/dmg:2016-0017",
        "@type": "crm:E73_Information_Object"
      }
    }
  ]
}
Last Updated:: 6/12/26, 12:44 PM
Contributors: Olivier.VanD'huynslager
Prev
Object
Next
Exhibition