Skip to content

Bulk Service Request

Send a POST request with a JSON array of groups to create a Bulk API job. Each group runs one operation on one marketplace for a list of input values (ASINs, keywords, URLs, seller IDs or product codes). The response returns a result id for every accepted input value; you fetch the parsed data later from the Data Service.

Endpoint

POST https://bulk.easyparser.com/v1/bulk

Headers

HeaderRequiredDescription
api-keyYesYour API key, from Account > Plan in the web app.
Content-TypeYesMust be application/json.

Request body

The body is a JSON array. Each object in the array is a group. One request can mix groups with different operations and domains.

Group object

These fields sit at the root of each group.

ParameterTypeRequiredDescription
platformstringYesTarget platform. Allowed: AMZ (Amazon).
operationstringYesOperation code in upper case. Allowed: DETAIL, OFFER, SALES_ANALYSIS_HISTORY, BEST_SELLERS_RANK, PACKAGE_DIMENSION, SEARCH, PRODUCT_LOOKUP, SELLER_PROFILE, SELLER_PRODUCTS, SELLER_FEEDBACK, SIMILAR_PRODUCTS.
domainstringYesAmazon marketplace, written with a leading dot. Example: .com, .co.uk, .de. Use the domain of the URLs or address you send. See Supported Marketplaces.
callback_urlstringYesURL on your server that Easyparser notifies when a query in this group finishes. The notification carries the query record and a link to the result, not the parsed data.
payloadobjectYesInput values and options for the operation. See the tables below.
address_idintegerNoID of an Active saved address for the same domain. DETAIL, OFFER, SEARCH, SELLER_PRODUCTS. Default: marketplace default address.
operation_versionintegerNoResponse version of a versioned operation. BEST_SELLERS_RANK: 1 (legacy) or 2. Send it at the root of the group; it is not read from payload. Default: 2.

For webhook retries and signature verification, see Bulk API overview. For saved addresses, see Address Management.

Payload input keys

Input keys in the Bulk API are plural (asins instead of asin) and take an array of values. Each value becomes one query with its own result id.

OperationCodeInput keys
DetailDETAILasins or urls (product URLs)
OfferOFFERasins
Sales Analysis and HistorySALES_ANALYSIS_HISTORYasins
Best Sellers RankBEST_SELLERS_RANKasins
Package DimensionPACKAGE_DIMENSIONasins
Similar ProductsSIMILAR_PRODUCTSasins
SearchSEARCHkeywords or urls (search URLs)
Product LookupPRODUCT_LOOKUPidentifiers and identifier_type
Seller ProfileSELLER_PROFILEseller_ids or urls (seller profile URLs)
Seller ProductsSELLER_PRODUCTSseller_ids or urls (storefront URLs)
Seller FeedbackSELLER_FEEDBACKseller_ids or urls (seller profile URLs)
ParameterTypeRequiredDescription
asinsarrayConditionalAmazon product IDs: 10 upper-case letters or digits each, for example B0CJB6V2L5.
urlsarrayConditionalFull Amazon URLs of products, search results pages or seller pages, depending on the operation.
keywordsarrayConditionalSearch terms for SEARCH. Maximum 255 characters each.
seller_idsarrayConditionalAmazon seller IDs: start with A, 11 to 15 characters, for example A1MCYUGJD2ILFU.
identifiersarrayConditionalProduct codes for PRODUCT_LOOKUP. Maximum 18 characters each. Keep leading zeros.
identifier_typestringConditionalType of every value in identifiers. Required with identifiers. One type applies to the whole group. Allowed: ASIN, EAN, GTIN, ISBN, JAN, MINSAN, UPC.

Where an operation accepts two input keys, send one of them per group.

Payload options

Options also go inside payload. Each one applies to every input value in the group.

ParameterTypeRequiredDescription
languagestringNoLanguage of the returned content, as a locale code valid for the domain. DETAIL, OFFER, SEARCH, SELLER_PROFILE, SELLER_PRODUCTS. Default: marketplace default. Example: en_US.
currencystringNoCurrency of returned prices, as a lower-case ISO 4217 code valid for the domain. DETAIL, OFFER, SEARCH, SELLER_PRODUCTS. Default: marketplace default. Example: usd.
zip_codestringNoInline delivery address: zip or postal code. Join two-part codes with a comma, for example N0E,1Y0. Same operations as address_id.
citystringNoInline delivery address: city. Required with zip_code on .com.au and with district on .ae; send it alone on .sa and .eg. Same operations as address_id.
districtstringNoInline delivery address: area within city. Only on .ae. Same operations as address_id.
country_codestringNoInline delivery address: ISO 3166 alpha-2 country code, for example CA. Same operations as address_id.
associate_idstringNoAmazon Associates tag added to product links in the result, for example mytag-20. DETAIL, OFFER, SEARCH, SELLER_PROFILE, SELLER_PRODUCTS.
parametersstringNoExtra Amazon URL query parameters, in the same format as the Real-Time API parameters field. Same operations as associate_id.
cookiestringNoCookies forwarded to Amazon in the HTTP Cookie header, in the same format as the Real-Time API cookie field. Same operations as associate_id.
a_plus_contentbooleanNoInclude A+ content. DETAIL. Adds 1 credit per input value. Default: false.
primebooleanNoOnly Prime offers. OFFER. Default: false.
free_shippingbooleanNoOnly offers with free shipping. OFFER. Default: false.
condition_newbooleanNoOnly new offers. OFFER. Default: false.
condition_used_like_newbooleanNoOnly used, like new offers. OFFER. Default: false.
condition_used_very_goodbooleanNoOnly used, very good offers. OFFER. Default: false.
condition_used_goodbooleanNoOnly used, good offers. OFFER. Default: false.
condition_used_acceptablebooleanNoOnly used, acceptable offers. OFFER. Default: false.
min_quantityintegerNoOnly offers with at least this quantity available. OFFER. 0 applies no filter. Default: 0.
sort_bystringNoSort order of the results. SEARCH: default featured; allowed featured, price-asc-rank, price-desc-rank, review-rank, date-desc-rank, exact-aware-popularity-rank. SELLER_PRODUCTS: default featured-rank; allowed featured-rank, exact-aware-popularity-rank.
exclude_sponsoredbooleanNoRemove sponsored results. SEARCH. Default: false.
exclude_refinementsbooleanNoDo not apply Amazon's default refinements. SEARCH, SELLER_PRODUCTS. Default: false.
pageintegerNoResults page to fetch for each input value. SEARCH, SELLER_PRODUCTS, SELLER_FEEDBACK. Default: 1.
history_rangestringNoHistory period in months. SALES_ANALYSIS_HISTORY: default 0; allowed 0, 3, 6, 9, 12. SELLER_FEEDBACK: default all; allowed 1, 3, 12, all.
min_ratingintegerNoLowest star rating to include. SELLER_FEEDBACK. Must be less than or equal to max_rating. Allowed: 1 to 5.
max_ratingintegerNoHighest star rating to include. SELLER_FEEDBACK. Allowed: 1 to 5.
similar_limitintegerNoNumber of similar products to return per ASIN. SIMILAR_PRODUCTS. Costs 1, 6 or 11 credits per ASIN. A string such as "50" is also accepted. Default: 10. Allowed: 10, 50, 100.

The operation lists in this table match the Real-Time API. Several OFFER filters can be set to true in the same group. When you send neither min_rating nor max_rating, no rating filter is applied.

address_id goes at the root of the group, while language, currency and the inline address fields go inside payload. Inline address fields take precedence over address_id. Operations not listed for address_id (for example SIMILAR_PRODUCTS) do not support an address.

BEST_SELLERS_RANK has two versions: 1 (legacy) and 2 (Live since November 1, 2026). Set operation_version at the root of the group, next to operation (see the Best Sellers Rank example below). Inside payload it is not accepted. When a group does not set it, version 2 is used. See Operation Versioning.

Payload examples

Each example is a complete request body with one group.

Detail (DETAIL) by ASIN or URL
[
{
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"asins": ["B0CJB6V2L5", "B0DQY6J9TL"],
"a_plus_content": true
}
}
]

To send product URLs instead, replace asins with urls:

"payload": {
"urls": ["https://www.amazon.com/dp/B0CJB6V2L5"]
}
Offer (OFFER)
[
{
"platform": "AMZ",
"operation": "OFFER",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"asins": ["B0CJB6V2L5"],
"condition_new": true,
"prime": true
}
}
]
Sales Analysis and History (SALES_ANALYSIS_HISTORY)
[
{
"platform": "AMZ",
"operation": "SALES_ANALYSIS_HISTORY",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"asins": ["B0CJB6V2L5"],
"history_range": "3"
}
}
]
Best Sellers Rank (BEST_SELLERS_RANK)
[
{
"platform": "AMZ",
"operation": "BEST_SELLERS_RANK",
"operation_version": 2,
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"asins": ["B0CJB6V2L5"]
}
}
]
Package Dimension (PACKAGE_DIMENSION)
[
{
"platform": "AMZ",
"operation": "PACKAGE_DIMENSION",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"asins": ["B0CJB6V2L5"]
}
}
]
Similar Products (SIMILAR_PRODUCTS)
[
{
"platform": "AMZ",
"operation": "SIMILAR_PRODUCTS",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"asins": ["B0CJB6V2L5"],
"similar_limit": 50
}
}
]
Search (SEARCH) by keyword or URL
[
{
"platform": "AMZ",
"operation": "SEARCH",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"keywords": ["wireless earbuds", "portable charger"],
"sort_by": "price-asc-rank",
"exclude_sponsored": true
}
}
]

To send search URLs instead, replace keywords with urls:

"payload": {
"urls": ["https://www.amazon.com/s?k=wireless+earbuds"]
}
Product Lookup (PRODUCT_LOOKUP)
[
{
"platform": "AMZ",
"operation": "PRODUCT_LOOKUP",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"identifiers": ["B0CJB6V2L5"],
"identifier_type": "ASIN"
}
}
]
Seller Profile (SELLER_PROFILE)
[
{
"platform": "AMZ",
"operation": "SELLER_PROFILE",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"seller_ids": ["A1MCYUGJD2ILFU"]
}
}
]

To send seller profile URLs instead, use "urls": ["https://www.amazon.com/sp?seller=A1MCYUGJD2ILFU"].

Seller Products (SELLER_PRODUCTS)
[
{
"platform": "AMZ",
"operation": "SELLER_PRODUCTS",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"urls": ["https://www.amazon.com/s?me=A1MCYUGJD2ILFU"],
"sort_by": "featured-rank"
}
}
]
Seller Feedback (SELLER_FEEDBACK)
[
{
"platform": "AMZ",
"operation": "SELLER_FEEDBACK",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"seller_ids": ["A1MCYUGJD2ILFU"],
"history_range": "3",
"min_rating": 1,
"max_rating": 5
}
}
]

Example request

This request creates two groups: a DETAIL group with one ASIN and a SEARCH group with one keyword. It costs 2 credits when both items are accepted.

Terminal window
curl --location 'https://bulk.easyparser.com/v1/bulk' \
--header 'api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '[
{
"platform": "AMZ",
"operation": "DETAIL",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"asins": ["B0CJB6V2L5"],
"language": "en_US",
"currency": "usd"
}
},
{
"platform": "AMZ",
"operation": "SEARCH",
"domain": ".com",
"callback_url": "https://example.com/easyparser/webhook",
"payload": {
"keywords": ["wireless earbuds"],
"sort_by": "featured",
"exclude_sponsored": true
}
}
]'

The response lists accepted and rejected items with their result IDs. See Bulk Service Response.

Limits

  • One request can contain up to 5,000 input values, counted across all groups. A larger request is not rejected as a whole: the values that fit are processed and the rest are returned in data.invalid.
  • Each query has a processing timeout of 5 minutes. A query that does not finish in time ends with status failure.
  • Items count against your plan's Bulk API per-minute limit, measured in credits (minutely_bulk_credit_limit in the Account API). Items above the limit are returned in data.rate_limit_exceeded; the rest of the request is still accepted.
  • Each item is charged with the same rules as the matching Real-Time API request, and only accepted items are charged. If your credits run out, the remaining items are returned in data.insufficient_credit. See Credit Consumption.
  • The Bulk API uses a single page per input value instead of min_page and max_page.
  • Results are kept for at most 24 hours and can be removed earlier. Fetch them from the Data Service soon after the webhook arrives.