Skip to content

Bulk Service Response

When you submit a Bulk Service Request, the response tells you which input values were accepted and which were rejected, and why. It does not contain the parsed Amazon data: each accepted value gets a result id that you use to fetch the data from the Data Service.

Response structure

success
message only when the whole request fails
meta_data
bulk_request_id
total_count
accepted_count
invalid_count
insufficient_credit_count
failed_count
rate_limit_exceeded_count
data
accepted[] one object per accepted group
platform, operation, domain, callback_url, group_id
ship_to
zipCode[]
results[] one entry per input value
id, credit, asin | keyword | seller_id | url | link | identifier | ...
invalid[]
failed[]
insufficient_credit[]
rate_limit_exceeded[]

Response fields

Top-level fields

FieldTypeDescription
successbooleantrue when the request was processed, even if only some items were accepted. false only when the whole request is malformed.
messagestringShort error description, present only when the request fails. Example: Bad request.
meta_dataobjectCounts for the whole request.
dataobjectItems grouped by outcome.

meta_data

Each count equals the number of items in the array of the same name in data (for example, invalid_count is the number of items in data.invalid).

FieldTypeDescription
bulk_request_idstringID of this whole submission. Use it to find the request on the Bulk Requests page of the web app.
total_countintegerNumber of input values in the request.
accepted_countintegerValues accepted and queued for processing.
invalid_countintegerValues rejected by validation.
insufficient_credit_countintegerValues not accepted because your credits ran out.
failed_countintegerValues that hit a server-side failure.
rate_limit_exceeded_countintegerValues not accepted because the per-minute limit was reached.

data

Each item appears in exactly one array. Empty arrays may be left out of the response.

FieldTypeDescription
acceptedarrayAccepted groups with their result IDs.
invalidarrayItems rejected by validation.
failedarrayItems that hit a server-side failure.
insufficient_creditarrayItems dropped because your credits ran out.
rate_limit_exceededarrayItems dropped because the per-minute limit was reached.

Every item carries a group_id that identifies the request object it came from, whichever array it ends up in.

data.accepted[]

Each object echoes one accepted group from your request and lists its queries under results.

FieldTypeDescription
platformstringPlatform of the group, for example AMZ.
operationstringOperation of the group, for example DETAIL.
domainstringMarketplace of the group, for example .com.
callback_urlstringURL that receives the webhook for each finished query. The webhook does not carry the parsed data.
ship_toobjectDelivery location used for the group. Without address_id, the marketplace default is used.
ship_to.zipCodearrayZip code or codes used to localize the requests.
group_idstringID of this group. Each object in your request array becomes one group.
resultsarrayOne entry per input value, each with its own result id.

results[]

Each entry is one query. id and credit are always present; the other fields depend on the operation and the input key you sent.

FieldTypeDescription
idstringResult ID. Use it to fetch the result from the Data Service.
creditintegerCredits charged for this query, using the same rules as the Real-Time API. Example: 6 for SIMILAR_PRODUCTS with similar_limit 50.
asinstringSubmitted ASIN. For ASIN input (DETAIL, OFFER, SIMILAR_PRODUCTS and other ASIN operations).
keywordstringSubmitted search term. For SEARCH with keywords.
seller_idstringSubmitted seller ID. For SELLER_PROFILE, SELLER_PRODUCTS, SELLER_FEEDBACK with seller_ids.
urlstringSubmitted full URL. For URL input. Seller URLs use the /sp?seller= form (SELLER_PROFILE, SELLER_FEEDBACK) or the /s?me= form (SELLER_PRODUCTS).
linkstringRelative path of the submitted URL. For URL input, except SELLER_FEEDBACK, which returns only url.
identifierstringSubmitted product code. For PRODUCT_LOOKUP.
identifier_typestringCode type used for the lookup, for example UPC. For PRODUCT_LOOKUP.
min_ratingintegerEcho of the minimum rating filter. For SELLER_FEEDBACK. When you do not send a filter, none is applied and the echoed value may be 0.
max_ratingintegerEcho of the maximum rating filter. For SELLER_FEEDBACK. When you do not send a filter, none is applied and the echoed value may be 0.
similar_limitintegerEcho of similar_limit. For SIMILAR_PRODUCTS.

data.invalid[]

Each object describes a validation error in the request.

FieldTypeDescription
valuestringSubmitted value that caused the rejection.
messagestringReason for the rejection, including the value and its index. Example: Invalid seller_id format at index 0: "AAK72K4OIWDXL827362".
pathstringGeneral location of the error, for example body.
instancePathstringPath to the invalid field in the request, for example /0/payload/seller_ids/0.
platformstringPlatform of the rejected group.
operationstringOperation of the rejected group.
domainstringMarketplace of the rejected group.
payload_countintegerNumber of input values in the rejected group's payload.
group_idstringID of the group the item belongs to.

data.failed[]

Each object is an item that passed validation but hit a server-side failure. The original request fields are echoed so you can identify and resend the item.

FieldTypeDescription
idstringID assigned to the failed item.
platformstringPlatform of the item.
operationstringOperation of the item.
domainstringMarketplace of the item.
payloadobjectThe single input value, for example { "asin": "0000306037" }.
callback_urlstringCallback URL sent with the request.
group_idstringID of the group the item belongs to.

data.rate_limit_exceeded[]

Each object is an item dropped because your plan's Bulk API per-minute limit was reached. The rest of the request is still processed.

FieldTypeDescription
messagestringError message: [!] Minute request limit exceeded.
payloadobjectThe dropped item, with its assigned id and credit.
payload.platformstringPlatform of the item.
payload.operationstringOperation of the item.
payload.domainstringMarketplace of the item.
payload.payloadobjectThe single input value, for example { "asin": "B000PXYADK" }.
payload.callback_urlstringCallback URL sent with the request.
payload.idstringID assigned to the dropped item.
payload.creditintegerNominal credit cost of the item. Not charged.
group_idstringID of the group the item belongs to.

data.insufficient_credit[]

Items are accepted in order until your credits run out. Each remaining item is returned here with the same structure as data.rate_limit_exceeded[].

FieldTypeDescription
messagestringError message: [!] You do not have enough credit to perform this action.
payloadobjectThe dropped item, with platform, operation, domain, payload, callback_url, id and credit as in data.rate_limit_exceeded[].
group_idstringID of the group the item belongs to.

Status values

Each input value is evaluated on its own, so one request can have several outcomes. success stays true in that case, and the meta_data counts show the split. Check the arrays rather than success alone.

OutcomeArrayChargedWhat to do
Accepteddata.acceptedYes, the credit of each resultStore each results[].id and fetch the result from the Data Service.
Invaliddata.invalidNoFix the value at instancePath and send it again.
Faileddata.failedNoSend the item again in a new request.
Insufficient creditdata.insufficient_creditNoAdd credits or wait for your credits to reset, then send the items again.
Rate limit exceededdata.rate_limit_exceededNoSend the items again after the current minute.

An accepted query is processed in the background and ends with status success or failure. Easyparser then sends a webhook to the group's callback_url. See Data Service Response for the query record and its statuses. Results are kept for at most 24 hours.

Sample responses

Sample response: all items accepted (DETAIL, .com)
{
"success": true,
"meta_data": {
"bulk_request_id": "01a0341d-c6a8-722b-9189-2f2ee09608ef",
"total_count": 3,
"accepted_count": 3,
"invalid_count": 0,
"insufficient_credit_count": 0,
"failed_count": 0,
"rate_limit_exceeded_count": 0
},
"data": {
"accepted": [
{
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"callback_url": "https://example.com/webhook",
"ship_to": { "zipCode": ["19805"] },
"group_id": "01a0341d-c6be-7ccb-b916-49e17627b560",
"results": [
{ "asin": "B00004RFMB", "id": "qwe78933-7614-40b3-9a40-def192b74810", "credit": 1 },
{ "asin": "B00004RFMC", "id": "xyz5677e-c8a7-47e1-91a1-966bc448e0e8", "credit": 1 },
{ "asin": "B00004RFMJ", "id": "abc123b5-c346-4909-aa6b-f4194318dc3a", "credit": 1 }
]
}
],
"invalid": [],
"failed": [],
"insufficient_credit": [],
"rate_limit_exceeded": []
}
}
Sample response: invalid item (wrong seller_id)
{
"success": true,
"meta_data": {
"bulk_request_id": "01a038b0-742b-73c3-a3f1-7666d2c4aeb6",
"total_count": 2,
"accepted_count": 1,
"invalid_count": 1,
"insufficient_credit_count": 0,
"failed_count": 0,
"rate_limit_exceeded_count": 0
},
"data": {
"accepted": [
{
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"callback_url": "https://example.com/webhook",
"ship_to": { "zipCode": ["19805"] },
"group_id": "01a038b0-7517-7e9c-b5eb-c56cd50ad8bf",
"results": [
{ "asin": "B00063NUW6", "id": "01a038b0-7516-7fb0-8cb5-b1d98e49a982", "credit": 1 }
]
}
],
"invalid": [
{
"value": "AAK72K4OIWDXL827362",
"message": "Invalid seller_id format at index 0: \"AAK72K4OIWDXL827362\"",
"path": "body",
"instancePath": "/0/payload/seller_ids/0",
"platform": "AMZ",
"operation": "SELLER_PROFILE",
"domain": ".com",
"payload_count": 1,
"group_id": "01a038b0-7517-7e9c-b5eb-c56dc887a371"
}
],
"failed": [],
"insufficient_credit": [],
"rate_limit_exceeded": []
}
}
Sample response: failed items
{
"success": true,
"meta_data": {
"bulk_request_id": "01a03e32-cbf1-7406-a423-462adab9ed87",
"total_count": 8,
"accepted_count": 4,
"invalid_count": 0,
"insufficient_credit_count": 0,
"failed_count": 4,
"rate_limit_exceeded_count": 0
},
"data": {
"accepted": [
{
"group_id": "01a03e32-cbf9-71e4-af94-c8d2abdfe02b",
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"callback_url": "https://example.com/webhook",
"ship_to": { "zipCode": ["19805"] },
"results": [
{ "asin": "0002158639", "id": "019ef8e0-5403-72f3-86dc-110ad7fed88c", "credit": 1 }
]
}
],
"invalid": [],
"failed": [
{
"group_id": "01a03e32-cbf9-71e4-af94-c8d1fda44b9b",
"id": "019ef8e0-5402-7e64-9a7f-f6e8b20be5fe",
"platform": "AMZ",
"operation": "DETAIL",
"payload": { "asin": "0000306037" },
"domain": ".com",
"callback_url": "https://example.com/webhook"
}
],
"insufficient_credit": [],
"rate_limit_exceeded": []
}
}
Sample response: rate-limited items (105 sent, 100 accepted, 5 rate-limited)
{
"success": true,
"meta_data": {
"bulk_request_id": "01a03e32-cbf1-7406-a423-462adab9ed65",
"total_count": 105,
"accepted_count": 100,
"invalid_count": 0,
"insufficient_credit_count": 0,
"failed_count": 0,
"rate_limit_exceeded_count": 5
},
"data": {
"accepted": [
{
"group_id": "01a03e32-cbf9-71e4-af94-c8d1fda44a3c",
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"callback_url": "https://example.com/webhook",
"ship_to": { "zipCode": ["19805"] },
"results": [
{ "asin": "B000PW6WYQ", "id": "019ef4d9-e721-7b23-8ad4-d54c51b3cba2", "credit": 1 }
]
}
],
"invalid": [],
"failed": [],
"insufficient_credit": [],
"rate_limit_exceeded": [
{
"group_id": "01a03e32-cbf9-71e4-af43-c8d1fda54b1e",
"message": "[!] Minute request limit exceeded.",
"payload": {
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"payload": { "asin": "B000PXYADK" },
"callback_url": "https://example.com/webhook",
"id": "019ef4d9-e722-7a30-a866-dee242c5c0f1",
"credit": 1
}
}
]
}
}
Sample response: insufficient credit (80 sent, 74 accepted, 6 dropped)
{
"success": true,
"meta_data": {
"bulk_request_id": "01a03e32-cbf1-7406-a423-462bcab6ar23",
"total_count": 80,
"accepted_count": 74,
"invalid_count": 0,
"insufficient_credit_count": 6,
"failed_count": 0,
"rate_limit_exceeded_count": 0
},
"data": {
"accepted": [
{
"group_id": "01a03e32-cbf9-71e4-af54-c7d1fda44a3k",
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"callback_url": "https://example.com/webhook",
"ship_to": { "zipCode": ["19805"] },
"results": [
{ "asin": "B000PWTITM", "id": "019ef975-16bd-7242-9fd5-c6e031409f70", "credit": 1 }
]
}
],
"invalid": [],
"failed": [],
"insufficient_credit": [
{
"group_id": "01a03e32-cbf9-71e4-af94-c8d4alo98b4s",
"message": "[!] You do not have enough credit to perform this action.",
"payload": {
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"payload": { "asin": "B000PWU23I" },
"callback_url": "https://example.com/webhook",
"id": "019ef975-16bd-7242-9fd5-c6e4f1d939f7",
"credit": 1
}
}
],
"rate_limit_exceeded": []
}
}
Sample results[] entries by input type
// ASIN input (DETAIL, OFFER)
{ "asin": "B00004RFMB", "id": "qwe78933-7614-40b3-9a40-def192b74810", "credit": 1 }
// Keyword input (SEARCH)
{ "keyword": "car", "id": "019eef7c-ee5c-7cde-945c-ecb0eeb4ead3", "credit": 1 }
// Seller ID input (SELLER_PROFILE, SELLER_PRODUCTS, SELLER_FEEDBACK)
{ "seller_id": "A29DXXRE3BKYH7", "id": "019ef42e-8f2d-7ca5-997a-bc87609f5085", "credit": 1 }
// URL input (SELLER_PROFILE): storefront /sp?...seller=
{ "url": "https://www.amazon.com/sp?ie=UTF8&seller=A29DXXRE3BKYH7", "link": "/sp?ie=UTF8&seller=A29DXXRE3BKYH7", "id": "019ef42a-dd1f-7fb4-a07f-af59318f979f", "credit": 1 }
// URL input (SELLER_PRODUCTS): storefront /s?me=
{ "url": "https://www.amazon.com/s?me=A29DXXRE3BKYH7", "link": "/s?me=A29DXXRE3BKYH7", "id": "019ef441-7ee2-722d-ad36-96fdf5296136", "credit": 1 }
// URL input (SELLER_FEEDBACK): storefront /sp?...seller=, returns url only, no link
{ "url": "https://www.amazon.com/sp?ie=UTF8&seller=A29DXXRE3BKYH7", "min_rating": 0, "max_rating": 0, "id": "019ef42d-060a-71d4-b3e1-82e65cf37579", "credit": 1 }
// PRODUCT_LOOKUP
{ "identifier": "724382975021", "identifier_type": "UPC", "id": "019ef43f-14f2-7a8c-b737-466f0ce0b54a", "credit": 1 }
// SIMILAR_PRODUCTS
{ "asin": "B0G2V8898X", "similar_limit": 50, "id": "01a1399a-cb8d-7361-90b0-2f370ece0155", "credit": 6 }

Errors

Problems with single items do not fail the request; they appear in the outcome arrays above. The request as a whole fails only when it cannot be processed.

CaseWhat you receive
Malformed request bodysuccess is false and message describes the error, for example Bad request.
Missing api-key headerError MSG0035: Request header does not have api-key.
Invalid API keyError MSG0023: Invalid API Key. Please verify your API key is valid.
Value fails validationItem in data.invalid, for example Invalid seller_id format at index 0.
Credits run outRemaining items in data.insufficient_credit: [!] You do not have enough credit to perform this action.
Per-minute limit reachedItems above the limit in data.rate_limit_exceeded: [!] Minute request limit exceeded.