neonjelly

Reference

Product search and changes

SKU search, product-idea saturation, price tracking, and assortment change feeds.

Same nj_ key. REST on https://mcp.neonjelly.io. Composed MCP: niche_research, product_search, product_intel, change_tracker, price_watch, assortment_watch.

Product ideas (semantic / saturation)

GET /v1/products/search?q= — rows are ideas (seller count, price band, verdict UNTAPPEDSATURATED), not one listing on one store.

QueryWhat
qName or category (min 2 chars)
marketComma verdicts: UNTAPPED,LOW COMPETITION,COMPETITIVE,SATURATED
priceMin priceMaxIdea price band
trending countries regionExtra filters

Then GET /v1/products/research/{id} and GET /v1/products/research/{id}/sellers. Also /v1/products/search/suggest and /trending.

MCP: search_product_ideas, get_product_research, list_product_sellers. Prefer niche_research (search + top report + sellers).

Product listings (keyword)

GET /v1/products — at least one filter required. This is title-contains listings, not idea saturation.

QueryWhat
qTitle contains
storeDomainOne merchant
vendor productType tagCatalog facets
storeVerticalStore vertical
isBestSellertrue / false
priceMin priceMaxPrice band
sortprice \position \scraped
order limit offsetPage

GET /v1/stores/{domain}/products — same filters, domain in the path.

GET /v1/products/{domain}/{handle} — one SKU.

MCP wrappers: search_products, get_store_products, get_product. Prefer product_search (adds vendor/type/store/price facets) then product_intel.

curl -H "Authorization: Bearer nj_…" \
  "https://mcp.neonjelly.io/v1/products?q=hoodie&isBestSeller=true&priceMax=80&limit=20"
curl -H "Authorization: Bearer nj_…" \
  "https://mcp.neonjelly.io/v1/products/gruntstyle.com/american-reaper-2-0"

Change tracking

Three feeds. Persist changeDate as a cursor.

PathEntityTypes
GET /v1/changesproduct + store, pre-summarized`entity=product\store, domain, since`
GET /v1/products/changesSKUsprice_increase, price_decrease, new_product, removed_product, position_up, position_down, best_seller_entered, best_seller_exited
GET /v1/stores/{domain}/changesone storerevenue_change, visits_change, products_change, rating_change, apps_change

Product-change query: storeDomain, changeType, productType, since, minPriceChangePct, limit, offset.

MCP: get_changes, get_product_changes, get_store_changes. Prefer change_tracker (all buckets + signal SKU changes if watched), price_watch (default ≥10%), assortment_watch (new/removed/bestseller enter/exit).

curl -H "Authorization: Bearer nj_…" \
  "https://mcp.neonjelly.io/v1/products/changes?changeType=price_decrease&minPriceChangePct=10&since=2026-08-01&limit=50"
curl -H "Authorization: Bearer nj_…" \
  "https://mcp.neonjelly.io/v1/changes?domain=gruntstyle.com&since=2026-08-01"
curl -H "Authorization: Bearer nj_…" \
  "https://mcp.neonjelly.io/v1/stores/gruntstyle.com/changes"

Watched stores only: GET /v1/signals/{id}/products/changes → MCP get_signal_product_changes.