Catalog API2026-11Preview

Imports

Paste a listing link, get back its variants and what each one costs you to sell: the goods, our CN¥12.00 intake fee for the seller's parcel to us, the 14% flat tax, then the shipping lane, the CN¥50.00 handling fee per parcel and the tax on those, the marketplace's fee, and the price that keeps your margin.
  • Importing is free, with no product limit. You pay only for what you order.
  • Every figure is one unit, bought in its own order and shipped in its own parcel: one dropshipped sale. Several units in one order or one parcel cost less than this says.
  • Marketplace fees default to each marketplace's public headline rate. Send your own when your category or plan differs.

The Import object

A listing as we read it, with what one sale costs landed at your buyer's door: the goods, our CN¥12.00 intake fee for the seller's parcel to us, the 14% flat tax, then the shipping lane, the CN¥50.00 handling fee per parcel and the tax on those. In US$, it is what a US$ card is charged, currency conversion included.
idstring
Starts imp_.
statusstring
running (a finds sheet still being read), ready, or failed.
urlstring
The link you sent.
marketplacestring
taobao, tmall, weidian or 1688.
title, seller, images[]string
As the seller wrote them, in Chinese more often than not.
read_atstring
When we last read the listing from the marketplace.
analysis.ship_to, lane, weight_g
The inputs it was priced for.
analysis.coveredboolean
False when no published rate ships to that country on that lane; then no variant has a landed cost.
analysis.marketplace_feeobject
percent and fixed: what the marketplace keeps of a sale. default is true when you sent none and we used its public headline rate, an estimate, never your real bill.
analysis.margin_reachableboolean
False when the fee and the margin together take the whole price: no price can reach it.
analysis.brand_hintobject|null
Brand or replica words found in the title, in English or Chinese. A hint, never a verdict: it cannot see a logo in a photo, and a clean result proves nothing.
analysis.variants[].procurementobject
goods, intake_fee, tax and total of the order that buys one unit.
analysis.variants[].seller_shippingobject|null
The seller's shipping to our warehouse. No listing carries it, so it is null: unknown, not free.
analysis.variants[].parcelobject|null
lane, shipping, handling_fee, tax and total of the parcel that ships it.
analysis.variants[].landedobject
Item and parcel together: in CN¥, in US$, and the conversion fee included in the US$.
analysis.variants[].minimum_priceobject|null
The lowest price that keeps your margin after the marketplace fee.
analysis.variants[].suggestedobject|null
The lowest x.99 price at or above the minimum, with the fee, profit and margin it leaves.
productstring|null
The product it became once saved.
import
{
  "id": "imp_2c9d",
  "status": "ready",
  "url": "https://weidian.com/item.html?itemID=7750970856",
  "marketplace": "weidian",
  "title": "Heavyweight washed hoodie",
  "seller": "Ruoyi Studio",
  "images": [
    "https://media.ninjabuy.com/listings/weidian-7750970856/1.webp"
  ],
  "read_at": "2026-11-04T09:12:40Z",
  "analysis": {
    "ship_to": "US",
    "lane": "saver",
    "weight_g": 180,
    "covered": true,
    "marketplace": "ebay",
    "marketplace_fee": {
      "percent": "13.6",
      "fixed": { "amount": "0.40", "currency": "USD" },
      "default": true
    },
    "margin_percent": "30",
    "margin_reachable": true,
    "brand_hint": null,
    "variants": [
      {
        "sku": "5187209554",
        "label": "Black / M",
        "in_stock": true,
        "procurement": {
          "goods": { "amount": "38.00", "currency": "CNY" },
          "intake_fee": { "amount": "12.00", "currency": "CNY" },
          "tax": { "amount": "7.00", "currency": "CNY" },
          "total": { "amount": "57.00", "currency": "CNY" }
        },
        "seller_shipping": null,
        "parcel": {
          "lane": "saver",
          "shipping": { "amount": "68.00", "currency": "CNY" },
          "handling_fee": { "amount": "50.00", "currency": "CNY" },
          "tax": { "amount": "16.52", "currency": "CNY" },
          "total": { "amount": "134.52", "currency": "CNY" }
        },
        "landed": {
          "cny": { "amount": "191.52", "currency": "CNY" },
          "usd": { "amount": "27.71", "currency": "USD" },
          "fx_fee": { "amount": "5.75", "currency": "CNY" }
        },
        "minimum_price": { "amount": "49.84", "currency": "USD" },
        "suggested": {
          "price": { "amount": "49.99", "currency": "USD" },
          "marketplace_fee": { "amount": "7.20", "currency": "USD" },
          "profit": { "amount": "15.08", "currency": "USD" },
          "margin_percent": "30.16"
        }
      },
      {
        "sku": "5187209555",
        "label": "Black / L",
        "in_stock": false,
        "procurement": {
          "goods": { "amount": "38.00", "currency": "CNY" },
          "intake_fee": { "amount": "12.00", "currency": "CNY" },
          "tax": { "amount": "7.00", "currency": "CNY" },
          "total": { "amount": "57.00", "currency": "CNY" }
        },
        "seller_shipping": null,
        "parcel": {
          "lane": "saver",
          "shipping": { "amount": "68.00", "currency": "CNY" },
          "handling_fee": { "amount": "50.00", "currency": "CNY" },
          "tax": { "amount": "16.52", "currency": "CNY" },
          "total": { "amount": "134.52", "currency": "CNY" }
        },
        "landed": {
          "cny": { "amount": "191.52", "currency": "CNY" },
          "usd": { "amount": "27.71", "currency": "USD" },
          "fx_fee": { "amount": "5.75", "currency": "CNY" }
        },
        "minimum_price": { "amount": "49.84", "currency": "USD" },
        "suggested": {
          "price": { "amount": "49.99", "currency": "USD" },
          "marketplace_fee": { "amount": "7.20", "currency": "USD" },
          "profit": { "amount": "15.08", "currency": "USD" },
          "margin_percent": "30.16"
        }
      }
    ]
  },
  "product": null,
  "created_at": "2026-11-04T09:12:41Z"
}

Import from a link

POST/v1/imports

Reads a Taobao, Tmall, Weidian or 1688 listing (a short link, or another shopping agent's link to it, works too) and answers it analysed, in the same call. A listing we read in the last five minutes is not fetched again.

A finds sheet link (https://www.ninjabuy.com/spreadsheets/d/…) imports every product on it: 202 with status: running, then poll the import.

Scopeproducts:write

Body

urlstringrequired
A product link, or a finds sheet.
ship_tostring
Two-letter country to price the parcel for. US when left out.
lanestring
saver or fast. saver when left out.
weight_gintegerrequired
The packed weight of one unit, in grams. Listings carry no weight, so the parcel is priced on yours.
marketplacestring
Where you sell it: ebay, shopify, amazon or tiktok. shopify when left out.
marketplace_feeobject
Optional. percent and fixed (US$) to use instead of the marketplace's headline rate, for your category or plan.
margin_percentstring
The margin to price for, of the sale price. 30 when left out.

Errors

StatusTypeWhen
400bad-bodyweight_g is missing, or a field is out of range.
422unprocessableNot a link we can read, or the listing is gone.
429rate-limitedThe marketplace window is spent; see Rate limits.
curl -X POST "https://www.ninjabuy.com/api/v1/imports" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://weidian.com/item.html?itemID=7750970856",
    "ship_to": "US",
    "weight_g": 180,
    "marketplace": "ebay",
    "margin_percent": "30"
  }'
Response 201
HTTP/2 201 Created

{
  "id": "imp_2c9d",
  "status": "ready",
  "url": "https://weidian.com/item.html?itemID=7750970856",
  "marketplace": "weidian",
  "title": "Heavyweight washed hoodie",
  "seller": "Ruoyi Studio",
  "images": [
    "https://media.ninjabuy.com/listings/weidian-7750970856/1.webp"
  ],
  "read_at": "2026-11-04T09:12:40Z",
  "analysis": {
    "ship_to": "US",
    "lane": "saver",
    "weight_g": 180,
    "covered": true,
    "marketplace": "ebay",
    "marketplace_fee": {
      "percent": "13.6",
      "fixed": { "amount": "0.40", "currency": "USD" },
      "default": true
    },
    "margin_percent": "30",
    "margin_reachable": true,
    "brand_hint": null,
    "variants": [
      {
        "sku": "5187209554",
        "label": "Black / M",
        "in_stock": true,
        "procurement": {
          "goods": { "amount": "38.00", "currency": "CNY" },
          "intake_fee": { "amount": "12.00", "currency": "CNY" },
          "tax": { "amount": "7.00", "currency": "CNY" },
          "total": { "amount": "57.00", "currency": "CNY" }
        },
        "seller_shipping": null,
        "parcel": {
          "lane": "saver",
          "shipping": { "amount": "68.00", "currency": "CNY" },
          "handling_fee": { "amount": "50.00", "currency": "CNY" },
          "tax": { "amount": "16.52", "currency": "CNY" },
          "total": { "amount": "134.52", "currency": "CNY" }
        },
        "landed": {
          "cny": { "amount": "191.52", "currency": "CNY" },
          "usd": { "amount": "27.71", "currency": "USD" },
          "fx_fee": { "amount": "5.75", "currency": "CNY" }
        },
        "minimum_price": { "amount": "49.84", "currency": "USD" },
        "suggested": {
          "price": { "amount": "49.99", "currency": "USD" },
          "marketplace_fee": { "amount": "7.20", "currency": "USD" },
          "profit": { "amount": "15.08", "currency": "USD" },
          "margin_percent": "30.16"
        }
      },
      {
        "sku": "5187209555",
        "label": "Black / L",
        "in_stock": false,
        "procurement": {
          "goods": { "amount": "38.00", "currency": "CNY" },
          "intake_fee": { "amount": "12.00", "currency": "CNY" },
          "tax": { "amount": "7.00", "currency": "CNY" },
          "total": { "amount": "57.00", "currency": "CNY" }
        },
        "seller_shipping": null,
        "parcel": {
          "lane": "saver",
          "shipping": { "amount": "68.00", "currency": "CNY" },
          "handling_fee": { "amount": "50.00", "currency": "CNY" },
          "tax": { "amount": "16.52", "currency": "CNY" },
          "total": { "amount": "134.52", "currency": "CNY" }
        },
        "landed": {
          "cny": { "amount": "191.52", "currency": "CNY" },
          "usd": { "amount": "27.71", "currency": "USD" },
          "fx_fee": { "amount": "5.75", "currency": "CNY" }
        },
        "minimum_price": { "amount": "49.84", "currency": "USD" },
        "suggested": {
          "price": { "amount": "49.99", "currency": "USD" },
          "marketplace_fee": { "amount": "7.20", "currency": "USD" },
          "profit": { "amount": "15.08", "currency": "USD" },
          "margin_percent": "30.16"
        }
      }
    ]
  },
  "product": null,
  "created_at": "2026-11-04T09:12:41Z"
}

Price it again

POST/v1/imports/{id}/analysis

The same listing for another country, lane, weight, marketplace or margin. Priced from what we already read, so it spends no marketplace call. Answers the new analysis and keeps it on the import.

Scopeproducts:write

Path parameters

idstringrequired
The import's id.

Body

ship_tostring
Two-letter country to price the parcel for. US when left out.
lanestring
saver or fast. saver when left out.
weight_gintegerrequired
The packed weight of one unit, in grams. Listings carry no weight, so the parcel is priced on yours.
marketplacestring
Where you sell it: ebay, shopify, amazon or tiktok. shopify when left out.
marketplace_feeobject
Optional. percent and fixed (US$) to use instead of the marketplace's headline rate, for your category or plan.
margin_percentstring
The margin to price for, of the sale price. 30 when left out.

Errors

StatusTypeWhen
404not-foundNo such import on this account.
curl -X POST "https://www.ninjabuy.com/api/v1/imports/imp_2c9d/analysis" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "ship_to": "GB",
    "lane": "fast",
    "weight_g": 180,
    "marketplace": "tiktok",
    "margin_percent": "35"
  }'
Response 200
HTTP/2 200 OK

{
  "ship_to": "GB",
  "lane": "fast",
  "weight_g": 180,
  "covered": true,
  "marketplace": "tiktok",
  "marketplace_fee": {
    "percent": "6",
    "fixed": { "amount": "0.00", "currency": "USD" },
    "default": true
  },
  "margin_percent": "35",
  "margin_reachable": true,
  "brand_hint": null,
  "variants": [
    {
      "sku": "5187209554",
      "label": "Black / M",
      "in_stock": true,
      "procurement": {
        "goods": { "amount": "38.00", "currency": "CNY" },
        "intake_fee": { "amount": "12.00", "currency": "CNY" },
        "tax": { "amount": "7.00", "currency": "CNY" },
        "total": { "amount": "57.00", "currency": "CNY" }
      },
      "seller_shipping": null,
      "parcel": {
        "lane": "saver",
        "shipping": { "amount": "68.00", "currency": "CNY" },
        "handling_fee": { "amount": "50.00", "currency": "CNY" },
        "tax": { "amount": "16.52", "currency": "CNY" },
        "total": { "amount": "134.52", "currency": "CNY" }
      },
      "landed": {
        "cny": { "amount": "191.52", "currency": "CNY" },
        "usd": { "amount": "27.71", "currency": "USD" },
        "fx_fee": { "amount": "5.75", "currency": "CNY" }
      },
      "minimum_price": { "amount": "49.84", "currency": "USD" },
      "suggested": {
        "price": { "amount": "49.99", "currency": "USD" },
        "marketplace_fee": { "amount": "7.20", "currency": "USD" },
        "profit": { "amount": "15.08", "currency": "USD" },
        "margin_percent": "30.16"
      }
    },
    {
      "sku": "5187209555",
      "label": "Black / L",
      "in_stock": false,
      "procurement": {
        "goods": { "amount": "38.00", "currency": "CNY" },
        "intake_fee": { "amount": "12.00", "currency": "CNY" },
        "tax": { "amount": "7.00", "currency": "CNY" },
        "total": { "amount": "57.00", "currency": "CNY" }
      },
      "seller_shipping": null,
      "parcel": {
        "lane": "saver",
        "shipping": { "amount": "68.00", "currency": "CNY" },
        "handling_fee": { "amount": "50.00", "currency": "CNY" },
        "tax": { "amount": "16.52", "currency": "CNY" },
        "total": { "amount": "134.52", "currency": "CNY" }
      },
      "landed": {
        "cny": { "amount": "191.52", "currency": "CNY" },
        "usd": { "amount": "27.71", "currency": "USD" },
        "fx_fee": { "amount": "5.75", "currency": "CNY" }
      },
      "minimum_price": { "amount": "49.84", "currency": "USD" },
      "suggested": {
        "price": { "amount": "49.99", "currency": "USD" },
        "marketplace_fee": { "amount": "7.20", "currency": "USD" },
        "profit": { "amount": "15.08", "currency": "USD" },
        "margin_percent": "30.16"
      }
    }
  ]
}

Retrieve an import

GET/v1/imports/{id}

Read an import again, or poll a finds sheet while it is running.

Scopeproducts:read

Path parameters

idstringrequired
The import's id.

Errors

StatusTypeWhen
404not-foundNo such import on this account.
curl "https://www.ninjabuy.com/api/v1/imports/imp_6t1b" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "id": "imp_6t1b",
  "status": "running",
  "url": "https://www.ninjabuy.com/spreadsheets/d/1aBcD3fGh",
  "progress": { "done": 41, "total": 120 },
  "poll_after_seconds": 10
}

List imports

GET/v1/imports

Newest first. Imports you never saved stay here for you to come back to.

Scopeproducts:read

Query parameters

statusstring
Optional. running, ready or failed.
savedboolean
Optional. true for the ones that became products.
limit, cursor
Pagination
curl "https://www.ninjabuy.com/api/v1/imports?saved=false&limit=2" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "data": [
    {
      "id": "imp_2c9d",
      "status": "ready",
      "title": "Heavyweight washed hoodie",
      "product": null
    },
    {
      "id": "imp_2c7a",
      "status": "ready",
      "title": "Canvas tote, 3 colours",
      "product": null
    }
  ],
  "has_more": true,
  "cursor": "c_2c7a"
}

Save as a product

POST/v1/imports/{id}/save

Keeps the variants you choose as a product, at the prices you set or the suggested ones. Add push_to: shopify to list it on your store in the same call (Push to Shopify).

Scopeproducts:write

Path parameters

idstringrequired
The import's id.

Body

variants[]array
Optional. sku and price of each variant to keep. Every in-stock variant at its suggested price when left out.
titlestring
Optional. Your own title; the seller's is in Chinese more often than not.
push_tostring
Optional. shopify.

Errors

StatusTypeWhen
409invalid-stateAlready saved; product names it.
422unprocessableEvery variant you kept is sold out.
curl -X POST "https://www.ninjabuy.com/api/v1/imports/imp_2c9d/save" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Heavyweight Washed Hoodie",
    "variants": [
      {
        "sku": "5187209554",
        "price": { "amount": "49.99", "currency": "USD" }
      }
    ],
    "push_to": "shopify"
  }'
Response 201
HTTP/2 201 Created

{
  "import": "imp_2c9d",
  "product": "prd_8f2k",
  "status": "draft",
  "channels": [{ "channel": "shopify", "status": "draft" }]
}