Skip to main content

Counts and mix, no project list

Where is apartment development concentrated? Answer it with aggregates, then pull only the shortlist you will read.

AI-native analysts and MCP clientsHomebuilders and developers

Who this is for

Analysts and agents answering questions about a market rather than assembling a list from it. The boundary is simple: aggregates return counts, not project records. Searching those records is free on County, State, and National.

Ask the question

Ask where apartment development concentrates — for zero credits

bash
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

json
{
  "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-09-16",
    "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.

Credit costFree — 0 creditsFree. POST only (GET returns 404/405). Returns counts and group keys, never a project id, name, address, contact or document.

The analytics plane returns counts and group keys. It never returns a project id, name, address, contact or document — that is what makes it safe to give away, and it is enforced at runtime rather than intended.

Start by asking what it can answer

GET /analytics/datasets describes itself: which fields you can group by, which metrics exist, which ones can be ranked, the ceilings, and — usefully — a notAnswerable list, so you do not spend a rate-limit slot rediscovering a question we cannot answer.

Credit costFree — 0 creditsFree. GET only. What the analytics plane can and cannot answer, self-described.

Small groups are suppressed

For rankings specifically, use /analytics/rankings rather than assembling one from /aggregate. A ranking carries a minimum denominator and a comparison baseline; a hand-rolled leaderboard has neither, and the single most common way a leaderboard lies is a top row with one observation behind it.

Credit costFree — 0 creditsFree. POST only (GET returns 405). Same small-group suppression floor as /aggregate.

Then pull only what you will read

  1. 1Aggregate to find the three cities worth attention. Free.
  2. 2Count the records in those three cities. Free.
  3. 3Search only those. Free on County, State, and National. Find Contact Info is 1 credit per project if you want email or phone.

For a market-shape question this keeps the chat small. You never need a ten-thousand-row dump to answer "where is this concentrated?"

Named votes

When you do pull records, voteSummary gives you the tally on the most recent decision, and the full representation carries the individual named votes under decisions. That is where "who voted against this" is answered.

One record in full, including decisions, documents and rawText

bash
curl 'https://api.boardwalkai.com/api/v1/projects/184203?representation=full' \
  -H 'Authorization: Bearer bwk_live_YOUR_KEY'

Response · HTTP 200

json
{
  "data": {
    "id": 184203,
    "recordType": "project",
    "projectName": "Alta Ridge Phase II",
    "projectHeadline": "Planning Commission approved 240 apartments with conditions",
    "boardwalkLink": "https://boardwalkai.com/map/#project=184203",
    "mergedFrom": [
      184203,
      184987
    ],
    "lastUpdated": "2026-06-18T09:22:41Z",
    "meetingDate": "2026-06-17",
    "delivery": {
      "alreadyExported": false,
      "updatedSinceExport": null,
      "lastExportedAt": null,
      "billed": true
    },
    "address": "3600 S Constitution Blvd, West Valley City, UT",
    "city": "West Valley City",
    "county": "Salt Lake",
    "state": "UT",
    "postalCode": "84119",
    "latitude": 40.6916,
    "longitude": -112.0011,
    "locationPrecision": "address",
    "locationPrecisionLabel": "Address",
    "isApproximate": false,
    "parcelApn": [
      "15-27-301-004"
    ],
    "stateId": 1,
    "countyId": 2917,
    "cityId": 31688,
    "additionalAddresses": [],
    "inOpportunityZone": true,
    "inFemaFloodZone": false,
    "propertyType": "residential",
    "propertyTypeLabel": "Residential",
    "propertySubtype": "multifamily",
    "propertySubtypeLabel": "Multifamily",
    "assetClass": "Apartment Building",
    "assetClassLabel": "Apartment Building",
    "leadType": "private",
    "leadTypeLabel": "Private",
    "stage": "entitlement",
    "stageLabel": "Entitlement",
    "landUses": [
      {
        "type": "residential",
        "typeLabel": "Residential",
        "subtype": "multifamily",
        "subtypeLabel": "Multifamily",
        "assetClass": "Apartment Building",
        "assetClassLabel": "Apartment Building",
        "matchedOn": []
      }
    ],
    "classifications": [
      {
        "role": "primary",
        "type": "residential",
        "typeLabel": "Residential",
        "subtype": "multifamily",
        "subtypeLabel": "Multifamily",
        "assetClass": "Apartment Building",
        "assetClassLabel": "Apartment Building"
      }
    ],
    "tags": [
      "multifamily",
      "phase-ii"
    ],
    "status": "approved_with_conditions",
    "statusLabel": "Approved with Conditions",
    "statusSummary": "The commission approved the preliminary plat subject to eight conditions.",
    "requestType": "final_plat",
    "requestTypeLabel": "Final Plat",
    "decisionBody": "Planning Commission",
    "caseNumbers": [
      "PLAT-2026-0142"
    ],
    "isAppeal": false,
    "nextHearingDate": "2026-07-15",
    "acreage": 9.8,
    "squareFootage": null,
    "unitMix": [
      {
        "count": 240,
        "type": "apartment",
        "typeLabel": "Apartment"
      }
    ],
    "totalUnitCount": 240,
    "affordableUnits": null,
    "bedroomCount": null,
    "lotCount": null,
    "buildingCount": 6,
    "buildingStories": null,
    "floorCount": null,
    "buildingHeightFeet": null,
    "parkingSpaces": 372,
    "amenities": [
      "Pool",
      "Clubhouse",
      "Dog run"
    ],
    "existingZoning": "A-1",
    "proposedZoning": "RM-16",
    "isRezone": true,
    "variancesRequested": [
      "setback"
    ],
    "constructionType": "new_building",
    "constructionTypeLabel": "New Building",
    "projectSize": null,
    "projectSizeLabel": null,
    "likelyTrades": [
      {
        "trade": "site_work",
        "tradeLabel": "Site Work",
        "basis": "Grading plan referenced"
      }
    ],
    "developerCompany": "Alta Ridge Development LLC",
    "developerCompanyRole": "developer",
    "developerCompanyRoleLabel": "Developer",
    "contacts": [
      {
        "name": "Rachel Okafor",
        "title": "Director of Development",
        "role": "developer",
        "roleLabel": "Developer",
        "partyClass": "external",
        "partyClassLabel": "External Party",
        "entityType": "person",
        "company": "Alta Ridge Development LLC",
        "email": "r.okafor@example.com",
        "emailSource": "filing",
        "phone": "+1-555-0142",
        "phoneSource": "filing",
        "linkedinUrl": null,
        "linkedinSource": null,
        "contactProvenance": "filing",
        "enrichmentSource": null,
        "enrichedAt": null,
        "enrichmentStatus": "not_requested",
        "contactsWithheldReason": null
      }
    ],
    "contactEnrichment": {
      "status": "not_requested",
      "statusLabel": "Not Requested",
      "attemptedAt": null,
      "contactsFound": 0,
      "source": "registry"
    },
    "companyEnrichment": [],
    "publicOfficials": [
      {
        "name": "Dana Whitfield",
        "title": "Senior Planner",
        "role": "city_planner",
        "roleLabel": "City Planner",
        "partyClass": "government",
        "organization": "West Valley City"
      }
    ],
    "contactSummary": {
      "externalCount": 1,
      "governmentCount": 1,
      "unclassifiedCount": 0,
      "withEmail": 1,
      "withPhone": 1,
      "withLinkedin": 0,
      "enrichedCount": 0,
      "lowConfidenceWithheld": 0,
      "withheldCount": 0,
      "withheldReason": null
    },
    "keyFacts": [
      {
        "fact": "240 apartment units across six buildings",
        "category": "unit_mix",
        "categoryLabel": "Unit Mix"
      }
    ],
    "evidence": "Commissioner Reyes moved to approve subject to conditions 1-8.",
    "conditionsOfApproval": [
      "1. Landscaping per the approved plan."
    ],
    "summary": "A 240-unit garden-style apartment community on 9.8 acres.",
    "decisions": [
      {
        "meetingDate": "2026-06-17",
        "decisionBody": "Planning Commission",
        "actionType": "preliminary_plat",
        "actionTypeLabel": "Preliminary Plat",
        "requestType": "final_plat",
        "requestTypeLabel": "Final Plat",
        "outcome": "approved_with_conditions",
        "outcomeLabel": "Approved with Conditions",
        "motionType": "approve_with_conditions",
        "motionOutcome": "passed",
        "evidenceBasis": null,
        "evidenceBasisLabel": null,
        "isConsentAgenda": null,
        "caseNumber": "PLAT-2026-0142",
        "evidence": "Commissioner Reyes moved to approve subject to conditions 1-8.",
        "conditions": "Landscaping per the approved plan.",
        "voteTally": {
          "yes": 2,
          "no": 1,
          "abstain": 0,
          "absent": 1,
          "total": 4,
          "isUnanimous": false
        },
        "votes": [
          {
            "name": "Maria Reyes",
            "role": "Commissioner",
            "vote": "yes",
            "voteLabel": "Yes"
          },
          {
            "name": "Tom Alder",
            "role": "Commissioner",
            "vote": "yes",
            "voteLabel": "Yes"
          },
          {
            "name": "Priya Raman",
            "role": "Commissioner",
            "vote": "no",
            "voteLabel": "No"
          },
          {
            "name": "Ben Cole",
            "role": "Commissioner",
            "vote": "absent",
            "voteLabel": "Absent"
          }
        ]
      }
    ],
    "voteSummary": {
      "yes": 2,
      "no": 1,
      "abstain": 0,
      "absent": 1,
      "total": 4,
      "isUnanimous": false,
      "meetingDate": "2026-06-17"
    },
    "sourceDocumentUrl": "https://www.example-city.gov/media/agendas/2026-06-17-planning-commission-packet.pdf",
    "originalRawText": "PLANNING COMMISSION MINUTES — June 17, 2026\n\nITEM 4. PLAT-2026-0142 — Alta Ridge Phase II, preliminary plat, 3600 S Constitution Blvd.\nStaff presented the report and recommended approval subject to eight conditions. Commissioner Reyes moved to approve subject to conditions 1-8. Motion carried 2-1, Commissioner Cole absent.\n\n[This excerpt is shortened for the documentation. A live response carries the complete document text.]",
    "originalRawTextTruncated": false
  },
  "meta": {
    "schemaVersion": "2026-09-16",
    "representation": "full",
    "creditsUsed": 1,
    "creditsRemaining": 295
  }
}

Record bodies on this page were produced by running Boardwalk's production response mapper over a documented sample project, so the field set, the labels and the empty fields are exactly what the API emits. The project itself is a sample, not a real filing.

Next

Ready to make a call?

A free Boardwalk trial includes API access, 50 record-export credits (search, CSV, MCP), and 5 Find Contact Info lookups. Counting, taxonomy, location lookups and the analytics plane cost nothing, so you can evaluate the data before you spend a credit.