Nieuw: Bruggen API

Realtime Nederlandse Bruggen API

Krijg direct toegang tot actuele informatie over alle bruggen in Nederland. Weet precies wanneer een brug open of dicht is met onze betrouwbare API.

Waarom Onze Bruggen API?

De meest complete en betrouwbare bron voor Nederlandse brug informatie

Realtime Updates

WebSocket connecties voor instant updates wanneer een brug opent of sluit. Geen polling nodig, directe notificaties.

Alle Nederlandse Bruggen

Toegang tot meer dan 1000 bruggen in heel Nederland. Van kleine ophaalbruggen tot grote verkeersbruggen.

Historische Data

Analyseer patronen met historische opening/sluitingstijden. Perfect voor route planning en logistiek.

Eenvoudig te Gebruiken

Integreer binnen minuten met onze simpele REST API

# Check status van een specifieke brug
curl -X GET "https://geoapi.nl/v1/bridge/NL.BRIDGE.001/status" \
     -H "X-API-Key: your-api-key"

# Response
{
  "bridge_id": "NL.BRIDGE.001",
  "name": "Magere Brug",
  "status": "open",
  "location": "Amsterdam",
  "coordinates": {
    "latitude": 52.3635,
    "longitude": 4.9023
  },
  "opened_at": "2024-01-24T14:35:00Z",
  "duration_minutes": 12,
  "reason": "Vessel passage",
  "vessel_info": {
    "name": "Princess Margriet",
    "type": "Tour boat"
  }
}
# Haal status van alle bruggen op (Pro/Enterprise)
curl -X GET "https://geoapi.nl/v1/bridges/status" \
     -H "X-API-Key: your-api-key"

# Response
{
  "bridges": [
    {
      "bridge_id": "NL.BRIDGE.001",
      "name": "Magere Brug",
      "status": "closed",
      "location": "Amsterdam"
    },
    {
      "bridge_id": "NL.BRIDGE.002", 
      "name": "Erasmusbrug",
      "status": "open",
      "location": "Rotterdam",
      "opened_at": "2024-01-24T15:10:00Z"
    }
  ],
  "total": 42,
  "open_count": 3
}
// JavaScript WebSocket connectie
const ws = new WebSocket('wss://geoapi.nl/v1/bridge/NL.BRIDGE.001/stream');

// Authenticatie
ws.onopen = () => {
  ws.send(JSON.stringify({
    type: 'auth',
    api_key: 'your-api-key'
  }));
};

// Ontvang realtime updates
ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log('Bridge update:', data);
  // {
  //   "type": "status_change",
  //   "bridge_id": "NL.BRIDGE.001",
  //   "status": "opening",
  //   "timestamp": "2024-01-24T15:35:00Z"
  // }
};

Code voorbeelden:

import requests

# Haal brug status op
response = requests.get(
    "https://geoapi.nl/v1/bridge/NL.BRIDGE.001/status",
    headers={"X-API-Key": "your-api-key"}
)

if response.status_code == 200:
    data = response.json()
    print(f"Bridge {data['name']} is {data['status']}")
    
    if data['status'] == 'open':
        print(f"Opened at: {data['opened_at']}")
        print(f"Expected duration: {data['duration_minutes']} minutes")
else:
    print(f"Error: {response.status_code}")
// Moderne JavaScript met async/await
async function checkBridgeStatus(bridgeId) {
  try {
    const response = await fetch(
      `https://geoapi.nl/v1/bridge/${bridgeId}/status`,
      {
        headers: { 'X-API-Key': 'your-api-key' }
      }
    );
    
    if (!response.ok) throw new Error(`HTTP ${response.status}`);
    
    const data = await response.json();
    console.log(`Bridge ${data.name} is ${data.status}`);
    
    if (data.status === 'open') {
      console.log(`Opened at: ${data.opened_at}`);
      console.log(`Expected duration: ${data.duration_minutes} minutes`);
    }
    
    return data;
  } catch (error) {
    console.error('Error fetching bridge status:', error);
  }
}

// Gebruik
checkBridgeStatus('NL.BRIDGE.001');
<?php
// PHP met error handling
function getBridgeStatus($bridgeId) {
    $ch = curl_init("https://geoapi.nl/v1/bridge/{$bridgeId}/status");
    
    curl_setopt_array($ch, [
        CURLOPT_HTTPHEADER => ['X-API-Key: your-api-key'],
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode === 200) {
        $data = json_decode($response, true);
        echo "Bridge {$data['name']} is {$data['status']}\n";
        
        if ($data['status'] === 'open') {
            echo "Opened at: {$data['opened_at']}\n";
            echo "Expected duration: {$data['duration_minutes']} minutes\n";
        }
        
        return $data;
    } else {
        throw new Exception("API Error: HTTP $httpCode");
    }
}

// Gebruik
try {
    $bridgeData = getBridgeStatus('NL.BRIDGE.001');
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
import java.net.http.*;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;

public class BridgeAPIClient {
    private static final String API_KEY = "your-api-key";
    private static final String BASE_URL = "https://geoapi.nl/v1";
    
    public static void checkBridgeStatus(String bridgeId) {
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(BASE_URL + "/bridge/" + bridgeId + "/status"))
                .header("X-API-Key", API_KEY)
                .header("Accept", "application/json")
                .GET()
                .build();
            
            HttpResponse<String> response = client.send(request, 
                HttpResponse.BodyHandlers.ofString());
            
            if (response.statusCode() == 200) {
                ObjectMapper mapper = new ObjectMapper();
                Map<String, Object> data = mapper.readValue(
                    response.body(), Map.class);
                
                System.out.println("Bridge " + data.get("name") + 
                    " is " + data.get("status"));
                
                if ("open".equals(data.get("status"))) {
                    System.out.println("Opened at: " + data.get("opened_at"));
                    System.out.println("Duration: " + data.get("duration_minutes") + " min");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class BridgeAPIClient
{
    private static readonly HttpClient client = new HttpClient();
    private const string API_KEY = "your-api-key";
    
    public static async Task CheckBridgeStatus(string bridgeId)
    {
        try
        {
            client.DefaultRequestHeaders.Add("X-API-Key", API_KEY);
            
            var response = await client.GetAsync(
                $"https://geoapi.nl/v1/bridge/{bridgeId}/status"
            );
            
            if (response.IsSuccessStatusCode)
            {
                var json = await response.Content.ReadAsStringAsync();
                dynamic data = JsonConvert.DeserializeObject(json);
                
                Console.WriteLine($"Bridge {data.name} is {data.status}");
                
                if (data.status == "open")
                {
                    Console.WriteLine($"Opened at: {data.opened_at}");
                    Console.WriteLine($"Duration: {data.duration_minutes} minutes");
                }
            }
            else
            {
                Console.WriteLine($"Error: {response.StatusCode}");
            }
        }
        catch (Exception e)
        {
            Console.WriteLine($"Exception: {e.Message}");
        }
    }
}
package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

type BridgeStatus struct {
    BridgeID        string `json:"bridge_id"`
    Name            string `json:"name"`
    Status          string `json:"status"`
    Location        string `json:"location"`
    OpenedAt        string `json:"opened_at,omitempty"`
    DurationMinutes int    `json:"duration_minutes,omitempty"`
}

func checkBridgeStatus(bridgeID string) (*BridgeStatus, error) {
    client := &http.Client{}
    
    req, err := http.NewRequest("GET", 
        fmt.Sprintf("https://geoapi.nl/v1/bridge/%s/status", bridgeID), nil)
    if err != nil {
        return nil, err
    }
    
    req.Header.Add("X-API-Key", "your-api-key")
    
    resp, err := client.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()
    
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, err
    }
    
    var status BridgeStatus
    if err := json.Unmarshal(body, &status); err != nil {
        return nil, err
    }
    
    fmt.Printf("Bridge %s is %s\n", status.Name, status.Status)
    
    if status.Status == "open" {
        fmt.Printf("Opened at: %s\n", status.OpenedAt)
        fmt.Printf("Duration: %d minutes\n", status.DurationMinutes)
    }
    
    return &status, nil
}

Gebruik Cases

Ontdek hoe bedrijven onze Bruggen API gebruiken

Navigatie Apps

Waarschuw gebruikers voor open bruggen en bereken alternatieve routes automatisch. Bespaar tijd en brandstof met slimme routeplanning.

Transport & Logistiek

Optimaliseer leveringsroutes door rekening te houden met brugopeningen. Voorkom vertragingen en verbeter klanttevredenheid.

Hulpdiensten

Kritieke informatie voor ambulance, brandweer en politie. Vind de snelste route zonder brugvertragingen.

Toerisme Apps

Informeer toeristen over brugopeningen voor rondvaarten. Plan boottochen optimaal met actuele bruginformatie.

Start Vandaag met Onze Bruggen API

Inclusief in Pro en Enterprise pakketten. Direct aan de slag met realtime brug informatie.

Basic

€9,99/maand

  • ✓ Enkele brug status
  • ✗ Realtime updates
  • ✗ Historische data

Pro Aanbevolen

€29,99/maand

  • ✓ Alle bruggen status
  • ✓ Realtime WebSocket
  • ✗ Historische data

Enterprise

€99,99/maand

  • ✓ Alle bruggen status
  • ✓ Realtime WebSocket
  • ✓ Historische data & analytics
Start Met Pro Pakket →

Veelgestelde Vragen

Hoe actueel is de bruginformatie?

Onze data wordt realtime gesynchroniseerd met officiële bronnen zoals Rijkswaterstaat NDW. Updates komen binnen enkele seconden binnen via onze WebSocket connecties.

Welke bruggen zijn beschikbaar?

We hebben toegang tot alle publiek beschikbare brugdata in Nederland, inclusief provinciale en gemeentelijke bruggen. Meer dan 1000 bruggen totaal.

Kan ik historische data opvragen?

Met een Enterprise pakket heeft u toegang tot historische data en analytics. Perfect voor het analyseren van patronen en het voorspellen van brugopeningen.

Hoeveel API calls zijn inbegrepen?

Brugstatus opvragen telt als normale API call tegen uw maandelijkse limiet. WebSocket connecties tellen niet mee na de initiële verbinding.