Guide
Build a civic lookup agent
Find public-facing civic service points with enough structure for agents, without scraping city websites.
1. Pull context
Start with public context so the agent knows which metro it is serving.
curl
curl https://smartapis.net/v1/agent/context/ottawa
Python
import urllib.request
with urllib.request.urlopen("https://smartapis.net/v1/agent/context/ottawa", timeout=30) as resp:
print(resp.read().decode("utf-8"))
2. Query public-facing service points
Use a client key with `civic:read` to retrieve public-only service point records.
curl
curl -H "X-API-Key: $SMARTAPIS_API_KEY" \
"https://smartapis.net/v1/civic/service-points?region_id=ottawa-region&q=permit&limit=5"
Python
import os, urllib.parse, urllib.request
params = urllib.parse.urlencode({"region_id": "ottawa-region", "q": "permit", "limit": 5})
request = urllib.request.Request(
f"https://smartapis.net/v1/civic/service-points?{params}",
headers={"X-API-Key": os.environ["SMARTAPIS_API_KEY"]},
)
with urllib.request.urlopen(request, timeout=30) as resp:
print(resp.read().decode("utf-8"))
JavaScript
const response = await fetch(
'https://smartapis.net/v1/civic/service-points?region_id=ottawa-region&q=permit&limit=5',
{ headers: { 'X-API-Key': process.env.SMARTAPIS_API_KEY } }
);
console.log(await response.json());