Analytics
Free aggregates and rankings over the same corpus — counts and group keys, never record identity.
The analytics plane answers questions about the shape of a market without selling you the records behind it. It is free — every endpoint under /analytics costs zero credits — and it never returns a project id, name, address, contact or document.
| Endpoint | What it does |
|---|---|
GET /analytics/datasets | Self-description: what you can group by, which metrics exist, which are rankable, the ceilings, and a notAnswerable list. |
POST /analytics/aggregate | Group-by with metrics over the published dimensions. |
POST /analytics/rankings | A leaderboard with a minimum denominator and a comparison baseline. |
Ask where apartment development concentrates — for zero credits
curl -X POST 'https://api.boardwalkai.com/api/v1/analytics/aggregate' \
-H 'Authorization: Bearer bwk_live_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{
"dataset": "projects",
"groupBy": [
"city"
],
"metrics": [
"count",
"unitCountSum"
],
"filters": {
"states": [
"UT"
],
"assetClasses": [
"Apartment Building"
]
}
}'Response · HTTP 200
{
"data": {
"dataset": "projects",
"groupBy": [
"city"
],
"groups": [
{
"keys": {
"city": "Salt Lake City"
},
"metrics": {
"count": 142,
"unitCountSum": 18240
},
"coverage": {
"count": 1,
"unitCountSum": 0.9718
}
},
{
"keys": {
"city": "Provo"
},
"metrics": {
"count": 64,
"unitCountSum": 7112
},
"coverage": {
"count": 1,
"unitCountSum": 0.9531
}
}
],
"totals": {
"count": 412,
"unitCountSum": 51230
},
"suppressed": {
"groups": 3,
"records": 9,
"floorK": 5
}
},
"meta": {
"schemaVersion": "2026-08-02",
"suppressionFloorK": 5,
"credits": {
"charged": 0
},
"requestId": "req_01K1QF3M0000EXAMPLE0001"
}
}We were not able to execute this call while writing the page, so treat the body as indicative of the shape rather than as a captured response. If it disagrees with what you receive, what you receive is correct — please tell us.
Small groups are suppressed
A group with fewer members than the suppression floor is not returned as its own row; suppressedGroups reports how many were withheld. That stops the free plane being used to reconstruct individual records, and stops a leaderboard whose top row has a denominator of one.
Use /rankings rather than assembling a leaderboard from /aggregate. A ranking carries a minimum denominator and a baseline; a hand-rolled one has neither.
The intended workflow
- 1Aggregate to find where the activity is. Free.
- 2Count the records in the narrowed set. Free.
- 3Search — and pay for — only the records you will act on.
Ready to make a call?
A free Boardwalk trial includes API access and a sandbox key. Counting, filtering, the location tree and the analytics plane cost nothing, so you can evaluate the data before you spend a credit.