---
title: network.adminNeedsShops | Doing Work API
description: Doing Work staff: open customer requests with no opted-in shop nearby, grouped by state, ZIP and kind of work, so staff can find local shops. Nothing here 
url: https://doingwork.work/docs/reference/network-adminneedsshops/
---

# network.adminNeedsShops

Doing Work staff: open customer requests with no opted-in shop nearby, grouped by state, ZIP and kind of work, so staff can find local shops. Nothing here contacts anyone.

|  |  |
|---|---|
| Who | A person's own sign-in only (agent tokens are refused) |
| REST | `GET /v1/network/admin/needs-shops` |
| MCP tool | Not an MCP tool |
| Writes | no |
| Area | [Shop](https://doingwork.work/docs/reference/#shop) |

## When to use it

Requests and quotes are free for shops and customers. We will never charge lead or referral fees.

## What to tell the owner

Ask the person to do this with their own sign-in. Your agent token is refused here.

## Input

| Field | Type | Required |
|---|---|---|
| `state` | string | no |
| `category` | string (one of painting, fencing, gutters, roofing, siding, windows_doors, plumbing, electrical, hvac, landscaping, lawn_care, tree_service, concrete_masonry, decks_patios, flooring, drywall, carpentry, cabinets_countertops, remodeling, handyman, cleaning, pressure_washing, pest_control, junk_removal, moving, appliance_repair, garage_doors, insulation, foundation, septic, pools, solar, locksmith, other) | no |

## Example

```http
GET https://doingwork.work/v1/network/admin/needs-shops?state=...&category=painting
```

## Output

| Field | Type | Always there |
|---|---|---|
| `data` | array | yes |
| `data[].state` | string | yes |
| `data[].postal_code` | string | yes |
| `data[].town` | ['string', 'null'] | yes |
| `data[].category` | string | yes |
| `data[].open_requests` | integer | yes |
| `data[].oldest` | string (date-time) | yes |
| `data[].requests` | array | yes |
| `data[].requests[].request_id` | string (uuid) | yes |
| `data[].requests[].trade_text` | ['string', 'null'] | yes |
| `data[].requests[].created_at` | string | yes |
| `data[].found_shops` | integer | yes |
| `outreach` | string | yes |

```json
{
  "data": [
    {
      "state": "...",
      "postal_code": "83814",
      "town": "...",
      "category": "...",
      "open_requests": 1,
      "oldest": "...",
      "requests": [
        {
          "request_id": "00000000-0000-4000-8000-000000000000",
          "trade_text": "...",
          "created_at": "..."
        }
      ],
      "found_shops": 1
    }
  ],
  "outreach": "..."
}
```

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
