# MOIS Solo Household Demand Scorer

> MOIS Solo Household Demand Scorer is a paid API for AI agents from api.timzinin.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-14).

Scores and ranks Korean administrative neighborhoods by single-person household density and demand percentile using official Ministry of the Interior and Safety data

## Facts

- Endpoint: POST https://api.timzinin.com/api/mois-solo-household-demand-scorer
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/mois-solo-household-demand-scorer-2d243f09
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_-XDqgAYbEa12uppqido1g

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 mois-solo-household-demand-scorer-2d243f09 -d '<json body>'
```

Example prompt: Score solo household demand for neighborhoods in 종로구, 서울특별시 using the July 2026 vintage, focusing on residents aged 20 to 39, so I can see which territories to prioritize or deprioritize for a single-person household product launch.

## When to prefer this

Choose this endpoint when you need official, government-sourced single-person household statistics for Korean administrative neighborhoods, especially when you need reproducible benchmarks tied to a specific data vintage with stable IDs. Prefer this over generic census APIs when you need pre-computed demand percentiles and action recommendations rather than raw counts, or when you need age-weighted scoring for market segmentation in South Korea.

## Known failure modes

- Invalid or unknown legal code returns empty results set
- Requested vintage date not yet available returns no data
- Age range outside supported bounds may return zero-weighted results
- Malformed request body causes 400 bad request
- Payment settlement failure returns 402 payment required
- Province/district name mismatch with legal code causes scoring errors

## How this service works

Pay-per-call data & tool APIs

## Output

Returns a batch of neighborhood-level scores including demand percentile (0–100), weighted household share, raw solo household count, peer count, an action recommendation (e.g. 'deprioritize'), and source attribution metadata including SHA-256 hash, retrieval timestamp, and stable IDs for reproducibility — all tied to a specific MOIS data vintage and legal district code.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "requestId": {
   "type": "string",
   "pattern": "^[A-Za-z0-9_-]{8,64}$"
  },
  "ageWeights": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "minAge",
     "maxAge",
     "weight"
    ],
    "properties": {
     "maxAge": {
      "type": "integer",
      "maximum": 110,
      "minimum": 0
     },
     "minAge": {
      "type": "integer",
      "maximum": 110,
      "minimum": 0
     },
     "weight": {
      "type": "number",
      "maximum": 10,
      "minimum": 0.000001
     }
    },
    "additionalProperties": false
   },
   "maxItems": 12,
   "minItems": 1
  },
  "peerLegalCodes": {
   "type": "array",
   "items": {
    "type": "string",
    "pattern": "^[0-9]{10}$"
   },
   "maxItems": 200,
   "minItems": 2,
   "uniqueItems": true
  },
  "targetLegalCodes": {
   "type": "array",
   "items": {
    "type": "string",
    "pattern": "^[0-9]{10}$"
   },
   "maxItems": 20,
   "minItems": 1,
   "uniqueItems": true
  },
  "maxTotalChargeUsd": {
   "type": "number",
   "maximum": 100,
   "minimum": 0.005
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "meta": {
   "run_ms": 1200,
   "settled": true,
   "item_count": 1
  },
  "results": [
   {
    "scores": [
     {
      "action": "deprioritize",
      "village": "",
      "vintage": "2026-07-31",
      "ageFacts": [
       {
        "maxAge": 39,
        "minAge": 20,
        "weight": 1,
        "households": 49
       }
      ],
      "district": "종로구",
      "province": "서울특별시",
      "stableId": "MOIS-SOLO:1111010100:2026-07-31:c54dff4186604e43",
      "legalCode": "1111010100",
      "peerCount": 4,
      "neighborhood": "청운동",
      "weightedShare": 0.26630435,
      "soloHouseholds": 184,
      "demandPercentile": 33.33,
      "weightedHouseholds": 49
     }
    ],
    "source": {
     "url": "https://www.data.go.kr/cmm/cmm/fileDownload.do?atchFileId=FILE_000000003691861&fileDetailSn=1&insertDataPrcus=N",
     "bytes": 9699741,
     "sha256": "df8ebf47916268be4279ad1cbe4faec1c130dc023e9b5fb40d88ceb1e22e8b5a",
     "retrievedAt": "2026-08-14T06:57:51.456Z"
    },
    "country": "KR",
    "product": "mois-solo-household-demand-scorer",
    "vintage": "2026-07-31",
    "baseline": false,
    "billable": true,
    "decision": "solo-household territory score batch",
    "stableId": "MOIS-SOLO-BATCH:2026-07-31:c54dff4186604e434cee6f3a",
    "disclaimer": "Aggregate one-person-household territory benchmark; not a forecast or proof of customer demand.",
    "attribution": "Source: Ministry of the Interior and Safety one-person household file via data.go.kr",
    "schemaVersion": "1.0",
    "criteriaSha256": "c54dff4186604e434cee6f3abda7df2ba10cba9211e2b0e5efc14974d9d8a201",
    "sourceRowCount": 18624
   }
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/mois-solo-household-demand-scorer-2d243f09/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.timzinin.com](https://www.zero.xyz/host/api.timzinin.com/llms.txt)
