Canada Data API Documentation

Overview

Base URL

http://your-domain.com/api.php

This API provides GET endpoints for accessing Canada data with comprehensive filtering and search capabilities.

Authentication

!

Important: All API endpoints require authentication. You must be logged in to the application to access the API.

Response Format

Success Response

{
  "success": true,
  "count": 10,
  "data": [...]
}

Error Response

{
  "error": "Error message description"
}

Available Endpoints

GET

Provinces

Retrieves all Canadian provinces and territories.

Endpoint

GET /api.php?endpoint=provinces

Parameters

None

Example Response

{
  "success": true,
  "count": 13,
  "data": [
    {
      "pruid": "10",
      "prname": "Newfoundland and Labrador"
    },
    {
      "pruid": "11",
      "prname": "Prince Edward Island"
    }
  ]
}
GET

Census Divisions

Retrieves census divisions with optional filtering.

Endpoint

GET /api.php?endpoint=census-divisions

Parameters

Parameter Type Required Description
pruid string No Province ID to filter by
cduid string No Specific Census Division ID to retrieve
limit integer No Maximum number of results (default: 100, max: 1000)

Example Requests

GET /api.php?endpoint=census-divisions
GET /api.php?endpoint=census-divisions&pruid=10
GET /api.php?endpoint=census-divisions&cduid=1001
GET /api.php?endpoint=census-divisions&pruid=10&limit=50
GET

Addresses

Retrieves addresses with various filtering options.

Endpoint

GET /api.php?endpoint=addresses

Parameters

Note: At least one filter parameter is required.

Parameter Type Required Description
cduid string No* Census Division ID to filter by
csduid string No* Census Subdivision ID to filter by
city string No* City name (partial match, case-insensitive)
street string No* Street name (partial match, case-insensitive)
postcode string No* Postal code (partial match, case-insensitive)
limit integer No Maximum number of results (default: 100, max: 1000)

* At least one of these parameters is required

Example Requests

GET /api.php?endpoint=addresses&cduid=1001
GET /api.php?endpoint=addresses&city=Toronto
GET /api.php?endpoint=addresses&street=Main Street
GET /api.php?endpoint=addresses&postcode=M5V

HTTP Status Codes

Code Status Description
200 OK Request successful
400 Bad Request Invalid parameters or missing required parameters
401 Unauthorized Not logged in
404 Not Found Endpoint not found
405 Method Not Allowed Non-GET request
500 Internal Server Error Server error

Usage Examples

JavaScript (Fetch API)

// Get all provinces
fetch('/api.php?endpoint=provinces')
  .then(response => response.json())
  .then(data => {
    if (data.success) {
      console.log('Provinces:', data.data);
    } else {
      console.error('Error:', data.error);
    }
  });

// Get addresses in Toronto
fetch('/api.php?endpoint=addresses&city=Toronto&limit=10')
  .then(response => response.json())
  .then(data => {
    if (data.success) {
      console.log('Addresses:', data.data);
    } else {
      console.error('Error:', data.error);
    }
  });

cURL

# Get all provinces
curl "http://your-domain.com/api.php?endpoint=provinces"

# Get census divisions for Ontario
curl "http://your-domain.com/api.php?endpoint=census-divisions&pruid=35"

# Get addresses in Vancouver
curl "http://your-domain.com/api.php?endpoint=addresses&city=Vancouver&limit=20"

Python

import requests

# Get all provinces
response = requests.get('http://your-domain.com/api.php?endpoint=provinces')
data = response.json()

if data['success']:
    print(f"Found {data['count']} provinces")
    for province in data['data']:
        print(f"- {province['prname']} (ID: {province['pruid']})")
else:
    print(f"Error: {data['error']}")

Notes

Rate Limiting

Currently, there are no rate limits implemented, but it's recommended to use appropriate limit parameters to avoid large responses, cache responses when possible, and make requests only when necessary.

Data Sources

  • Provinces: Extracted from csd_list table
  • Census Divisions: Extracted from csd_list table
  • Addresses: Extracted from addresses_ca table

Technical Details

  • All geographic coordinates are returned in WGS84 (EPSG:4326) format
  • Address searches are case-insensitive and support partial matching
  • The maximum limit for any endpoint is 1000 records
  • All endpoints require authentication (login session)