↑ ↓ to move ↵ to open
Nana Express API reference

Nana Express Products in Store Search

nana.products.search

Search one Nana store's catalogue by keyword, with the source's own match count and next-page flag.

At a glance

Endpoint ID
nana.products.search
Price
1 credit per call; failed calls are free
Runs for up to
30 seconds
Request
POST /execute
Run an endpoint
MCP tool when pinned
nana__products__search
Pin tools
OpenAPI
openapi.json
Download

Request

Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.

curl --request POST \  --url https://data.upscrape.com/execute \  --header "Authorization: Bearer $UPSCRAPE_API_KEY" \  --header "Content-Type: application/json" \  --header "Prefer: wait=30" \  --data '{  "capability": "nana.products.search",  "input": {    "search_txt": "milk",    "store_id": "STR00002232"  }}'

Input

FieldTypeRequiredWhat it doesExample
search_txt string yes Keyword, for example milk. The source rejects an empty value with {"code":3,"message":"search_txt is required"}. milk
store_id string yes Nana store id, for example STR00002232. Search is store-scoped: the same keyword returns different stock and prices per store. STR00002232

Response

A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.

This is results[0].data from a real run:

results[0].data
{  "count": 400,  "has_next_page": false,  "products": [    {      "name": "Luna Sweetened Condensed Milk - 370g",      "price": 8.5,      "brand": "Luna",      "currency": "SAR",      "in_stock": true,      "pid": "PID10000257",      "size_text": "370 g"    }  ]}

Fields

FieldTypeExample
products[].name string Luna Sweetened Condensed Milk - 370g
products[].price number 8.5
products[].brand string Luna
products[].currency string SAR
products[].in_stock boolean true
products[].pid string PID10000257
products[].size_text string 370 g
count integer 400
has_next_page boolean false
products array 1 records

If a call fails

A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.

Other Nana Express endpoints

Something missing or unclear? Ask the team that builds the Nana Express endpoints.