Zoning Firehose API

Build on the same data your alerts run on: every validated rezoning, specific use permit, plat, and PD amendment we track across DFW P&Z agendas, as clean JSON. Same pipeline, same freshness — hours after the packet drops.

API access is included with any subscription. Email us for a key, or find your key prefix on your account page.

Authentication

Send your key in the X-API-Key header on every request. Requests without a valid key get 401. Keys are rate-limited to 60 requests/minute (429 over the limit; retry after the Retry-After seconds).

curl -H "X-API-Key: zf_your_key_here" \
  "https://zoningfirehose.com/api/v1/cases?county=Collin&case_type=rezoning&limit=5"

Endpoints

GET /api/v1/cases

List validated cases, newest first. Returns total (matches across all pages), count, and cases.

Query parameters (all optional):

ParamMeaning
municipalityCity name, e.g. McKinney
countyCollin, Denton, Dallas, or Tarrant
case_typeOne of: rezoning, specific_use_permit, plat, pd_amendment, comprehensive_plan_amendment, variance, other
statusOne of: new, updated, continued, approved, denied, withdrawn
hearing_after / hearing_beforeISO dates (YYYY-MM-DD) bounding the hearing date
qKeyword search across case number, structured fields, and full agenda text
limit / offsetPaging — limit defaults to 50, max 200

Each case object carries the full extracted record:

{
  "case_number": "Z-2026-014",
  "case_type": "rezoning",
  "address_or_location": "NE corner of Custer Rd & Stacy Rd",
  "acreage": 12.4,
  "current_zoning": "AG",
  "requested_zoning": "PD-MF",
  "proposed_use": "Multi-family residential",
  "petitioner": "Example Development LLC",
  "staff_recommendation": "approval",
  "confidence": "high",
  "impact_summary": "Rezoning 12.4 acres from agricultural to a planned development for multi-family.",
  "municipality": "McKinney",
  "county": "Collin",
  "hearing_date": "2026-08-11",
  "status": "new",
  "processed_at": "2026-07-28T14:02:11Z",
  "detail_url": "https://zoningfirehose.com/cases/mckinney/Z-2026-014",
  "source_url": "https://mckinney.legistar.com/..."
}

GET /api/v1/cases/{municipality}/{case_number}

One case by city and case number. 404 if we don't track it.

curl -H "X-API-Key: zf_your_key_here" \
  "https://zoningfirehose.com/api/v1/cases/mckinney/Z-2026-014"

GET /api/v1/municipalities

Coverage list: every municipality, its county, agenda platform, P&Z meeting cadence, live status, and tracked case count.

curl -H "X-API-Key: zf_your_key_here" "https://zoningfirehose.com/api/v1/municipalities"

MCP server — use the data from Claude

Ship your key to Claude Desktop, Claude Code, or any MCP client with our single-file server — no extra packages beyond Python 3.11+ and httpx. Download mcp_server.py from your welcome email (or ask us for it), then add this to your MCP config:

{
  "mcpServers": {
    "zoning-firehose": {
      "command": "python",
      "args": [
        "/path/to/mcp_server.py"
      ],
      "env": {
        "ZONING_API_KEY": "zf_your_key_here"
      }
    }
  }
}

That gives Claude three tools — search_cases, get_case, and list_municipalities — so you can ask things like “any multi-family rezonings in Collin County with hearings next month?” and get grounded answers from live data.

Fair use

Data is licensed for your internal tools and analysis under your subscription. No resale or public rehosting of the feed. Questions, higher limits, webhooks? [email protected].

Start 14-day free trial