City of Toronto Open Data API
Free City of Toronto open data API with no key: 500+ municipal datasets covering transit, budget, permits, parks and services via a CKAN interface. Tested.
Endpoint tested and returned HTTP 200 on 2026-08-20
What is the City of Toronto Open Data API?
The City of Toronto Open Data API is a free, key-free CKAN interface providing more than 500 municipal datasets — transit, budgets, building permits, parks, city services and neighbourhood statistics.
Toronto runs one of the more mature municipal open data programmes in North America, publishing everything from TTC ridership to building permits and ward-level demographics through a standard CKAN API.
Because it is CKAN, the same query patterns work here as on data.gov.uk and hundreds of other portals — which makes municipal open data unusually portable once you have written the code once.
Quick facts
- Base URL
https://ckan0.cf.opendata.inter.prod-toronto.ca/api/3/action- Authentication
- No API key required for reading public datasets.
- Rate limit
- No published limit; fair use expected.
- Pricing
- Free under the City of Toronto Open Data Licence.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the City of Toronto Open Data API
Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.
1. Search Toronto municipal datasets
GET https://ckan0.cf.opendata.inter.prod-toronto.ca/api/3/action/package_search?rows=1
curl 'https://ckan0.cf.opendata.inter.prod-toronto.ca/api/3/action/package_search?rows=1'const res = await fetch("https://ckan0.cf.opendata.inter.prod-toronto.ca/api/3/action/package_search?rows=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://ckan0.cf.opendata.inter.prod-toronto.ca/api/3/action/package_search?rows=1", timeout=20)
res.raise_for_status()
print(res.json()){
"help": "https://ckan0.cf.opendata.inter.prod-toronto.ca/api/3/action/help_show?name=package_search",
"success": true,
"result": {
"count": 556,
"facets": {},
"results": [
{
"author": "FleetBI@toronto.ca",
"author_email": "FleetBI@toronto.ca",
"creator_user_id": "e4bf44e1-1a0c-434f-acec-339703a20ce6",
"dataset_category": "Table",
"date_published": "2024-03-06 12:39:40.281513",
"excerpt": "This dataset provides near real-time information about Toronto Island ferry ticket sales and ticket redemptions. ",
"formats": [
"CSV",
"XML",
"JSON"
],
"id": "000ec8ae-1231-49ca-b6f8-6eb35b74a7ee",
"information_url": "https://www.toronto.ca/explore-enjoy/parks-gardens-beaches/toronto-island-park/ferries-to-toronto-island-park/",
"is_retired": false,
"isopen": false,
"last_refreshed": "2026-08-19 21:17:48.778282",
"license_id": "notspecified",
"license_title": "License not specified",
"maintainer": null,
"maintainer_email": "FleetBI@toronto.ca",
"metadata_created": "2025-06-30T18:13:28.498385",
"metadata_modified": "2026-08-19T21:17:50.436571",
"name": "toronto-island-ferry-ticket-counts",
"notes": "Ferries to [Toronto Island Park](https://www.toronto.ca/explore-enjoy/parks-gardens-beaches/toronto-island-park) operate year-round out of Jack Layton Ferry Terminal. Ferries carry passengers to and from Centre Island, Hanlan’s Point and Ward’s Island. There are [limited ameParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
package_search | path | Optional | Search datasets. package_search |
q | string | Optional | Search query. transit |
rows | integer | Optional | Results per page. 10 |
package_show?id= | string | Optional | Full metadata for one dataset. package_show?id=ttc-ridership |
datastore_search | path | Optional | Query rows inside a dataset directly. datastore_search |
Response fields
successboolean- Whether the action succeeded — check before reading result.
result.countinteger- Total datasets matching the query.
result.results[].titlestring- Dataset title.
result.results[].notesstring- Dataset description.
result.results[].resourcesarray- Downloadable files with format and URL.
result.results[].metadata_modifiedstring- When the dataset was last updated.
What you can build with the City of Toronto Open Data API
- Analyse Toronto transit, budget or permit data
- Build civic tech tools for the city
- Monitor newly published municipal datasets
- Support local journalism with official data
Common errors and how to fix them
success: false
The action failed; the error object explains why.
Fix: CKAN returns HTTP 200 for many logical failures — check the success field.
Resource links to a file, not data
Most resources are CSV or XLSX downloads.
Fix: Use datastore_search to query rows directly where the dataset is datastore-backed.
Long host name
The CKAN host is unusually verbose.
Fix: It is correct as published; do not shorten it.
City of Toronto Open Data API — frequently asked questions
Is Toronto's open data API free?
Yes, free with no API key under the City of Toronto Open Data Licence.
What datasets are available?
More than 500, covering TTC transit, city budgets, building permits, parks, service requests and neighbourhood demographics.
Can I query rows without downloading a whole file?
Yes, for datastore-backed datasets use datastore_search, which queries records directly rather than making you download a CSV.
Does the same code work for other cities?
Yes if they run CKAN, which many do. The action endpoints are identical — only the hostname changes.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
City of Toronto Open Data is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.