Find an API

Search public APIs with auth details & Postman guides

← All APIs

City of Surrey Open511 API

surrey · Data

Data No Auth Free & Open open_data

This API provides real time traffic obstruction events occuring within the City of Surrey.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET GET /areas

Provides the geographical boundaries for all the jurisdictions.

https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/areas?format=json

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/areas?format=json"
import requests
params = {
    "format": "json"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/areas",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/areas');
url.searchParams.set('format', 'json');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/areas")
	q := baseURL.Query()
	q.Set("format", "json")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/areas")
uri.query = URI.encode_www_form({
  "format" => "json"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/areas?" . http_build_query([
    "format" => "json"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET GET /events

Provides real time traffic obstruction events. The event resource provides information about road events (constructions, special events, etc.).

https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/events?bbox=example&format=json&status=example&area_id=example&created=example&updated=example&severity=example&road_name=example&event_type=example&jurisdiction=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/events?bbox=example&format=json&status=example&area_id=example&created=example&updated=example&severity=example&road_name=example&event_type=example&jurisdiction=example"
import requests
params = {
    "bbox": "example",
    "format": "json",
    "status": "example",
    "area_id": "example",
    "created": "example",
    "updated": "example",
    "severity": "example",
    "road_name": "example",
    "event_type": "example",
    "jurisdiction": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/events",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/events');
url.searchParams.set('bbox', 'example');
url.searchParams.set('format', 'json');
url.searchParams.set('status', 'example');
url.searchParams.set('area_id', 'example');
url.searchParams.set('created', 'example');
url.searchParams.set('updated', 'example');
url.searchParams.set('severity', 'example');
url.searchParams.set('road_name', 'example');
url.searchParams.set('event_type', 'example');
url.searchParams.set('jurisdiction', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/events")
	q := baseURL.Query()
	q.Set("bbox", "example")
	q.Set("format", "json")
	q.Set("status", "example")
	q.Set("area_id", "example")
	q.Set("created", "example")
	q.Set("updated", "example")
	q.Set("severity", "example")
	q.Set("road_name", "example")
	q.Set("event_type", "example")
	q.Set("jurisdiction", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/events")
uri.query = URI.encode_www_form({
  "bbox" => "example",
  "format" => "json",
  "status" => "example",
  "area_id" => "example",
  "created" => "example",
  "updated" => "example",
  "severity" => "example",
  "road_name" => "example",
  "event_type" => "example",
  "jurisdiction" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/events?" . http_build_query([
    "bbox" => "example",
    "format" => "json",
    "status" => "example",
    "area_id" => "example",
    "created" => "example",
    "updated" => "example",
    "severity" => "example",
    "road_name" => "example",
    "event_type" => "example",
    "jurisdiction" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET GET /jurisdiction

Lists the jurisdictions publishing data through this Open511 API implementation.

https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/jurisdiction?format=json

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/jurisdiction?format=json"
import requests
params = {
    "format": "json"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/jurisdiction",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/jurisdiction');
url.searchParams.set('format', 'json');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/jurisdiction")
	q := baseURL.Query()
	q.Set("format", "json")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/jurisdiction")
uri.query = URI.encode_www_form({
  "format" => "json"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/surrey.ca/open511/0.1/jurisdiction?" . http_build_query([
    "format" => "json"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with City of Surrey Open511 API?

City of Surrey Open511 API is a Data API. Developers commonly use data APIs for:

  • enriching your app with third-party datasets
  • building data pipelines and ETL workflows
  • querying and searching large datasets
  • powering research, analysis, and reporting tools
  • syncing reference data into your own systems

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. City of Surrey Open511 API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide

Open documentation ↗