BYTETOOLS

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.

No API key requiredHTTPSFree tier

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
curl 'https://ckan0.cf.opendata.inter.prod-toronto.ca/api/3/action/package_search?rows=1'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200 (truncated)
{
  "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 ame

Parameters

ParameterTypeRequiredDescription
package_searchpathOptionalSearch datasets. package_search
qstringOptionalSearch query. transit
rowsintegerOptionalResults per page. 10
package_show?id=stringOptionalFull metadata for one dataset. package_show?id=ttc-ridership
datastore_searchpathOptionalQuery 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

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.