Check the Setup
- Python 3.10 or newer
- A notebook environment such as Jupyter or Google Colab
- An internet connection
Parking infractions, dates, statuses, bylaws, and 100-block locations for building enforcement hotspot and curb-demand analysis tools.
Report a ProblemFrom Source to Product Signal
Start with one year and a small API page of infractions. Locations are aggregated to 100-block units, Vancouver Police Department tickets are excluded, and records do not show later status changes.
Install the packages, then run the notebook cell.
python -m pip install pandas requests
import pandas as pd
import requests
url = "https://opendata.vancouver.ca/api/explore/v2.1/catalog/datasets/parking-tickets/records"
response = requests.get(
url,
params={"limit": 100, "order_by": "entrydate DESC"},
timeout=30,
)
response.raise_for_status()
tickets = pd.json_normalize(response.json()["results"])
columns = [
"entrydate",
"block",
"street",
"bylaw",
"section",
"status",
"infractiontext",
]
print(tickets[columns].head())Test a Useful Signal
Test whether ticket counts can support a coarse block-level enforcement map.
City of Vancouver is a government source. Last verified 2026-09-03. Temporal coverage: 2010-present across linked datasets.