Request an SEM performance report

Use the SEM performance report to analyze how your Marketplace advertising campaigns perform over time. The report provides detailed metrics (impressions, clicks, CTR, spend, sales, ROAS) to evaluate campaign effectiveness and gain insight into advertising outcomes. Each row represents one day of performance for a specific item, uniquely identified by the combination of date, campaign ID, and item ID. Items with no performance data on a given day do not appear, even if they remain active in the campaign. Date range and multi-value filters are supported.

Availability: U.S. Marketplace.

How it works

  1. Submit a report request.
    POST /v3/reports/reportRequests with reportType=SEM_PERFORMANCE and reportVersion=v1.
  2. Get a requestId.
    Store it to poll for status or to receive a callback.
  3. Track status.
    GET /v3/reports/reportRequests/{requestId} until the status is READY.
  4. Download the file.
    GET /v3/reports/downloadReport?requestId={requestId}.

Endpoint

POST https://marketplace.walmartapis.com/v3/reports/reportRequests?reportType=SEM_PERFORMANCE&reportVersion=v1

Track and download

  1. Track status with GET /v3/reports/reportRequests/{requestId}. Status values are RECEIVED, INPROGRESS, READY, and ERROR.
  2. Download report (when status is READY)
    GET /v3/reports/downloadReport?requestId={requestId}

Tip: If you prefer not to poll, subscribe to report status notifications.

Filters

All filters are optional. Include them in the JSON body as a rowFilters array. Each filter is an object with a type, columnName, and either a values array (for multi-value) or from/to bounds (for range).

  • Supported filter types (inline enums): rangeFilter, multiValueFilter
  • Column names (case sensitive): "Date", "Campaign ID" (must match CSV headers exactly)

Date range (use rangeFilter)

Use a rangeFilter on the Date column. Dates use YYYY-MM-DD.

{ "rowFilters": [ { "type": "rangeFilter", "columnName": "Date", "from": "2025-01-01", "to": "2025-12-31" } ]
}

Campaign filter (use multiValueFilter)

Filter results to specific campaign IDs.

{ "rowFilters": [ { "type": "multiValueFilter", "columnName": "Campaign ID", "values": ["123456789", "123456790"] } ]
}

Combine filters (AND semantics)

Provide multiple filters in the rowFilters array. When you provide multiple objects in rowFilters, the service applies AND logic across them: a row must satisfy every filter. The following example shows:

  • Rows with Date between 2025-01-01 and 2025-12-31 AND
  • Campaign ID equal to 123456789 OR 123456790
{ "rowFilters": [ { "type": "rangeFilter", "columnName": "Date", "from": "2025-01-01", "to": "2025-12-31" }, { "type": "multiValueFilter", "columnName": "Campaign ID", "values": ["123456789", "123456790"] } ]
}

Sample requests and responses

Create report

Request

curl --request POST \ --url "https://marketplace.walmartapis.com/v3/reports/reportRequests?reportType=SEM_PERFORMANCE&reportVersion=v1" \ --header "WM_QOS.CORRELATION_ID: b3261d2d-028a-4ef7-8602-633c23200af6" \ --header "WM_MARKET: US" \ --header "WM_SVC.NAME: Walmart Marketplace" \ --header "WM_SEC.ACCESS_TOKEN: eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM....." \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --data "{}"

Response

{ "requestId": "4b8ac0b6-4a6f-43a0-9b4d-cc9c3f2f9fb3", "status": "RECEIVED" }

Check status

Request

curl --request GET \ --url "https://marketplace.walmartapis.com/v3/reports/reportRequests/4b8ac0b6-4a6f-43a0-9b4d-cc9c3f2f9fb3" \ --header "WM_QOS.CORRELATION_ID: b3261d2d-028a-4ef7-8602-633c23200af6" \ --header "WM_MARKET: US" \ --header "WM_SVC.NAME: Walmart Marketplace" \ --header "WM_SEC.ACCESS_TOKEN: eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM....." \
--header "Accept: application/json" \
--header "Content-Type: application/json"

Response

{ "requestId": "4b8ac0b6-4a6f-43a0-9b4d-cc9c3f2f9fb3", "reportType": "SEM_PERFORMANCE", "status": "READY" }

Download

Request

curl --request GET \ --url "https://marketplace.walmartapis.com/v3/reports/downloadReport?requestId=4b8ac0b6-4a6f-43a0-9b4d-cc9c3f2f9fb3" \ --header "WM_QOS.CORRELATION_ID: b3261d2d-028a-4ef7-8602-633c23200af6" \ --header "WM_MARKET: US" \ --header "WM_SVC.NAME: Walmart Marketplace" \ --header "WM_SEC.ACCESS_TOKEN: eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM....." \
--header "Accept: application/json" \
--header "Content-Type: application/json"

Response

  • Content type: text/csv
  • Body: CSV with the columns listed in the Report fields section.

Sample request with filters and date range

curl --request POST \ --url "https://marketplace.walmartapis.com/v3/reports/reportRequests?reportType=SEM_PERFORMANCE&reportVersion=v1" \ --header "WM_QOS.CORRELATION_ID: b3261d2d-028a-4ef7-8602-633c23200af6" \ --header "WM_MARKET: US" \ --header "WM_SVC.NAME: Walmart Marketplace" \ --header "WM_SEC.ACCESS_TOKEN: eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM....." \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --data '{ "rowFilters": { "campaignId": ["12345", "67890"] }, "time": { "startDate": "2025-07-01", "endDate": "2025-07-31" } }'

Limits

Rate limit is five calls per seller per hour for this report type.

Report fields

The file contains one row for each SKU, campaign, and date combination. Headers are case sensitive and appear exactly as shown.

HeaderDescriptionSource
DateReporting date.Walmart
Campaign IDUnique identifier assigned to a campaign.Walmart
Campaign NameName of the campaign.Seller
SKURefers to the Stock Keeping Unit. A unique identifier for each product that helps track inventory and pricing.Seller
Item IDWalmart numeric item identifier.Walmart
Product NameA unique identifier assigned to a product with a specific set of elements that define the product. Example: Women's Square Neck Ribbed Sweater DressSeller
ImpressionsCounted when your ad is shown, helping you understand the reach of your ad.Walmart
ClicksCounted when a customer interacts with your ad by clicking on it, tracking engagement.Walmart
Average Click-Through Rate (CTR)Measures how often people click your ad after it's shown to them, indicating ad effectiveness.Walmart
Ad SpendThe total amount spent on ads during this time period. You only pay when someone clicks on your ad, making it a cost-effective advertising option.Walmart
SalesThe total sales of both promoted and non-promoted items purchased by customers within 14 days of clicking on one of your ads.Walmart
ROASSales generated from your ads divided by the total ad spend.Walmart

Error handling

Common failures when requesting or downloading reports:

HTTPCodeMessageHow to fix
400MISSING_REQUEST_PARAMRequired parameter missing, such as reportType.Add the missing parameter and retry.
400INVALID_REQUESTUnsupported reportType or invalid filter shape.Verify reportType, reportVersion, and filter format.
401UNAUTHORIZEDInvalid or missing OAuth token.Refresh the token and retry.
404CONTENT_NOT_FOUNDUnknown or expired requestId.Verify the requestId and retention window.
429RATE_LIMIT_EXCEEDEDToo many requests.Back off and retry with jitter.
500INTERNAL_ERRORUnexpected server error.Retry GET calls; contact support if the issue persists.

Next steps