---
title: "Search eligible Network supply"
method: POST
path: "/search"
tags: ["Search"]
---

# Search eligible Network supply

`POST /search`

## Request

- Base URL: `https://api.darwin.so/api/v1`
- URL: `https://api.darwin.so/api/v1/search`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Runs synchronous FAST search over public Listings. Darwin hydrates and authorizes every result from current canonical state. AI-directory search, private indexing, asynchronous expansion, raw ranking scores, and provider details are outside this operation. Requires `directory:read`.

## Headers

- `X-Request-Id` string

## Request body

- SearchRequest
  - `query` string, required
  - `context` SearchContext
    - `locale` string
    - `currency` string
    - `destination` object
      - `postalCode` string
      - `region` string
      - `countryCode` string
  - `filters` SearchFilters
    - `listingTypes` ListingType[]
    - `executionDomains` ListingExecutionDomain[]
    - `operationKinds` ListingOperationKind[]
    - `protocols` SearchProtocol[]
    - `minPriceMinor` integer
    - `maxPriceMinor` integer
    - `currency` string
    - `allowQuotePricing` boolean
    - `requiresExecutableRoute` boolean
    - `availableAt` string, date-time
    - `countryCodes` string[]
  - `limit` integer
  - `cursor` string, nullable

## Response `200`

A completed, canonically hydrated Search page.

- SearchResponse
  - `searchId` string, required
  - `status` 'COMPLETE', required
  - `results` SearchResult[], required
    - `listing` SearchPublicListing, required
      - `id` string, required
      - `revision` integer, required
      - `type` 'PRODUCT' | 'SERVICE' | 'OPERATION' | 'CAPACITY' | 'ASSET' | 'DATA' | 'RIGHT', required: The economic object. CAPACITY is displayed as Reservations in Darwin clients. Legacy values are accepted only by compatibility endpoints.
      - `executionDomain` 'HUMAN' | 'DIGITAL' | 'PHYSICAL', required
      - `operationKind` 'API' | 'BROWSER_AUTOMATION' | 'MCP' | 'SOFTWARE_ACTION' | 'OTHER'
      - `title` string, required
      - `description` string, nullable
      - `category` string, nullable
      - `tags` string[], required
      - `mediaPreviewUrl` string, uri, nullable
      - `price` object, nullable
        - `currency` string, required
        - `minimumMinor` integer, nullable, required
        - `maximumMinor` integer, nullable, required
        - `unit` string, nullable, required
        - `chargeType` string, required
      - `availability` object, nullable
        - `status` 'AVAILABLE' | 'LIMITED' | 'UNAVAILABLE', required
        - `observedAt` string, date-time, required
      - `protocolKinds` SearchProtocol[], required
      - `seller` SearchPublicSeller, required
        - `id` string, required
        - `name` string, required
        - `handle` string, nullable, required
        - `avatarUrl` string, uri, nullable, required
        - `classification` string, nullable, required
        - `coarseLocation` string, nullable, required
    - `match` object, required
      - `whyMatched` string[], required
  - `nextCursor` string, nullable, required
  - `stopReason` 'MATCH_FOUND' | 'NO_ELIGIBLE_SUPPLY' | 'CONFIDENCE_TOO_LOW' | 'TIME_BUDGET_REACHED', required
  - `timingMs` object, required
    - `total` integer, required

## Other responses

- `400`: The request was invalid.
- `401`: The API key or access token is missing, invalid, expired, or revoked.
- `403`: The principal does not have the required scope or resource access.
- `404`: The resource was not found for this principal.
- `429`: The request or distinct-AI browse limit was reached.
- `503`: Search is unavailable and no policy-equivalent PostgreSQL fallback succeeded.

---

[API](https://skmtc.dev/darwin/apis/darwin-api.md) · [All operations](https://skmtc.dev/darwin/apis/darwin-api/llms.txt) · [OpenAPI document](https://skmtc.dev/darwin/apis/darwin-api/revisions/56166fce7bfb?raw)
