# ProviderSignal Territory Rollup API

> ProviderSignal Territory Rollup API is a paid API for AI agents from providersignal.com, paid per call via x402, $2.5/call, status unknown (last checked 2026-09-14).

Returns aggregated dental provider market intelligence for a US state or territory, including provider counts, DSO affiliations, acquisition signals, license status breakdowns, and market positioning benchmarks.

## Facts

- Endpoint: GET https://providersignal.com/api/v1/agent/territory/rollup
- Price: $2.5/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/providersignal-territory-rollup-api-2b9d5f0c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_-EhCLJ1b8rBd3fE56DKiN

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability providersignal-territory-rollup-api-2b9d5f0c
```

Example prompt: Pull me a territory rollup for Texas — I need total provider counts, DSO vs independent split, retirement risk signals, and the market positioning band for the state.

## When to prefer this

Use this endpoint when you need a high-level aggregate view of a dental market for an entire state, county, city, or ZIP cluster — particularly for M&A prospecting, DSO market sizing, territory planning, or compliance screening. Prefer this over the filtered provider list endpoint when you need statistical rollups and market signals rather than individual provider records. Best suited for strategic market analysis workflows where citation-backed, source-attributed data freshness is required.

## Known failure modes

- Missing required 'state' parameter returns a 400 validation error
- Invalid state code returns an error indicating no matching geography
- Multi-state requests return null positioning object (only single-state supported for market positioning)
- Unenriched states return null for the positioning object
- Payment failure on x402 or MPP rail returns a 402 with payment instructions
- Rate limits or invalid Bearer token returns 401/403

## How this service works

Healthcare market intelligence API. Unified provider directory + acquisition signals + license-events feed across all 50 US states, derived from NPI + state dental boards + CMS Medicare + OIG LEIE + state Medicaid + HRSA HPSA designations. All responses ship a citation envelope (`meta.envelope_version`, `meta.source_attribution`, `meta.request`) so agents can verify source freshness without out-of-band validation. Paid `/api/v1/agent/*` endpoints accept two per-call rails on a single 402: x402 (USDC on Base mainnet) and MPP (Stripe card via a Shared Payment Token), plus Bearer-token subscription auth for existing API keys. See [/docs/agent-payments](/docs/agent-payments) for the full flow. See [/docs/fields](/docs/fields) for the field glossary and [/llms.txt](/llms.txt) for the LLM crawler index.

## Output

Returns a JSON object with: total provider count for the geography; by_affiliation breakdown (DSO vs independent vs organizations); top DSOs ranked by practice count and states covered; by_signal counts (CMS claims presence, federal exclusions, retirement risk 55+, disciplinary actions); by_license_status breakdown (active, expired, retired, deceased, inactive, disciplined); and a positioning object with market band (Premium/Average/Discount), score, modifier, confidence, and EBITDA multiple benchmark tier. Also includes applied filter echo and a citation meta envelope with source attribution.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "state"
     ],
     "properties": {
      "zip": {
       "type": "string",
       "description": "Optional ZIP prefix"
      },
      "city": {
       "type": "string",
       "description": "Optional partial city match"
      },
      "state": {
       "type": "string",
       "description": "Required. Single 2-letter code or comma-list."
      },
      "county": {
       "type": "string",
       "description": "Optional exact county match"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "data",
      "error",
      "meta"
     ],
     "properties": {
      "data": {
       "type": "object",
       "properties": {
        "filters": {
         "type": "object",
         "properties": {
          "zip": {
           "type": [
            "string",
            "null"
           ]
          },
          "city": {
           "type": [
            "string",
            "null"
           ]
          },
          "state": {
           "type": "string"
          },
          "county": {
           "type": [
            "string",
            "null"
           ]
          }
         }
        },
        "top_dsos": {
         "type": "array",
         "items": {
          "type": "object",
          "properties": {
           "dso_label": {
            "type": "string"
           },
           "practices": {
            "type": "integer"
           },
           "providers": {
            "type": "integer"
           },
           "states_covered": {
            "type": "integer"
           }
          }
         }
        },
        "by_signal": {
         "type": "object",
         "properties": {
          "has_cms_claims": {
           "type": "integer"
          },
          "is_federally_excluded": {
           "type": "integer"
          },
          "retirement_risk_55plus": {
           "type": "integer"
       
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "filters": {
    "zip": null,
    "city": null,
    "state": "TX",
    "county": null
   },
   "by_signal": {
    "has_cms_claims": 180,
    "is_federally_excluded": 8,
    "retirement_risk_55plus": 3843,
    "has_disciplinary_action": 878
   },
   "positioning": {
    "band": "Average",
    "scope": "state",
    "score": 59,
    "modifier": 1.03,
    "benchmark": {
     "tier": "solo",
     "collections_pct": "65-85%",
     "ebitda_multiple": "2.5-5x"
    },
    "confidence": 100,
    "disclaimer": "Market-attractiveness positioning vs the public national benchmark. Not a transaction comp and not a practice-specific valuation."
   },
   "by_affiliation": {
    "dso": 1036,
    "independent": 13962,
    "organizations": 8187
   },
   "total_providers": 14998,
   "by_license_status": {
    "active": 9325,
    "expired": 3365,
    "retired": 1147,
    "deceased": 57,
    "inactive": 2,
    "disciplined": 62
   }
  },
  "meta": {
   "envelope_version": "1.0"
  },
  "error": null
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/providersignal-territory-rollup-api-2b9d5f0c/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from providersignal.com](https://www.zero.xyz/host/providersignal.com/llms.txt)
