{
  "x402Version": 2,
  "id": 38483,
  "slug": "38483",
  "resource": "https://datastand.dev/api/search/bazaar",
  "description": "Keyword search over the x402 Bazaar discovery index: the ~8,000 most-used of the daily sweep, whose size is in the free corpus block. Find services by text query with price and usage filters, ranked by unique payers. The Bazaar's own discovery endpoint has no search; this is it. Every match is reachable: count is the full hit count, and offset/limit page all of them. Priced per row: $0.005 for the default 20, $0.0002 each after, $0.021 for a full 100 rows, quoted in the 402 before you pay.",
  "type": "http",
  "resourceType": "Agent Service",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0x470a1b647d668d3820add26d70c8371557ff4c6b",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "5000",
      "amountUsd": 0.005,
      "maxTimeoutSeconds": 120
    }
  ],
  "outputSchema": {
    "properties": {
      "example": {
        "type": "object"
      },
      "type": {
        "type": "string"
      }
    },
    "required": [
      "type"
    ],
    "type": "object"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "method": "GET",
          "queryParams": {
            "limit": "20",
            "max_price_usd": "0.05",
            "min_payers": "10",
            "offset": "0",
            "q": "web search"
          },
          "type": "http"
        },
        "output": {
          "example": {
            "corpus": {
              "cutoff": {
                "calls_30d": 4,
                "note": "Weakest row in the searchable slice. Resources at or below this 30-day usage may not be indexed; ranking is payers, then calls, then most recently restamped by the index, then resource URL.",
                "payers_30d": 2
              },
              "departures": {
                "absent_from_index": 256,
                "baseline": "previous-corpus",
                "below_cutoff": 1863,
                "entered_corpus": 2116,
                "left_corpus": 2119,
                "note": "Resources that were in the previously published search corpus and are not in this one. `below_cutoff` are still in the Bazaar index and fell below our 8,000-row cut — the endpoint is live, we stopped carrying it. `absent_from_index` were not seen in this sweep at all: usually a delisting, but offset pagination over a re-sorting index can also drop a row, and `sweep_records_collapsed` is the measured size of that churn. Read every count against `window_hours` — consecutive builds are not reliably a day apart.",
                "reason": null,
                "since": "2026-10-07T14:20:23.064Z",
                "sweep_records_collapsed": 1,
                "window_hours": 21.85
              },
              "indexed": 8003,
              "of_total": 33694,
              "snapshot_at": "2026-10-08T12:11:36.551Z"
            },
            "count": 2,
            "page": {
              "has_more": false,
              "limit": 20,
              "next_offset": null,
              "offset": 0,
              "returned": 2,
              "total": 2
            },
            "query": "web search",
            "results": [
              {
                "calls_30d": 19607,
                "description": "Web search for agents",
                "domain": "example.com",
                "payers_30d": 386,
                "price_usd": 0.01,
                "resource": "https://example.com/api/search"
              }
            ]
          },
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "method": {
                "enum": [
                  "GET",
                  "HEAD"
                ],
                "type": "string"
              },
              "queryParams": {
                "properties": {
                  "limit": {
                    "description": "Rows per page, 1-100 (default 20). Billed per row beyond 20: $0.005 base + $0.0002 each, max $0.021. The 402 quotes the exact price for your limit.",
                    "type": "string"
                  },
                  "max_price_usd": {
                    "description": "Only resources priced at or below this USD amount",
                    "type": "string"
                  },
                  "min_payers": {
                    "description": "Only resources with at least this many unique 30-day payers",
                    "type": "string"
                  },
                  "offset": {
                    "description": "Skip this many ranked results (default 0). Use page.next_offset from the previous response. A page past the end costs nothing.",
                    "type": "string"
                  },
                  "q": {
                    "description": "Keywords, all must match (resource URL + description)",
                    "type": "string"
                  }
                },
                "required": [
                  "q"
                ],
                "type": "object"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    }
  },
  "tags": [
    "bazaar"
  ],
  "sourceHost": "datastand.dev",
  "lastUpdated": "2026-10-08T13:46:07.149Z",
  "quality": {
    "calls30d": 3,
    "uniquePayers30d": 3,
    "lastCalledAt": "2026-10-08T13:46:06.796Z"
  },
  "metadata": {
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "method": "GET",
            "queryParams": {
              "limit": "20",
              "max_price_usd": "0.05",
              "min_payers": "10",
              "offset": "0",
              "q": "web search"
            },
            "type": "http"
          },
          "output": {
            "example": {
              "corpus": {
                "cutoff": {
                  "calls_30d": 4,
                  "note": "Weakest row in the searchable slice. Resources at or below this 30-day usage may not be indexed; ranking is payers, then calls, then most recently restamped by the index, then resource URL.",
                  "payers_30d": 2
                },
                "departures": {
                  "absent_from_index": 256,
                  "baseline": "previous-corpus",
                  "below_cutoff": 1863,
                  "entered_corpus": 2116,
                  "left_corpus": 2119,
                  "note": "Resources that were in the previously published search corpus and are not in this one. `below_cutoff` are still in the Bazaar index and fell below our 8,000-row cut — the endpoint is live, we stopped carrying it. `absent_from_index` were not seen in this sweep at all: usually a delisting, but offset pagination over a re-sorting index can also drop a row, and `sweep_records_collapsed` is the measured size of that churn. Read every count against `window_hours` — consecutive builds are not reliably a day apart.",
                  "reason": null,
                  "since": "2026-10-07T14:20:23.064Z",
                  "sweep_records_collapsed": 1,
                  "window_hours": 21.85
                },
                "indexed": 8003,
                "of_total": 33694,
                "snapshot_at": "2026-10-08T12:11:36.551Z"
              },
              "count": 2,
              "page": {
                "has_more": false,
                "limit": 20,
                "next_offset": null,
                "offset": 0,
                "returned": 2,
                "total": 2
              },
              "query": "web search",
              "results": [
                {
                  "calls_30d": 19607,
                  "description": "Web search for agents",
                  "domain": "example.com",
                  "payers_30d": 386,
                  "price_usd": 0.01,
                  "resource": "https://example.com/api/search"
                }
              ]
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "method": {
                  "enum": [
                    "GET",
                    "HEAD"
                  ],
                  "type": "string"
                },
                "queryParams": {
                  "properties": {
                    "limit": {
                      "description": "Rows per page, 1-100 (default 20). Billed per row beyond 20: $0.005 base + $0.0002 each, max $0.021. The 402 quotes the exact price for your limit.",
                      "type": "string"
                    },
                    "max_price_usd": {
                      "description": "Only resources priced at or below this USD amount",
                      "type": "string"
                    },
                    "min_payers": {
                      "description": "Only resources with at least this many unique 30-day payers",
                      "type": "string"
                    },
                    "offset": {
                      "description": "Skip this many ranked results (default 0). Use page.next_offset from the previous response. A page past the end costs nothing.",
                      "type": "string"
                    },
                    "q": {
                      "description": "Keywords, all must match (resource URL + description)",
                      "type": "string"
                    }
                  },
                  "required": [
                    "q"
                  ],
                  "type": "object"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    }
  },
  "liveness": {
    "reliability": null
  },
  "verified": false,
  "featured": false,
  "provider": {
    "host": "datastand.dev",
    "manifest_name": "datastand.dev",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-10-14T01:15:01.050Z"
  },
  "exampleResponse": {
    "corpus": {
      "cutoff": {
        "calls_30d": 4,
        "note": "Weakest row in the searchable slice. Resources at or below this 30-day usage may not be indexed; ranking is payers, then calls, then most recently restamped by the index, then resource URL.",
        "payers_30d": 2
      },
      "departures": {
        "absent_from_index": 256,
        "baseline": "previous-corpus",
        "below_cutoff": 1863,
        "entered_corpus": 2116,
        "left_corpus": 2119,
        "note": "Resources that were in the previously published search corpus and are not in this one. `below_cutoff` are still in the Bazaar index and fell below our 8,000-row cut — the endpoint is live, we stopped carrying it. `absent_from_index` were not seen in this sweep at all: usually a delisting, but offset pagination over a re-sorting index can also drop a row, and `sweep_records_collapsed` is the measured size of that churn. Read every count against `window_hours` — consecutive builds are not reliably a day apart.",
        "reason": null,
        "since": "2026-10-07T14:20:23.064Z",
        "sweep_records_collapsed": 1,
        "window_hours": 21.85
      },
      "indexed": 8003,
      "of_total": 33694,
      "snapshot_at": "2026-10-08T12:11:36.551Z"
    },
    "count": 2,
    "page": {
      "has_more": false,
      "limit": 20,
      "next_offset": null,
      "offset": 0,
      "returned": 2,
      "total": 2
    },
    "query": "web search",
    "results": [
      {
        "calls_30d": 19607,
        "description": "Web search for agents",
        "domain": "example.com",
        "payers_30d": 386,
        "price_usd": 0.01,
        "resource": "https://example.com/api/search"
      }
    ]
  }
}