CivicStructure
CivicStructure is a Place subtype for public structures: town halls, concert halls, airports, bus stations, bridges, cemeteries, parks, schools, stadiums. It adds one direct property: openingHours (Text, using the two-letter day code + 24-hour time format).
It has around 30 direct subtypes covering transportation (Airport, BoatTerminal, BusStation, SubwayStation, TrainStation), cultural institutions (Museum, MusicVenue, MovieTheater, StadiumOrArena, Zoo, Aquarium), public infrastructure (Bridge, Beach, Cemetery, FireStation, PoliceStation, GovernmentBuilding), and more.
Full example of schema.org/CivicStructure json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CivicStructure",
"name": "Dunmore Community Center",
"description": "Multi-purpose civic building housing the Dunmore municipal offices, a community meeting hall, and a rotating gallery of Lackawanna Valley artists.",
"address": { "@type": "PostalAddress", "streetAddress": "22 Main St", "addressLocality": "Dunmore", "addressRegion": "PA", "postalCode": "18512", "addressCountry": "US" },
"telephone": "+1-570-555-0177",
"openingHours": "Mo-Fr 08:30-17:00, Sa 09:00-13:00",
"geo": { "@type": "GeoCoordinates", "latitude": 41.4267, "longitude": -75.6324 },
"photo": "https://xoocode.com/dunmore/community-center.jpg",
"isAccessibleForFree": true
}
</script>openingHours format
Use two-letter day codes (Mo, Tu, We, Th, Fr, Sa, Su) followed by a 24-hour time range: "Mo-Fr 09:00-17:00". Multiple ranges separate with comma: "Mo-Fr 09:00-12:00, Mo-Fr 13:00-17:00". For richer schedules (holidays, seasonal), prefer OpeningHoursSpecification.
When to use bare CivicStructure
Rarely. There is almost always a more specific subtype. Use bare CivicStructure only when the structure does not fit any of the 30 subtypes (an unusual civic installation, a historical building whose function has changed).
Minimal valid version
The smallest markup that still produces a valid CivicStructure entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CivicStructure",
"name": "Dunmore Community Center",
"openingHours": "Mo-Fr 08:30-17:00"
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsLocal business / place knowledge panel (when applicable)
Common CivicStructure mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
openingHours as free text
Wrong"openingHours": "Monday through Friday 8:30am - 5pm"Right"openingHours": "Mo-Fr 08:30-17:00"openingHours uses a compact machine-parseable format: two-letter day codes + 24-hour time ranges. Free text is silently dropped.
- 02
Using CivicStructure when a subtype fits
WrongCivicStructure for an airport or museumRightAirport / Museum / TrainStation / Bridge, whichever matchesSpecific subtypes carry search-specific signals. Google's place cards and knowledge panels key on the specific type.
Schema properties in this example
About the example data
The Dunmore Community Center, a civic building in Dunmore, PA used for elections, community meetings, and rotating art exhibitions.
Comments
Loading comments...