TikTok Shop Product Page by URL (Price, Variants, Stock, Star Ratings)
omnial/tiktok-shop-product-page-by-url
Given a TikTok Shop product page URL, returns the product as its page shows it: title, id, category path, units sold, price and lowest variant price, specifications, variant options (such as color and size) and every variant with its stock and sale price (plus original price and discount where shown); the shop's name, rating and product count; and the review score, count and 1-to-5 star breakdown. No review text, reviewer or shopper data comes back.
Price
Up to $0.0164 per call; you pay what the call used
The price shown is the price you pay. No monthly minimum. Top-ups start at $5.
Data source
TikTok Shop
Data from TikTok Shop.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/tiktok-shop-product-page-by-url" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/tiktok-shop-product-page-by-url" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/tiktok-shop-product-page-by-url", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/tiktok-shop-product-page-by-url", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0164 |
- Updated
- Oct 14, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"pattern": "^https://www\\.tiktok\\.com/shop/pdp/[0-9]+$",
"description": "The product's TikTok Shop page URL in the form https://www.tiktok.com/shop/pdp/ followed by the numeric product id, with nothing after it. Other link forms (shop.tiktok.com, share links, a name slug in the path) were not tested and are not accepted."
},
"render": {
"enum": [
false
],
"type": "boolean",
"default": false,
"description": "Whether to render the page with JavaScript before reading it; only false (the default, as tested) is offered."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"result": {
"type": "object",
"properties": {
"loaderData": {
"type": "object",
"properties": {
"product_page": {
"type": "object",
"properties": {
"page_config": {
"type": "object",
"properties": {
"components_map": {
"type": "array",
"items": {
"type": "object",
"properties": {
"component_data": {
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"category_name": {
"type": "string"
}
}
},
"description": "The category path, broadest first."
},
"review_info": {
"type": "object",
"properties": {
"review_ratings": {
"type": "object",
"properties": {
"review_count": {
"type": "string",
"description": "Number of ratings, as a numeric string."
},
"overall_score": {
"type": "number",
"description": "Average star rating out of 5."
},
"rating_result": {
"type": "object",
"properties": {
"1": {
"type": "string"
},
"2": {
"type": "string"
},
"3": {
"type": "string"
},
"4": {
"type": "string"
},
"5": {
"type": "string"
}
},
"description": "How many ratings gave each star count, keyed 1 to 5, as numeric strings."
}
}
}
}
},
"product_info": {
"type": "object",
"properties": {
"skus": {
"type": "array",
"items": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"currency_name": {
"type": "string",
"description": "ISO currency code."
},
"discount_format": {
"type": "string",
"description": "Discount off the original price, such as 46%; only on some variants."
},
"sale_price_decimal": {
"type": "string",
"description": "Sale price, as a number string."
},
"origin_price_decimal": {
"type": "string",
"description": "Original price, as a number string; only on some variants."
}
}
},
"stock": {
"type": "number",
"description": "Units in stock."
},
"sku_id": {
"type": "string"
},
"sku_sale_props": {
"type": "array",
"items": {
"type": "object",
"properties": {
"prop_name": {
"type": "string"
},
"prop_value": {
"type": "string"
}
}
},
"description": "The option values that make this variant."
}
}
},
"description": "Every variant."
},
"price": {
"type": "object",
"properties": {
"currency": {
"type": "string",
"description": "ISO currency code."
},
"real_price": {
"type": "string",
"description": "The price as displayed, with currency symbol."
},
"min_sku_price": {
"type": "string",
"description": "The lowest variant price, as a number string."
}
}
},
"title": {
"type": "string",
"description": "Product title."
},
"seller": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The shop's name."
},
"rating": {
"type": "string",
"description": "The shop's rating out of 5, as a string."
},
"product_count": {
"type": "string",
"description": "How many products the shop lists, as a numeric string."
}
}
},
"product_id": {
"type": "string",
"description": "Product id."
},
"sale_props": {
"type": "array",
"items": {
"type": "object",
"properties": {
"prop_name": {
"type": "string"
},
"sale_prop_values": {
"type": "array",
"items": {
"type": "object",
"properties": {
"prop_value": {
"type": "string"
}
}
}
}
}
},
"description": "The variant options, such as color and size, with their values."
},
"sold_count": {
"type": "string",
"description": "Units sold since listing, excluding returns, as a numeric string."
},
"specifications": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"description": "Attribute name and value pairs."
}
}
}
}
}
}
},
"description": "The page's components, in page order; only the product component has a non-empty `component_data` (the fourth of twelve in testing)."
}
}
}
}
}
}
}
}
}
},
"description": "The product page. Everything sits under `result.loaderData.product_page.page_config.components_map`, a list of page components: one of them carries the product in `component_data.product_info`; the others come back as empty objects or with an empty `component_data`."
}