---
title: "Search"
description: "Shopify search — accepted parameters and what comes back."
---

```
GET|POST /v1/shopify/search
```

**Price** $0.001 per call. [List price](https://apinoa.com/en/pricing); the rate steps down above 1,000 calls a day.

| Parameter | Type | Required | Notes |
|---|---|---|---|
| `query` | string | yes | Keywords to search for. Required: Shopify search always needs a keyword, which is also why Shopify has no keyword-less `browse`. |
| `categoryId` | string |  | Narrow to one category, by the marketplace's own id. Opaque and per-marketplace; take it from Product.category[].id or from a result's `facets`. |
| `condition` | enum |  | Item condition: `new` or `used`. `refurbished` is refused by name rather than folded into `used` — the catalog sells new and secondhand, and those are different claims. `new` `used` |
| `cursor` | string |  | Opaque; comes from the previous response and carries the page index. Shopify pages by cursor rather than by number — this is the only paging knob, and `page` is refused by name. |
| `inStock` | boolean \| enum |  | Only listings the marketplace reports as purchasable now. |
| `priceMax` | number ≥ 0 |  | Highest price to return, in decimal major units. |
| `priceMin` | number ≥ 0 |  | Lowest price to return, in decimal major units. |
| `ratingMin` | number 0–5 |  | Lowest average star rating to return, on the marketplace's own 0-5 scale. |
| `region` | string |  | Buyer country as ISO 3166-1 alpha-2; sets availability, shipping and price. |

```bash
curl "https://gateway.apinoa.com/v1/shopify/search?query=wool+socks&priceMin=20&priceMax=60&ratingMin=4&inStock=true" \
  -H "x-api-key: YOUR_API_KEY"
```

**Shopify pages by cursor, not by page.** Take `cursor` from the previous response and pass it back;
`page` is refused.

**No `pageSize`** — the catalog caps every response at 50 whatever you ask.

**No `sort`.** Shopify search offers no ordering at all. It is the one marketplace here without one.

**No `brands`.**

**No `currency` on search** — denomination follows `region`. `product` *does* take `currency`, because a
storefront can be pinned to one.

**`condition=refurbished` is refused** rather than mapped onto `used`: the catalog sells `new` and
`secondhand`, and those are different claims.
