CopyHero

Read Watched Product

GET
/api/v1/watchlist/products/{watched_product_id}

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

watched_product_id*Watched Product Id
Formatuuid

Response Body

Successful Response

application/json
  1. response

Full per-viewer read projection of a watched product's head state. Content children reuse the core InternalProduct*Out schemas.

id*Id
Formatuuid
watched_store_id*Watched Store Id
Formatuuid
store_name?string|null
store_url*Store Url
external_handle?string|null
external_published_at?|null
external_created_at?|null
is_new*Is New
bestseller_rank?integer|null
bestseller_list_size?integer|null
bestseller_sold_count?|

Products above the last group (the tail, no sales) of the store's latest captured bestseller list, also on a capped list: tail_start - 1, the denominator of bestseller_top_percent. Null without a list or for an empty list.

bestseller_top_percent?|

The top percent of the store's sold products on its latest captured bestseller list the product is in: ceil(bestseller_rank * 100 / (tail_start - 1)), tail_start - 1 = bestseller_sold_count, the products above the list's last group (the tail), also on a capped list; 1-100, 1 = the best 1 %. Lists are captured up to 25,000 products. Null without a rank or a list, and for a product in the last group.

scaling_units_per_day?|

A lower bound of the units the product sold per day, from how far it climbed the groups of its store's Shopify bestseller list between two snapshots scaling_days apart. Null without two comparable lists or when the product had no sales in the older one; 0 = no climb measured. Lags real sales.

scaling_days?|

Days between the two bestseller snapshots scaling_units_per_day compares.

scaling_method?|

F3: the climb is read against the other products of the product's new group (reliable). F1: the product is alone in its group, so only its own group count is compared (less certain).

scaling_overtake_percent?|

The share in percent of the store's sold products (in the older snapshot) the product overtook, net, between the two snapshots scaling_days apart. Only a product that climbed counts; 0 otherwise. Null exactly when scaling_units_per_day is null.

sales_estimate?|

Estimate per #1561 (sales_estimate_expr) from the bestseller rank, with n1, x and u from the store's latest bestseller snapshot; Shopify counts order line items, not units. Unrounded. At least 1 above the tail, 0 in the tail. Null when the product is not ranked or has no snapshot.

sales_method?|

How sales_estimate came about: geschaetzt (estimated, the rank is above the tail) or tail (in the tail, no sales known; 0). Null when not ranked or without a snapshot.

revenue_estimate?|

Revenue from sales_estimate: sales times the first variant's price, in revenue_currency, unrounded. Null when there is no sales estimate, no readable price or no currency.

revenue_upper_1s?|

Always null until its factor is fitted to the #1561 sales formula; then a one-sided 1 sigma upper bound of the revenue (84 % of comparable products below it), in revenue_currency.

revenue_upper_2s?|

Always null until its factor is fitted to the #1561 sales formula; then a one-sided 2 sigma upper bound of the revenue (97.7 % of comparable products below it), in revenue_currency.

revenue_currency?|

Currency of all revenue fields (the store's currency). Null means no revenue fields.

title?string|null
body_html?string|null
handle?string|null
vendor?string|null
product_type?string|null
category?string|null
category_full_name?string|null
tags*array<string>
auto_tags*array<string>
options*array<>
variants*array<>
images*array<>
source_url?string|null
Example Request
curl -X GET 'https://app.copyhero.app/api/v1/watchlist/products/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "watched_store_id": "e604763d-50a8-4edb-b056-d359e3c6cc2f",  "store_name": "string",  "store_url": "string",  "external_handle": "string",  "external_published_at": "2019-08-24T14:15:22Z",  "external_created_at": "2019-08-24T14:15:22Z",  "is_new": true,  "bestseller_rank": 0,  "bestseller_list_size": 0,  "bestseller_sold_count": 0,  "bestseller_top_percent": 0,  "scaling_units_per_day": 0,  "scaling_days": 0,  "scaling_method": "F3",  "scaling_overtake_percent": 0,  "sales_estimate": 0,  "sales_method": "geschaetzt",  "revenue_estimate": 0,  "revenue_upper_1s": 0,  "revenue_upper_2s": 0,  "revenue_currency": "string",  "title": "string",  "body_html": "string",  "handle": "string",  "vendor": "string",  "product_type": "string",  "category": "string",  "category_full_name": "string",  "tags": [    "string"  ],  "auto_tags": [    "string"  ],  "options": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "position": 0,      "values": [        {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "value": "string",          "position": 0        }      ]    }  ],  "variants": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "sku": "string",      "title": "string",      "price": "string",      "compare_at_price": "string",      "image_src": "string"    }  ],  "images": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "src": "string",      "position": 0,      "alt_text": "string",      "thumbnail_url": "string",      "blur_data_url": "string"    }  ],  "source_url": "string"}