Party data as JSON/JSON-LD

EN

Event data in JSON format

You can get all public event info from goabase.net in JSON format for your use.

We don't use an API key at the moment and you don't need to register to use the API.

If you are looking for a very easy way to embed party events, check out Partyserver.

If you want to publish or reuse the data, please do not remove the backlink to goabase.net. Thank you very much!

And if you have any questions, just get in touch with us: Contact

Syntax/Versions

There are two versions of the syntax:
  • Our own "flat" syntax or
  • JSON-LD according to schema.org.

You can select the version depending on the URL:

https://www.goabase.net/api/party/json/ - Our syntax, version 1
https://www.goabase.net/api/party/jsonld/ - JSON-LD according to schema.org (Ver. 2)

The data

GET parameters for the party list

https://www.goabase.net/api/party/json/?{parameter}={value}
https://www.goabase.net/api/party/jsonld/?{parameter}={value}

Parameter Result
(none) All upcoming events, limited to 500.
country=list-all

Only countries and their number of events.

country={nameCountry} Parties from {nameCountry}.
country={isoCountry} Parties from {isoCountry}.
Iso-Alpha-2 as default value for countries.
eventtype={nameType} Values for {nameType}:
  • festival - Open-air events with a duration of 36 hours or more
  • openair - Small festivals
  • indoor - Larger indoor events
  • club - parties in club locations
  • indoor_outdoor - Events with indoor and outdoor dance floors
  • virtual - Virtual parties
See also
geoloc={nameTown} Party Events 100km around {nameTown}. If you use a place name, we will try to find it in our geolocation database and on Openstreetmap.
limit={number} Set {number} to 50 to get only 50 events.
ll={geoLat,geoLon} Events 100km within a radius of {geoLat,geoLon}.
PID={id} or
{id}
Opens all details of the event with {id}
Instead of api/party/jsonld/?PID={id} you can also use api/party/jsonld/{id}.
radius={radius} Radius in kilometres for the radius search. Default setting: 100
search={search} Finds all party events with {search} in line-up, place name, party name or info. You can use more than one search term.
searchdate={YYYY-MM-DD} Parties that are running at {YYYY-MM-DD}.
status={nameStatus} Values for {nameStatus}:
  • new - New entries in the last seven days
  • update - Updated in the last seven days
  • canceled - Cancelled events
  • postponed - New date, postponed party (we save 1x the old date)
  • new_loc - New or changed location
ver=1|2 API version. ver=1 is our syntax, ver=2 JSON-LD

General notes on our syntax (ver. 1)

We make our JSON object as "flat" as possible.

The key names are inspired by schema.org and written in "camelCase", where the first part describes the data type and the second part describes the data. This should be self-explanatory.

We use "nameType" in a different way than schema.org, as they only differ between"Festival" and"DanceEvent". We use more specifically (for our genre) the types "Festival", "Open Air" (like schema.org/Festival) and "Indoor", 'Club', "In- and Outdoor" (similar to schema.org/DanceEvent).

The content of "urlOrganiser" could be a text with line breaks like \n or \n\r.

Time formats and time zones

We save all events with the time zone Europe/Berlin and return them in ISO 8601 with the difference to UTC. The date and time 16 May 2015, 22:00h in Berlin is returned as 2015-05-16T22:00:00+02:00 and the same date and time in Asia/Calcutta is returned as 2015-06-16T22:00:00+05:30.

But these UTC times cannot be used as the Date.toJson method expects them. The additional specification of a time zone is required to obtain the local time.

Below you will therefore find a small Javascript snippet for reading the date.

When an event is entered on goabase, the time zone is determined and saved. Most countries are in only one time zone, so this is easy to check.

For countries with multiple time zones (e.g. USA, Brazil, Russia) we use geolocation to determine the time zone. This may fail because no lat-lon values are given, or they are not found in the 4.4 million records we take as a basis. In this case, we use the default time zone.

Why all this? If a party starts at 12:00 in Goa, for example, the stored German time 2014-06-14T12:00:00+02:00 would appear in Goa as the start of the party at 15:30. Instead, however, the time for Asia / Calcutta 2014-06-14-14T12:00:00:30:00+05:30 must be used. In any case, it is the local time plus deviation from UTC time.

Javascript

Example of a Javascript function for parsing ISO8601 data with jQuery

// This function was ripped from
// timeago.js (http://timeago.yarp.com/) and requires jQuery(http://jquery.com/)
function parseIso8601(iso8601) {
   var s = $.trim(iso8601);
   s = s.replace(/-/,"/").replace(/-/,"/");
   s = s.replace(/T/," ").replace(/Z/," UTC");
   s = s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
   return new Date(s);
}