Run everything you never had time to implement. Define your process once, and keep it running with Qore.

All reports
Amazon Seller Central
Account Health

Amazon Marketplace Participations Report (Sellers API)

The Amazon Marketplace Participations report is the account's marketplace grid: one row for every marketplace the seller credential reaches, carrying the marketplace's own identity (id, country, default currency and language, storefront domain), the store name the account trades under there, and two flags — whether the account is participating and whether it has suspended listings. It comes from the Sellers API's getMarketplaceParticipations operation, a single synchronous call with no Reports API report type behind it, and it is a snapshot of the account as it stands at the moment of the call rather than a history.

Known upstream as
getMarketplaceParticipations
One row is
One row per marketplace
Refreshed
Point-in-time snapshot
Columns
9
Marketplaces
All marketplaces
History
None inside the file. The response is the account's current participation state, stamped with the snapshot date and carrying no date range, and the two flags change in place as suspensions come and go, so the only history that exists is the run of snapshots you have kept yourself.
Latency
The data is answered live by a synchronous endpoint, so a pull reflects the account's participation state at the moment of the call. How quickly Amazon updates the participation and suspended-listings flags after the underlying event is not established.
Requires

What this report contains

The Marketplace Participations report is the answer to "which marketplaces does this Amazon seller account actually touch, and is it in good standing in each?" One row is one marketplace in the account's grid, and the row has three parts. The marketplace's own identity — reported_marketplace_id, marketplace_name, reported_country_code, default_currency_code, default_language_code, domain_name — describes the marketplace, not the seller. store_name is the one column about the account: the name it trades under there. The two flags, is_participating and has_suspended_listings, are the participation state.

The response is account-level. A single call returns every marketplace the credential reaches, each row naming its own marketplace, so the file is a grid rather than a per-marketplace report. The grid is whatever Amazon says the account touches, which is not the same as its storefronts: the validated production pull answered eight rows, every field present on every one, and among them were rows named "Non-Amazon" carrying an internal store domain (siprod.stores.amazon.ca) sitting beside the real marketplaces. They are often referred to as SI-store rows, after that domain. Amazon's Sellers documentation does not describe them at all — its schema defines a marketplace only as somewhere "a seller can list items and customers can view and purchase items" — and nothing on a live Amazon page expands SI, so the label is not Amazon's.

The reported_ prefix marks a column as the row's content — Amazon's answer — as opposed to the marketplace and currency the pull was run under. default_currency_code keeps the API's "default" for the same reason: it is the marketplace's currency, and it does not have to match anything about the account.

There is no date column. Participation and suspension are states that change in place, so each pull is a snapshot stamped with the day it was taken, not a day's worth of activity.

How to get it

This is not a Reports API report: there is no report type to request, nothing to poll and no document to download. It comes from the Selling Partner API's Sellers API v1, from the getMarketplaceParticipations operation — a synchronous, unpaginated call that returns the whole grid in one response. Call it once per credential; across the production responses checked, the marketplace in the request only chose the regional endpoint — it did not filter the rows — and every row names its own marketplace in reported_marketplace_id. That is a measured observation rather than a documented one: Amazon documents only that a request must go to the endpoint for your target store, and says nothing about what a single response spans. So if your account sells across selling regions, check against your own credential whether a different regional endpoint answers with the same grid or a subset.

Access has been checked against production and is simple. The operation answers for sellers of every authorization vintage — it is a day-one API, and a credential whose grant predates the newer Finances API versions answers fine. It returns 403 for vendors, so this is a sellers-only report; a 403 here on a credential you believed was a seller is worth investigating before anything else.

One trap for anyone building on this table: the sibling getAccount operation, the obvious place to reach for account-level enrichment, behaves differently on both axes. In production it 403s for the same old seller credential that getMarketplaceParticipations answers without complaint, which reads as a newer operation gated by authorization vintage. Amazon documents a second reason that would produce the same 403: getAccount "is only available in the Amazon EU store", so a credential outside the EU store would be refused whatever its vintage. Either way, do not assume that because one works the other will.

Amazon publishes no refresh statement for this response, and the data has no cadence of its own: every response is the state at the moment of the call, and calling twice in an hour returns two snapshots an hour apart. How often to call it is a decision on your side. No Seller Central download produces this file, and no console route to the same grid can be cited either — Amazon's seller help hub, including the Account settings page, renders only behind a Seller Central sign-in, so the API is the only sourceable path.

Sample rows

Illustrative values, not data from a real account. Shown to give the shape of the file.

reported_marketplace_idmarketplace_namereported_country_codedefault_currency_codedefault_language_codedomain_namestore_nameis_participatinghas_suspended_listings
ATVPDKIKX0DERAmazon.comUSUSDen_USwww.amazon.comExample Storetruefalse
A2EUQ1WTGCTBG2Amazon.caCACADen_CAwww.amazon.caExample Storetruetrue
A1AM78C64UM0Y8Amazon.com.mxMXMXNes_MXwww.amazon.com.mxExample Storefalsefalse
AEXAMPLESI001Non-AmazonCACADen_CAsiprod.stores.amazon.caExample Storetruefalse

Field reference

ColumnTypeDescription
reported_marketplace_idstringAmazon's id for the marketplace this row describes, taken from the row itself rather than from the request. This is the row's identity and the column a multi-marketplace response is split on, so one output file holds one value of it.
marketplace_namestringThe marketplace's name as Amazon returns it. On the rows that carry an internal store domain rather than a public storefront, the name is "Non-Amazon"; Amazon's Sellers documentation does not describe those rows at all.
reported_country_codestringThe marketplace's country code, as Amazon labelled the row. A property of the marketplace, not of the account's home marketplace.
default_currency_codestringThe marketplace's default currency. It keeps the API's "default" wording deliberately: this is what the marketplace trades in, not the currency any other report was pulled under, and the two are not always the same thing.
default_language_codestringThe marketplace's default language, as Amazon returns it.
domain_namestringThe marketplace's domain. Real storefronts carry their public domain; the Non-Amazon rows carry an internal store host such as siprod.stores.amazon.ca, which is the quickest way to tell the two kinds of row apart.
store_namestringThe store name the account trades under in this marketplace.
is_participatingboolWhether the account is participating in this marketplace. Amazon's schema says only that true means the seller participates in the marketplace, and the operation returns the marketplaces where the seller can list items; what else counts as participating is not documented. A snapshot value that changes in place, so a row that says false today may have said true last week.
has_suspended_listingsboolWhether the account's listings are suspended in this marketplace. Amazon defines it against the store's Listings Status: true when that status is set to Inactive, otherwise false — so it is an account-level state per marketplace, not a count of individually suppressed listings. Suspensions come and go, so this is the flag most worth diffing between one snapshot and the next.

Use cases

Discovering the marketplace list before pulling anything else. Almost every other SP-API report is requested per marketplace, and requesting one the account does not sell in wastes a call or fails. The reported_marketplace_id column, filtered on is_participating, is the list to drive those pulls from — it comes from Amazon, not from what someone typed into a config file. Amazon defines the flag only as "the seller participates in the marketplace" and describes the response as the marketplaces where the seller can list items, so read it as Amazon's own answer rather than as a test you can restate.

Catching a status change as soon as you pull it. has_suspended_listings is an account-level state: Amazon sets it true when the store's Listings Status in that marketplace is Inactive, so diffing it between consecutive snapshots tells you the whole store went inactive there — not that one ASIN was suppressed — and it moves before a sales drop shows up anywhere. Amazon does not document what puts that status into Inactive, so treat a flip as a prompt to go look in Seller Central rather than as a diagnosis. Because the flag flips back when the status clears, the diff is the signal; the value on its own is only the state at the moment of the call.

Joining currency and language to reports that lack them. Many per-marketplace files carry a marketplace id and nothing else about the marketplace. default_currency_code and default_language_code keyed on reported_marketplace_id turn a bare id into the currency a figure is denominated in and the language a listing is written in.

Mapping ids to storefronts for people. marketplace_name, domain_name and reported_country_code are the human-readable side of a marketplace id, which is what a dashboard filter or a report header should show instead of a fourteen-character code.

Telling a seller credential from a vendor one. Because the operation answers for sellers and 403s for vendors regardless of authorization vintage, the result of this one call is a reliable test of what kind of account a credential belongs to.

Limitations and gotchas

It is a snapshot, not a history. The response covers no period: no date range, no date column and no event log, only the account's state at the moment of the call. If nobody kept the previous file, there is no way to learn from Amazon when a flag changed. Keep every pull if you intend to answer "since when" questions.

Not every row is a storefront. Rows named "Non-Amazon", with an internal domain_name instead of a public storefront, sit in the grid beside the real marketplaces. Counting rows to get "number of marketplaces the account sells in" overstates the answer; filter to the real storefront domains, or on is_participating, before counting.

One call returns everything. Because the response spans every marketplace the credential reaches, looping over marketplaces and calling once for each does not narrow the result — it returns the same grid again, and a naive loader ends up with duplicate rows per marketplace. Call once, then split on reported_marketplace_id.

The currency is the marketplace's, not yours. default_currency_code is what the marketplace trades in. It says nothing about the currency of the pull that produced any other report, and it should not be used as if it did.

Vendors get nothing. The operation returns 403 for vendor credentials. A pipeline that shares code between seller and vendor accounts needs to skip this report for vendors rather than retry it.

getAccount is not a free companion. Enriching this table from the Sellers API's getAccount operation fails on older seller authorizations that this operation serves perfectly well.

FAQ

Is there a Reports API report type for marketplace participations?

No. Marketplace participations come from the Sellers API's getMarketplaceParticipations operation, a synchronous call that returns the whole list in one response. There is no report to create, poll or download.

Can a vendor pull this report?

No. The operation returns 403 for vendor credentials. It answers for sellers of every authorization vintage, including grants that predate the newer Finances API versions.

Why does the file contain a marketplace called Non-Amazon?

Amazon returns them in the account's grid beside the real storefronts. They are often referred to as SI-store rows after their domain — a label Amazon does not use, and its Sellers documentation neither describes these rows nor expands the abbreviation. Their domain is an internal store host rather than a public amazon domain, which is the easiest way to filter them out.

Does this report show when a marketplace was suspended?

No. It shows whether the account's Listings Status in each marketplace is Inactive as of the moment of the call, and nothing about when it got there. To know when it changed you need to have kept earlier snapshots and compare them.

Why is the currency column called default_currency_code?

Because it is the marketplace's default currency, not the account's or the currency any other report was pulled in. The name keeps that distinction visible so nobody joins it as if it were the currency of a sales figure.

Do I need to call it once per marketplace?

No. One call per credential returns every marketplace the account reaches, each row naming its own marketplace id. Calling once per marketplace returns the same grid repeatedly.

Sources

Every researched claim on this page, and the Amazon or Walmart page it came from.

  • marketplaces — developer-docs.amazon.com/sellers-api — the Sellers API page's roles table gives `getMarketplaceParticipations` the regions "NA, EU, FE except where noted" (the noted exception is which roles grant it in FE, not which stores it covers), and developer-docs.amazon.com/sp-api-endpoints maps those three selling regions onto every Amazon store in developer-docs.amazon.com/store-identifiers. The operation itself "Returns a list of marketplaces where the seller can list items", so the grid exists for whichever stores the account sells in: `all`.
  • fields (has_suspended_listings) — developer-docs.amazon.com/getmarketplaceparticipations — the `Participation` schema defines it as "Specifies if the seller has suspended listings. `true` if the seller Listing Status is set to Inactive, otherwise `false`", so it is the store's account-level Listings Status rather than a count of individually suppressed listings. Amazon does not document anywhere what puts that status into Inactive, so the page describes what the flag is and not why it moved.
  • fields (is_participating) — developer-docs.amazon.com/getmarketplaceparticipations — the schema says only "If `true`, the seller participates in the marketplace. Otherwise `false`", and the operation "Returns a list of marketplaces where the seller can list items". Amazon does not define the participation test any further.
  • fields (marketplace_name) — developer-docs.amazon.com/getmarketplaceparticipations — the `Marketplace` schema defines `name` as "The marketplace name", and Amazon's own example and sandbox responses return `"name": "Amazon.com"` for `ATVPDKIKX0DER`, which is the style the sample CSV uses. The same reference gives `countryCode` as ISO 3166-1 alpha-2 and `defaultCurrencyCode` as ISO 4217. It calls `defaultLanguageCode` ISO 639-1, but its own example response returns `en_US` while production rows carry the same locale form, so the column is documented as "as Amazon returns it".
  • seller_type — developer-docs.amazon.com/sellers-api — the Sellers API version table gives its availability as "Sellers only", which agrees with the production finding that the operation 403s for vendor credentials.
  • how-to-get-it — developer-docs.amazon.com/get-seller-market-participation — the use-case page's only step is "Call the `getMarketplaceParticipations` operation", and the reference shows a single `GET /sellers/v1/marketplaceParticipations` with no request parameters, confirming there is no report type to create, poll or download.
  • report_type — developer-docs.amazon.com/getmarketplaceparticipations — there is no Reports API report type, so the upstream identifier is Amazon's own operation name, which the reference titles `getMarketplaceParticipations` and serves at `GET /sellers/v1/marketplaceParticipations` with an empty `parameters` object in its OpenAPI definition.
  • cadence: the response carries no date range and no date column, and both flags change in place, so the rows cover no requested period and the data's own period is a snapshot. — developer-docs.amazon.com/getmarketplaceparticipations documents a synchronous operation with no request parameters and no date arguments, which agrees. `daily` would describe a collection schedule rather than the data's own period, so the page does not use it.
  • category: `account-health`. Every column is either the marketplace's own identity or an account-level state in that marketplace — the store name and the two flags — and — developer-docs.amazon.com/getmarketplaceparticipations defines `hasSuspendedListings` against the store's Listings Status, not against any listing or product. Nothing in the `Marketplace` or `Participation` schema describes a catalog item, so `catalog-and-listings` does not fit.
  • latency: not published. — developer-docs.amazon.com/getmarketplaceparticipations documents the operation as a synchronous call with a rate limit of 0.016 requests per second and a burst of 15, and defines both flags, but says nothing about how quickly either reflects the underlying event. Neither developer-docs.amazon.com/get-seller-market-participation nor developer-docs.amazon.com/sellers-api-v2024-07-14-use-case-guide adds a freshness statement. The page therefore claims only that a pull reflects the state at the moment of the call.
  • how-to-get-it (regional scope) — developer-docs.amazon.com/sp-api-endpoints says only that "you must direct your requests to the correct endpoint based on your target Amazon store" and lists which stores sit behind the NA, EU and FE endpoints; it does not say what a single response spans. The reference takes no request parameters and documents no regional filter. Whether another regional endpoint returns the same grid for the same credential is unsourced, and the page says so rather than asserting it.
  • how-to-get-it (console path): none could be sourced. Amazon's seller help hub renders behind sign-in — sellercentral.amazon.com/G181?locale=en-US (Account settings) returns a sign-in wall rather than content — so no Seller Central navigation path for the account's marketplace grid could be cited on Amazon's own domain, and the API path remains the only sourceable answer.
  • fields (marketplace_name, domain_name — the "Non-Amazon" rows): unsourced on Amazon's side. The `Marketplace` schema at — developer-docs.amazon.com/getmarketplaceparticipations describes only "Information about an Amazon marketplace where a seller can list items and customers can view and purchase items", and neither Sellers use-case guide mentions non-Amazon or internal stores. The rows appear in production pulls; "SI" is not Amazon's term and is left unexpanded, because no live Amazon page defines it.
  • getAccount, documentation vs evidence — developer-docs.amazon.com/get-account-information-eu-seller states "The `getAccount` operation is only available in the Amazon EU store", and the roles table at developer-docs.amazon.com/sellers-api lists `getAccount` as EU-only against `getMarketplaceParticipations`' "NA, EU, FE except where noted". The production evidence attributes the observed 403 on an old seller credential to authorization vintage. Both explanations produce the same 403; the page follows the production evidence and also names Amazon's documented regional limit, and nothing on the evidence's side was changed.