# BlockLabs Catalog Product Search

> BlockLabs Catalog Product Search is a paid API for AI agents from shop.blocklabs.nl, paid per call via x402, $0.001/call, status unknown (last checked 2026-09-14).

Full-text search over the BlockLabs dropshipping product catalog with multi-language support, returning paginated product listings with pricing, stock, and metadata.

## Facts

- Endpoint: GET https://shop.blocklabs.nl/api/search
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/blocklabs-catalog-product-search-d9b0186d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_pKWWaIqv3ZhF4fOVztq6L

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 blocklabs-catalog-product-search-d9b0186d
```

Example prompt: Search the BlockLabs dropshipping catalog for 'wireless earbuds' in English and show me the first 10 results with their wholesale prices and stock levels.

## When to prefer this

Use this endpoint when you need to search the BlockLabs dropshipping catalog by keyword, SKU, EAN13, manufacturer, or taxonomy in a specific language. Prefer this over the category browse endpoint when you have a search term but not a known taxonomy node. Choose this over the product detail endpoint when you need to discover products rather than fetch a known product ID.

## Known failure modes

- 400 error if the 'iso' language code is not indexed in the catalog
- Empty results array if no products match the query
- Pagination out of bounds returns empty hits array
- Payment/wallet error if caller uses a counterfactual (undeployed) smart account wallet
- Missing or blank 'q' parameter causes validation failure
- Invalid page or per_page values are clamped rather than errored

## How this service works

Full-text product search over the BlockLabs dropshipping catalog (multi-language). Payer wallet must be deployed (counterfactual smart accounts are not supported).

## Output

A paginated JSON response containing the total number of matching products ('found'), the current page number, and an array of product hits. Each hit includes catalog product id, SKU, EAN13, localized name, description, wholesale price, retail price, current stock integer, image URL, manufacturer name, taxonomy category array, and product URL.

## 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": [
      "q"
     ],
     "properties": {
      "q": {
       "type": "string",
       "pattern": "\\S",
       "minLength": 1,
       "description": "Search query; matches name, description, SKU, EAN13, manufacturer and taxonomy"
      },
      "iso": {
       "type": "string",
       "default": "en",
       "pattern": "^[a-zA-Z]{2}$",
       "description": "Two-letter language code of an indexed catalog language (400 if not indexed)"
      },
      "page": {
       "type": "string",
       "default": "1",
       "pattern": "^-?[0-9]+$",
       "description": "Page number (integer; values below 1 are clamped to 1)"
      },
      "per_page": {
       "type": "string",
       "default": "20",
       "pattern": "^-?[0-9]+$",
       "description": "Results per page (integer, clamped to 1-250)"
      },
      "include_inactive": {
       "type": "string",
       "description": "Include inactive products when \"true\" or \"1\"; any other value means active only"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "found",
      "page",
      "hits"
     ],
     "properties": {
      "hits": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "id",
         "sku",
         "ean13",
         "name",
         "description",
         "price",
         "retailPrice",
         "stock",
         "imageUrl",
         "manufacturer",
         "taxonomy",
         "url"
        ],
        "properties": {
         "id": {
          "type": "integer",
          "description": "Catalog product id"
         },
         "sku": {
          "type": "string"
         },
         "url": {
          "type": [
           "string",
           "null"
          ]
         },
         "name": {
          "type": [
           "string",
           "null"
          ],
          "description": "Localized name f
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/blocklabs-catalog-product-search-d9b0186d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from shop.blocklabs.nl](https://www.zero.xyz/host/shop.blocklabs.nl/llms.txt)
