Support for event metadata on event websites
Updated Example
Here is the most recent example of event metadata that I think we should recommend conference organizers to include on their conference website.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ConferenceEvent",
"name": "EuroPython 2025",
"url": "https://ep2025.europython.eu",
"startDate": "2025-07-14",
"endDate": "2025-07-20",
"location": {
"@type": "PostalAddress",
"name": "The Prague Congress Centre",
"addressCountry": "CZ"
},
"hasParticipationOffer": {
"@type": "Offer",
"name": "Call for Proposals",
"url": "https://ep2025.europython.eu/cfp/",
"availabilityEnds": "2025-02-03"
},
"hasSponsorshipOffer": {
"@type": "Offer",
"name": "Sponsor Packages",
"url": "https://ep2025.europython.eu/sponsorship/sponsor/"
}
}
</script>
https://github.com/schemaorg/schemaorg/pull/4506/files
Original Proposal
It would be great if there were a standardized way for an event website to provide machine-readable information about itself.
- Option 1: Use HTML meta tags on the event homepage
- Option 2: Use a JSON file such as https://us.pycon.org/2025/event.json
Is there a way that we could encourage event organizers to use one of the two options below?
Is there any other metadata that we should ask organizers to include?
@Mariatta @jonafato @chrisjrn
Option 1: Use HTML meta tags on the event homepage
<meta name="event-name" content="PyCon US">
<meta name="event-start-date" content="2025-05-14">
<meta name="event-end-date" content="2025-05-22">
<meta name="event-location" content="Pittsburgh, Pennsylvania, United States of America">
<meta name="event-country" content="USA">
<meta name="event-venue" content="David L. Lawrence Convention Center">
<meta name="event-proposal-deadline" content="2024-12-19">
<meta name="event-proposal-uri" content="https://us.pycon.org/2025/speaking/guidelines/">
<meta name="event-sponsorship-uri" content="https://us.pycon.org/2025/sponsorship/why-sponsor/">
Option 2: Use a JSON file such as https://us.pycon.org/2025/event.json
{
"event-name": "PyCon US",
"event-start-date": "2025-05-14",
"event-end-date": "2025-05-22",
"event-location": "Pittsburgh, Pennsylvania, United States of America",
"event-country": "USA",
"event-venue": "David L. Lawrence Convention Center",
"event-proposal-deadline": "2024-12-19",
"event-proposal-uri": "https://us.pycon.org/2025/speaking/guidelines/",
"event-sponsorship-uri": "https://us.pycon.org/2025/sponsorship/why-sponsor/",
}
This is more or less a duplicate of #89
@webknjaz I don't think this is a duplicate of #89.
#89 is about providing and maintaining an event aggregation website listing multiple events.
#266 (this issue) is about asking individual conference websites to provide machine-readable information, in order to make it easier for aggregation scripts to collect information about each conference.
@invisibleroads You may want to take a look at https://schema.org/Event, but I can certainly see how one might do something useful with some structured data from organisers
Oh, I missed that. Makes sense. I wonder if there's prior art, like robots.txt / humans.txt / llms.txt..
In my archival work, I've definitely seen one website that implemented an API, but I can't remember which one for the life of me...
@webknjaz I believe conventionally you would embed the metadata in the URL for the event itself (e.g. the home page of the event site) cf. https://developers.google.com/search/docs/appearance/structured-data/event
Though there's some interesting stuff at https://schema.org/docs/feeds.html and https://github.com/schemaorg/schemaorg/issues/2891 about aiding discoverability through feeds etc.
Edit: Quick PoC for PyCon UK 2025 at https://github.com/PyconUK/2025.pyconuk.org/pull/68
I believe conventionally you would embed the metadata in the URL for the event itself
I don't think this would work well for embedding a few additional URLs, though.
Sorry, typo, at the URL - rather than in another file - i.e. "the URL for PyCon UK 2025" is https://2025.pyconuk.org/ so put the metadata in the content served there, rather than at some other URL as mentioned in https://github.com/python-organizers/conferences/issues/266#issuecomment-3226984675
Ah, right. That might work.
https://developers.google.com/search/docs/appearance/structured-data/event#example
I didn't know event metadata was already supported and being used by most search engines. @doismellburning Thanks for sharing the Google Developers link to the structured data example.
It seems like we can make a schema.org pull request in https://github.com/schemaorg/schemaorg for an event subtype, perhaps called ConferenceEvent, so that we can include information about proposal deadlines, proposal uris, sponsorship uris and anything else that would be of interest to conference participants.
I'll think some more about it and make the pull request to schemaorg this week.
Here is a proposed mapping of CSV fields to Schema.org Event fields:
- Subject = name https://schema.org/name
- Start Date = startDate https://schema.org/startDate
- End Date = endDate https://schema.org/endDate
- Location = location https://schema.org/location
- Country = location/address/addressCountry https://schema.org/addressCountry
- Venue = location/name https://schema.org/name
- Tutorial Deadline = proposal/deadline (new schema type: proposal)
- Talk Deadline = proposal/deadline (new schema type: proposal)
- Proposal Deadline = proposal/deadline (new schema type: proposal)
- Website URL = url https://schema.org/url
- Proposal URL = proposal/url (new schema type: proposal)
- Sponsorship URL = sponsorship/url (new schema type: sponsorship)
I thought about using Event/sponsor/url for Sponsorship URL, but I think Event/sponsor is for one specific sponsor, not for general propositioning of a sponsorship prospectus.
Next Steps
- [x] Draft schema.org type ConferenceEvent in https://schema.org/Event
- [x] Draft schema.org property proposal
- [x] Draft schema.org property sponsorship
Here is the most recent example of event metadata that I think we should recommend conference organizers to include on their conference website.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ConferenceEvent",
"name": "EuroPython 2025",
"url": "https://ep2025.europython.eu",
"startDate": "2025-07-14",
"endDate": "2025-07-20",
"location": {
"@type": "PostalAddress",
"name": "The Prague Congress Centre",
"addressCountry": "CZ"
},
"hasParticipationOffer": {
"@type": "Offer",
"name": "Call for Proposals",
"url": "https://ep2025.europython.eu/cfp/",
"availabilityEnds": "2025-02-03"
},
"hasSponsorshipOffer": {
"@type": "Offer",
"name": "Sponsor Packages",
"url": "https://ep2025.europython.eu/sponsorship/sponsor/"
}
}
</script>
https://github.com/schemaorg/schemaorg/pull/4506/files