Canadian Schools Database - Basic

Retail

Summary

A comprehensive database consisting of the location, type and contact information for private, public, and Indigenous schools in Canada.

This is a sample visualization of a small subset of this data product.
Loading...
Charts of Canadian Schools Database - Basic

Key Features

  • Updated quarterly
  • Includes job titles for curriculum and decision making contacts
  • Complete school listing for all of Canada
  • Includes all school districts and education ministries for Canada
  • Email addresses are available upon request at an additional cost, pending usage approval

Documentation

Applications

  • Direct mail and email to schools and staff for marketing solutions and lead creation
  • Postal code data for geographic analytics
  • Student enrollment data for analytical purposes
  • Catchment data for real estate assessment and analysis

Overview

Database Directories offers a comprehensive database of Canadian schools that includes 17K+ public, private, and Indigenous schools, as well as district and ministry information for all of Canada.

The data fields include contact information such as address and phone numbers, as well as contact information for relevant staff, and student enrollment data. The database is structured in such a way as to allow users to easily sort and filter schools by grade or province, among other options.

Data Products

1- Canadian Schools - Basic: The Basic dataset includes each school, ministry, and district’s name, address, phone number, fax number, a primary contact name (ie: Principal, Superintendent, etc.), website address, grade levels, student enrollment numbers, and a language indicator, all where available.

2- Canadian Schools - Enhanced: The Enhanced dataset offers all the data included in the basic option, but also includes all secondary staff contacts at each entry, where available. Contacts can included curriculum and administration contacts and ministries and districts, as well as Principals, Vice-Principals, and Secretaries at schools.

Dataset Statistics in Basic and Enhanced Data Products

Province Number of Schools (Basic) Number of Staff Contacts (Extended)
Alberta 2,250 6,516
British Columbia 2,014 7,419
Manitoba 1,003 2,783
New Brunswick 336 1,421
Newfoundland and Labrador 278 1,176
Nova Scotia 432 1,759
Northwest Territories 61 306
Nunavut 50 86
Ontario 6,255 19,595
Prince Edward Island 77 461
Quebec 3,514 12,064
Saskatchewan 923 2,914
Yukon 36 130
Grand Total 17,229 56,630

Number of Schools by Type in the Data Product

Type Number of Schools
1: Ministry or District offices 617
A: Grades Preschool to 6 5,605
B: Grades Preschool to 8 4,793
C: Grades Preschool to 12 2,445
D: Grades 7-8 82
E: Grades 7-12 1,269
F: Grades 9-12 1,445
I: Special Education schools 371
J: Adult Education Schools 602
Grand Total 17,229

Coverage

  • Includes all school types: public, private, and Indigenous
  • All provinces and territories
  • All ministries and districts
  • Contains contact information (address, phone, fax)
  • Contains job titles (Principal, etc.)

Methodology

  • Data is provided by ministries and school districts
  • Data is gathered by conducting phone calls and sending emails to verify data
  • Updated regularly throughout the year, major updates occur before new school year begins

Dictionary

Filter
Column
Title
Data Type
Description
province_and_school_typePROVINCE AND SCHOOL TYPETextA key dimension column which is created by merging province (prov) and school type (type2) columns
idIDTextThe unique ID created for each record in order to quickly identify an entry
recordRECORDTextEither designated as 1 or 2 to identify a primary or secondary contact. 1: Primary Contact, 2: Secondary Contact.
nameNAMETextThe name of the institution.
add1ADD1TextThe first address field. This normally contains the mailing address, if available and/or applicable.
add2ADD2TextAny secondary address information that may be relevant. If the mailing and physical address are both available, the physical information is entered in this field.
cityCITYTextThe city in which the institution is found.
provPROVTextThe province in which the institution is found.
codeCODETextThe postal code in which the institution is found.
phonePHONETextThe primary phone number.
phone2PHONE2TextAny secondary phone number, if applicable.
faxFAXTextThe primary fax number.
fax2FAX2TextAny secondary fax number, if applicable.
websiteWEBSITETextThe associated website for the institution.
job_titleJOB TITLETextThe formal title of the individual associated with he FIRST NAME and LAST NAME fields, explained below.
first_nameFIRST NAMETextThe first name of the individual.
last_nameLAST NAMETextThe last name of the individual.
specSPECTextAny important details pertaining to the record. For schools, a break down of the grade ranges taught is always listed (grades 6-12, for example). Any languages taught, programs offered, or religious denominations are also listed in this field. For Ministry offices, rather than a grade range being listed, the code “BD-M” is entered. For District offices, “BD” is listed.
enrENRFloatThe student enrollment at each school. For Boards, it is the total number of students for the entire board. For Ministries, it is the entire number of students enrolled for the Province.
type1TYPE1TextThis field contains a code used to sort and filter out schools by a specific type, province, and district. This field ensures that all Schools, Districts, and ID codes that are associated with one another are correlated together. You can use this code to filter and target all schools associated with the same District. The format for these codes is “X-Y” where X is a two digit number assigned to each province and Y is a unique code generated for each district. For example, in Quebec the format is “10-X”; the “Central Quebec School Board” and all associated schools are listed as “10-001”. Private schools are always listed as “X-PS” and Indigenous schools are always listed as “X-FN”. In certain cases, some Private Schools and Indigenous schools are a part of a larger organization. In that event, a number is assigned along with the institution type. For example, the Mamu Tshishkutamashutau Innu Education and all associated schools are coded as “05-FN67” in the TYPE1 field.
type2TYPE2TextLike the TYPE1 field, the TYPE2 field is used to sort and filter schools. The TYPE2 field is used to sort schools by a specific grade or institution type. The codes are as follows: 1: A Ministry or District office. A: Grades Preschool to 6. B: Grades Preschool to 8. C: Grades Preschool to 12. D: Grades 7-8. E: Grades 7-12. F: Grades 9-12. I: A Special Education school. J: An Adult Education School.
type3TYPE3TextThe TYPE3 field is used much like the TYPE2 field. Sometimes a school has multiple grade levels or programs; in that event, the same codes from the TYPE2 field are used. For example, some schools may teach K-12 but will also have an Adult Education Component. In this case, a “J” would be placed in the TYPE3 field. The TYPE3 field is also used to identify schools that are Indigenous or Roman Catholic. Schools with a Roman Catholic curriculum are designated RC. Schools that are Indigenous are designated K.
languageLANGUAGETextThis field is used to note what primary language is spoken at the institution. The codes are as follows: E: English B: Bilingual F: French
notesNOTESTextThis field is used for any important details that do not fit appropriately in any other fields.

Sample Data

API

ALTADATA provides a powerfull API, compatible with JSON, CSV formats. You can connect, update and analyze our data products with cURL, Python, R, Ruby, Java or Javascript

Authentication

Getting an API key

You need to subscribe to an ALTADATA data product to get an API key. Once you subscribe to the data product you can find your API key on your Account Dashboard.

Auhenticating your requests

`api_key` is your access token. This token must be included on each API call with either a HTTP Header Authorization, or a query parameter api_key.

Example: https://www.altadata.io/data/api/dd_school_01?api_key=YOUR_API_KEY

ALTADATA API Reference Table

Parameter Type Parameter Explanation Available Values Default
General size The number of records will be returned for each page. 5 - 100 20
General page The page number. It starts at 1 and increments one by one. Each page returns records that row count equals to the size parameter 1- ... 1
General format The data return format of API call json , csv json
General collapse The aggregation format of API call Examples are monthly, yearly, bystate, bycountry, etc. Refer to the data product documentation to see available aggregations for it. null
Select columns Column select is how you specify the content of an SQL SELECT c_only, c_certain, c_columns FROM clause. More detail is in the following sections. *
Order order_by Column order is how you specify the content of an SQL ORDER BY clause. More detail is in the following sections. null
Lookup vary by column name Column lookups are how you specify the content of an SQL WHERE clause. More detail is in the following sections. *

Select

Column select is how you specify the content of an SQL SELECT c_only, c_certain, c_columns FROM clause. It specifies as a keyword argument to the query string of API Call URL. Basic usage is a comma-separated list of column names. If not given, the default value is *(asterisk).

Example 1 :

Query : ?columns=C1,C2,C3 SQL Equivalent : Select C1,C2,C3 from DATA_PRODUCT

Example 2 :

Query : Not Given | ?columns= | ?columns=* SQL Equivalent : Select * from DATA_PRODUCT

Order

Column order is how you specify the content of an SQL ORDER BY clause. It specifies as a keyword argument to the query string of API Call URL. Basic usage is a comma-separated list of column names where each column name has an appropriate suffix (asc,desc) after _(underscore) or no suffix (means ascending).

Example :

Query : ?order_by=C1_asc,C2,C3_desc,C4_asc SQL Equivalent : Select * from DATA_PRODUCT order by C1 asc, C2, C4 desc, C4 asc

Order Type Suffix
Ascending null
Ascending asc
Descending desc

Lookup

Column lookups are how you specify the content of an SQL WHERE clause. They’re specifies as keyword arguments to the query string of API Call URL. Basic usage is appending _(underscore) then lookup type as a suffix to name of the column that you want to filter. The query parameter for a column is built like the format {COLUMN_NAME}_{LOOKUP_TYPE}

As a convenience when no lookup type is provided

Lookup Type Suffix Value Type Example SQL Equivalent
Equal to null String | Numeric | Datetime ?COLUMN=VALUE Select * from DATA_PRODUCT where COLUMN=VALUE
Equal to eq String | Numeric | Datetime ?COLUMN_eq=VALUE Select * from DATA_PRODUCT where COLUMN=VALUE
Not Equal to neq String | Numeric | Datetime ?COLUMN_neq=VALUE Select * from DATA_PRODUCT where COLUMN<>VALUE
Greater Than gt Numeric | Datetime ?COLUMN_gt=VALUE Select * from DATA_PRODUCT where COLUMN>VALUE
Greater Than or Equal to gte Numeric | Datetime ?COLUMN_gte=VALUE Select * from DATA_PRODUCT where COLUMN>=VALUE
Less Than lt Numeric | Datetime ?COLUMN_lt=VALUE Select * from DATA_PRODUCT where COLUMN,VALUE
Less Than or Equal to lte Numeric | Datetime ?COLUMN_lte=VALUE Select * from DATA_PRODUCT where COLUMN<=VALUE
In in String ?COLUMN_in=V1,V2,V3 Select * from DATA_PRODUCT where COLUMN in ('V1','V2','V3')
Not In notin String ?COLUMN_notin=V1,V2,V3 Select * from DATA_PRODUCT where COLUMN not in ('V1','V2','V3')

Data Access Examples

cURL
curl \ -H 'Authorization: api_key' \ 'https://www.altadata.io/data/api/dd_school_01'
Python (requests)
response = requests.get( 'https://www.altadata.io/data/api/dd_school_01', headers={'Authorization': 'api_key'} )
Ruby (open-uri)
require 'open-uri' response = URI.open('https://www.altadata.io/data/api/dd_school_01', "Authorization" => "api_key" )
Java (OkHttp)
Request request = new Request.Builder() .url("https://www.altadata.io/data/api/dd_school_01") .addHeader("Authorization", "api_key") .build(); Call call = client.newCall(request); Response response = call.execute();
Javascript (axios)
axios.request({ url: 'https://www.altadata.io/data/api/dd_school_01', method: 'get', headers: { 'Authorization', 'api_key'} }) .then(response => { console.log(response.data) })
R ( jsonlite )
library(jsonlite) data <- fromJSON(`https://www.altadata.io/data/api/dd_school_01`)

Frequently Asked Questions

HOW DO I SUBSCRIBE TO DATA PRODUCTS ON ALTADATA?
DO YOU PROVIDE CUSTOM DATASETS UPON REQUEST?
WHAT ARE THE DIFFERENT WAYS I CAN ACCESS MY SUBSCRIPTION DATA?
HOW CAN I QUICKLY LOOK AT WHAT IS IN THE DATA THAT I SUBSCRIBED TO?
HOW CAN I JOIN ALTADATA PARTNER NETWORK? DO YOU HAVE A LIST OF REQUIREMENTS?