https://api.nexscope.ai/seo/shoppingProductDetailsRun this API
Send a JSON request to execute this API and receive the documented response payload.
Endpoint
| Method | POST |
| Path | https://api.nexscope.ai/seo/shoppingProductDetails |
| Auth | Bearer API key |
| Content-Type | application/json |
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
productRef | string | required | Product ref value used by this API operation. Pattern: ^[0-9a-f]{64}$ |
task_id | string | required | Task id value used by this API operation. Format: uuid |
Response example
Example response envelope from the documented SEO API contract.
{
"code": 0,
"cost": "-1",
"data": {
"callId": "synthetic-call",
"completedAt": null,
"coverage": {
"missing": [
{
"field": "synthetic",
"reason": "UPSTREAM_FIELD_MISSING"
}
],
"status": "PARTIAL"
},
"requestedAt": "123",
"result": {
"details": [
{
"description": "synthetic",
"features": [
"synthetic"
],
"images": [
"synthetic"
],
"specifications": [
{
"blockName": "synthetic",
"name": "synthetic",
"value": "synthetic"
}
],
"title": "synthetic",
"url": "synthetic"
}
],
"meta": {
"market": {
"country": "synthetic",
"language": "synthetic",
"locationCode": 1
},
"missing": [
{
"path": "synthetic",
"reason": "synthetic"
}
],
"missingOverflow": false,
"retrievedAt": 9007199254740992,
"sampledAt": 9007199254740992,
"source": "synthetic",
"truncated": false
},
"productRef": "synthetic",
"sourceCallId": "synthetic"
},
"schemaVersion": "synthetic",
"source": "synthetic",
"status": "PARTIAL",
"usage": {
"billingStatus": "UNAPPROVED",
"chargedCredits": "0"
}
},
"msg": null,
"time": "2026-01-01 00:00:00",
"traceId": "synthetic-trace",
"ts": "9007199254740993"
}Response fields
| Name | Type | Required | Description |
|---|---|---|---|
code | integer | required | 0 is a successful envelope; inspect data.status separately. Allowed: 0, 42008, 42009 |
cost | string | required | Elapsed processing milliseconds; not price. -1 for non-web context. |
data | object | required | Data value used by this API operation. |
data.callId | string | null | optional | Call id value used by this API operation. |
data.completedAt | string | integer | null | optional | Completed at value used by this API operation. |
data.coverage | object | optional | Coverage value used by this API operation. |
data.coverage.missing | array | optional | Missing value used by this API operation. |
data.coverage.missing[] | object | required | Item in data coverage missing. |
data.coverage.missing[].field | string | optional | Field value used by this API operation. |
data.coverage.missing[].reason | string | optional | Reason value used by this API operation. |
data.coverage.status | string | optional | Status value used by this API operation. |
data.requestedAt | string | integer | null | optional | Requested at value used by this API operation. |
data.result | object | null | required | Result value used by this API operation. |
data.result.details | array | required | Details value used by this API operation. Maximum items: 10 |
data.result.details[] | object | required | Item in data result details. |
data.result.details[].description | any | required | Description value used by this API operation. |
data.result.details[].features | array | required | Features value used by this API operation. Maximum items: 30 |
data.result.details[].features[] | string | required | Item in data result details[] features. Maximum length: 1024 |
data.result.details[].images | array | required | Images value used by this API operation. Maximum items: 20 |
data.result.details[].images[] | string | required | Item in data result details[] images. Maximum length: 4096 |
data.result.details[].specifications | array | required | Specifications value used by this API operation. Maximum items: 50 |
data.result.details[].specifications[] | object | required | Item in data result details[] specifications. |
data.result.details[].specifications[].blockName | any | required | Block name value used by this API operation. |
data.result.details[].specifications[].name | any | required | Name value used by this API operation. |
data.result.details[].specifications[].value | any | required | Value value used by this API operation. |
data.result.details[].title | any | required | Title value used by this API operation. |
data.result.details[].url | any | required | Url value used by this API operation. |
data.result.meta | object | required | Meta value used by this API operation. |
data.result.meta.market | object | required | Market value used by this API operation. |
data.result.meta.market.country | string | required | Country value used by this API operation. Constant: US |
data.result.meta.market.language | string | required | Language value used by this API operation. Constant: en |
data.result.meta.market.locationCode | integer | required | Location code value used by this API operation. Constant: 2840 |
data.result.meta.missing | array | required | Missing value used by this API operation. Maximum items: 100 |
data.result.meta.missing[] | object | required | Item in data result meta missing. |
data.result.meta.missing[].path | string | required | Path value used by this API operation. Maximum length: 256 |
data.result.meta.missing[].reason | string | required | Reason value used by this API operation. Allowed: MISSING, NULL, INVALID, UNSUPPORTED, TRUNCATED |
data.result.meta.missingOverflow | boolean | required | Missing overflow value used by this API operation. |
data.result.meta.retrievedAt | any | required | Retrieved at value used by this API operation. |
data.result.meta.sampledAt | any | required | Sampled at value used by this API operation. |
data.result.meta.source | string | required | Source value used by this API operation. Constant: DATAFORSEO_GOOGLE_SHOPPING_PRODUCT_INFO |
data.result.meta.truncated | boolean | required | Truncated value used by this API operation. |
data.result.productRef | string | required | Product ref value used by this API operation. Pattern: ^[0-9a-f]{64}$ |
data.result.sourceCallId | string | required | Source call id value used by this API operation. Format: uuid |
data.schemaVersion | string | null | optional | Schema version value used by this API operation. |
data.source | string | null | optional | Source value used by this API operation. |
data.status | string | optional | Status value used by this API operation. Allowed: SUCCESS, PARTIAL, EMPTY, PROCESSING, UNKNOWN, FAILED |
data.usage | object | null | optional | Usage value used by this API operation. |
data.usage.billingStatus | string | null | optional | Billing status value used by this API operation. |
data.usage.chargedCredits | string | integer | null | optional | Charged credits value used by this API operation. |
msg | string | null | required | Available upstream msg/errmsg/message is preferred for success and failure; Chinese is translated to English. Missing successful message is null. Platform-only errors and task states use platform English. Message text never determines success or retry. |
time | string | required | yyyy-MM-dd HH:mm:ss |
traceId | string | null | required | Trace id value used by this API operation. |
ts | string | required | Epoch milliseconds; global long serializer. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].description | string | required | Description value used by this API operation. Maximum length: 8192 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].description | null | required | Description value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].specifications[].blockName | string | required | Block name value used by this API operation. Maximum length: 1024 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].specifications[].blockName | null | required | Block name value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].specifications[].name | string | required | Name value used by this API operation. Maximum length: 1024 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].specifications[].name | null | required | Name value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].specifications[].value | string | required | Value value used by this API operation. Maximum length: 8192 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].specifications[].value | null | required | Value value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].title | string | required | Title value used by this API operation. Maximum length: 1024 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].title | null | required | Title value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].url | string | required | Url value used by this API operation. Maximum length: 4096 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.details[].url | null | required | Url value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.meta.retrievedAt | integer | required | Retrieved at value used by this API operation. Minimum: 0 Maximum: 9007199254740991 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.meta.retrievedAt | null | required | Retrieved at value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.meta.sampledAt | integer | required | Sampled at value used by this API operation. Minimum: 0 Maximum: 9007199254740991 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.meta.sampledAt | null | required | Sampled at value used by this API operation. |
Accepted processing response
code 0 confirms acceptance. Use data.callId to query the same request; processing is not completion.
| Name | Type | Required | Description |
|---|---|---|---|
code | integer | required | 0 is a successful envelope; inspect data.status separately. Constant: 0 |
cost | string | required | Elapsed processing milliseconds; not price. -1 for non-web context. |
data | object | required | Data value used by this API operation. |
data.callId | string | null | required | Call id value used by this API operation. |
data.reason | string | required | Reason value used by this API operation. Constant: IN_PROGRESS |
data.retryable | boolean | optional | Retryable value used by this API operation. |
data.status | string | required | Status value used by this API operation. Constant: PROCESSING |
data.taskId | string | null | optional | Task id value used by this API operation. |
msg | string | null | required | Available upstream msg/errmsg/message is preferred for success and failure; Chinese is translated to English. Missing successful message is null. Platform-only errors and task states use platform English. Message text never determines success or retry. |
time | string | required | yyyy-MM-dd HH:mm:ss |
traceId | string | null | required | Trace id value used by this API operation. |
ts | string | required | Epoch milliseconds; global long serializer. |
Error response
| Name | Type | Required | Description |
|---|---|---|---|
code | integer | required | 0 is a successful envelope; inspect data.status separately. |
cost | string | required | Elapsed processing milliseconds; not price. -1 for non-web context. |
data | object | required | Data value used by this API operation. |
data.callId | string | null | required | Call id value used by this API operation. |
data.reason | string | null | required | Reason value used by this API operation. |
data.retryable | boolean | optional | Retryable value used by this API operation. |
data.status | string | null | required | Status value used by this API operation. |
data.taskId | string | null | optional | Task id value used by this API operation. |
msg | string | null | required | Available upstream msg/errmsg/message is preferred for success and failure; Chinese is translated to English. Missing successful message is null. Platform-only errors and task states use platform English. Message text never determines success or retry. |
time | string | required | yyyy-MM-dd HH:mm:ss |
traceId | string | null | required | Trace id value used by this API operation. |
ts | string | required | Epoch milliseconds; global long serializer. |
Retrieve a processing result
A response withPROCESSING and a callIdmeans the result is still being prepared. Use the result query below with the returned identifier. This lookup reads the stored result and does not spend credits.
curl -X GET https://api.nexscope.ai/seo/shoppingProductDetails/calls/{callId} \
-H "Authorization: Bearer nk-xxxxxxxxxxxxxxxxx"Responses
| Code | Description |
|---|---|
| 200 | Default HTTP response for both success and many business errors. Only outer JSON code 0 indicates success or asynchronous acceptance; inspect data for the result. |
| 429 | Execution admission rate limit; honor Retry-After when present. |
| 503 | Execution admission is temporarily unavailable; honor Retry-After when present. |
| Opt-in | X-Nexscope-Http-Status: semantic maps controller-handled business errors to HTTP status on run and task routes. Pre-authentication failures, such as a missing API key (code 11209), may still return HTTP 200 before this mapping. Always check the outer JSON code; malformed requests and infrastructure failures may also return non-200 HTTP responses. |
Data source, freshness, and limitations
Source, freshness, coverage, rate limits, and estimation notes are not specified in this API definition unless they appear in the request or response field documentation above. Do not assume official marketplace data or real-time freshness when it is not explicitly documented.