GET
/
subscriptions
curl --request GET \
  --url https://jotihunt.nl/api/2.0/subscriptions
{
  "data": [
    {
      "name": "<string>",
      "accomodation": "<string>",
      "street": "<string>",
      "housenumber": 123,
      "housenumber_addition": "<string>",
      "postcode": "<string>",
      "city": "<string>",
      "lat": "<string>",
      "long": "<string>",
      "photo_assignment_points": 123,
      "area": "<string>"
    }
  ]
}

Some years the Jotihunt team decides to not publish to which area a group is assigned. In that case the area field will be null. This is not a bug. The last time this happened was in 2024.

When there is no area assigned to a group, it’s a good idea to visit the group and ask them to which area they are assigned.

Use Cases

The /subscriptions endpoint allows you to retrieve information about scouting groups that are subscribed (compeeting) to the Jotihunt event. Common use cases include:

  • Team Overview: View all participating scouting groups and their locations
  • Points Tracking: Monitor photo assignment points for different groups
  • Area Management: Check which areas are assigned to which groups
  • Location Based Features: Build location-aware features using group coordinates

Code Examples

// Using fetch to retrieve and display scouting group subscriptions
fetch('https://jotihunt.nl/api/subscriptions')
  .then(response => response.json())
  .then(response => {
    const data = response.data;
    console.log(`Found ${data.length} scouting groups`);
    
    // Example: Group subscriptions by city
    const groupsByCity = data.reduce((acc, sub) => {
      (acc[sub.city] = acc[sub.city] || []).push(sub);
      return acc;
    }, {});
    
    // Display subscriptions grouped by city
    Object.entries(groupsByCity).forEach(([city, groups]) => {
      console.log(`\n${city} (${groups.length} groups):`);
      groups.forEach(group => {
        console.log(`  - ${group.name}`);
        console.log(`    Address: ${group.street} ${group.housenumber}${group.housenumber_addition || ''}`);
        console.log(`    Points: ${group.photo_assignment_points || 0}`);
        if (group.area) console.log(`    Area: ${group.area}`);
      });
    });
    
    // Find groups with the most photo assignment points
    const topGroups = [...data]
      .filter(group => group.photo_assignment_points != null)
      .sort((a, b) => b.photo_assignment_points - a.photo_assignment_points)
      .slice(0, 3);
      
    console.log('\nTop 3 groups by points:');
    topGroups.forEach(group => 
      console.log(`${group.name}: ${group.photo_assignment_points} points`)
    );
  })
  .catch(error => {
    console.error('Error fetching subscriptions:', error);
  });

Query Parameters

limit
integer

The maximum number of results to return

Response

200
application/json

Subscription response

The response is of type object.