Location vs Venue
When to model something as a Location (LOCATIE) vs a Venue — the easy-to-confuse distinction
Location (LOCATIE) and Venue (VENUE) are the two entity types that describe physical places in the Event Connectors API. They share most of the same structure, which makes them easy to confuse — but they describe quite different things.
Quick rule
LOCATIEis a point of interest: somewhere people go because that place itself is the destination (a museum, a park, a monument, a beach). It can have opening hours, an address, photos, descriptions.VENUEis a B2B event location: somewhere with the facilities to host larger corporate gatherings — congresses, conferences, multi-day company events. Hotels with conference rooms, dedicated congress centres, business event spaces.
A restaurant or shop is not a Venue. A small concert hall that mainly hosts public events is not a Venue either. "VENUE" specifically signals "this place is set up for B2B event planners."
When to use which
| Use case | Entity type | Why |
|---|---|---|
| Museum, park, monument, viewpoint, beach | LOCATIE | It's a destination / point of interest |
| Restaurant, shop, café | LOCATIE (with appropriate categories) | It's a public-facing business, not a B2B event location |
| Congress centre, conference hotel | VENUE | It's set up for B2B event hosting |
| Hotel that rents meeting rooms to companies | VENUE | Same — even if the hotel is also a regular hotel |
| Wedding-and-corporate event space | VENUE | Hosts B2B events |
| Concert hall (public concerts only) | LOCATIE | Not a B2B event venue |
What's different on a Venue
Venues carry properties that are specifically meaningful to B2B event planners. These are stored as trcItemCategories.categories on the TRCItem and are surfaced in the venue UI as headline numbers:
| Property | Meaning |
|---|---|
| Maximum group size | Largest event the venue can host (people) |
| Minimum group size | Smallest event the venue accepts |
| Maximum capacity | Headline capacity number |
| Minimum capacity | Floor on bookable size |
| Number of rooms | Total bookable meeting rooms |
| Total surface area | Aggregate event-space square-metres |
A LOCATIE does not typically carry these — they're meaningless for a museum or a beach.
Rooms on Venues
A real B2B venue is rarely "one big room" — it's usually a building with several meeting spaces, each with its own dimensions and capacity per setup style. The Event Connectors model captures these as rooms inside the venue.
Rooms are stored on the venue's trcitemRelation field, as entries in trcitemRelation.subItemGroups. (The TRCItemRelation / subItemGroup naming is historical — these are the rooms.) Each room carries:
trcid— stable identifier for the roomsubItemTranslations[]— the room's name in each language ({ lang, title })categories[]— the room's properties: surface area, max capacity, capacity in theater / U-shape / cabaret / reception / seated-dinner setups, ceiling height, etc.media[]— photos and floor plans of the roomtype— typology of the room
Example: Hotel NH Zandvoort
A real venue from the production API. The venue has 8 meeting rooms across 4 named series (Boulevard, Dune, Ocean, Sunrise) with sub-divisions:
{
"entitytype": "VENUE",
"trcid": "84444bd5-3a6f-4b93-bf1e-560b557559ee",
"trcItemDetails": [{ "lang": "nl", "title": "Hotel NH Zandvoort" }],
"trcItemCategories": {
"categories": [
{ "catid": "5.32", "value": "250", "datatype": "integer" },
{ "catid": "5.33", "value": "8", "datatype": "integer" },
{ "catid": "5.4", "value": "16", "datatype": "integer" }
]
},
"trcitemRelation": {
"subItemGroups": [
{
"trcid": "e428ab48-9639-4430-9e28-b3d9ef2ff3d7",
"subItemTranslations": [
{ "lang": "nl", "title": "Boulevard 1-2" },
{ "lang": "en", "title": "Boulevard 1-2" }
],
"categories": [
{ "catid": "5.1", "value": "120", "datatype": "decimal" },
{ "catid": "5.15", "value": "80", "datatype": "integer" },
{ "catid": "5.19", "value": "52", "datatype": "integer" },
{ "catid": "5.20", "value": "56", "datatype": "integer" },
{ "catid": "5.21", "value": "48", "datatype": "integer" },
{ "catid": "5.22", "value": "80", "datatype": "integer" },
{ "catid": "5.24", "value": "32", "datatype": "integer" }
]
}
]
}
}The venue itself reports Maximum capacity: 250, Minimum group size: 8, Number of rooms: 16. The "Boulevard 1-2" room reports Surface: 120 m², Maximum group size: 80 people, plus capacities in each setup style: Reception: 52, Seated dinner: 56, Cabaret: 48, Theater: 80, U-shape: 32.
Reading rooms from the API
To get a venue with all its rooms, fetch the venue and walk trcitemRelation.subItemGroups:
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://app.eventconnectors.nl/api/venues/{id}const res = await fetch(
`https://app.eventconnectors.nl/api/venues/${id}`,
{ headers: { Authorization: "Bearer YOUR_API_TOKEN" } },
);
const venue = await res.json();
const rooms = venue.trcitemRelation?.subItemGroups ?? [];
for (const room of rooms) {
const name = room.subItemTranslations?.find((t) => t.lang === "en")?.title;
const surface = room.categories?.find((c) => c.catid === "5.1")?.value;
console.log(`${name}: ${surface} m²`);
}Structural differences (summary)
| Aspect | LOCATIE | VENUE |
|---|---|---|
entitytype value | LOCATIE | VENUE |
| Endpoint | GET /locations | GET /venues |
| Headline capacity properties | rare / absent | yes (max/min capacity, group size, room count, surface area) |
Rooms (trcitemRelation.subItemGroups) | rare | yes — first-class concept |
| Allowed link types | alias, comment | comment |
Both share the base TRCItem fields (trcItemDetails, calendar, contactinfo, files, location, trcItemCategories, translations, seoMetadata).
Events reference Locations and Venues
Events (EVENEMENT) reference the location they take place at via the locationRef field. The referenced ID can point at either a LOCATIE or a VENUE — events held at congress centres reference the venue.
See the API Reference for the full Location and Venue schema definitions.