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
- Submit a report request.
POST/v3/reports/reportRequestswithreportType=SEM_PERFORMANCEandreportVersion=v1. - Get a
requestId.
Store it to poll for status or to receive a callback. - Track status.
GET/v3/reports/reportRequests/{requestId}until the status isREADY. - 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
- Track status with GET
/v3/reports/reportRequests/{requestId}. Status values areRECEIVED,INPROGRESS,READY, andERROR. - 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)
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)
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
Datebetween2025-01-01and2025-12-31AND Campaign IDequal 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.
| Header | Description | Source |
|---|---|---|
| Date | Reporting date. | Walmart |
| Campaign ID | Unique identifier assigned to a campaign. | Walmart |
| Campaign Name | Name of the campaign. | Seller |
| SKU | Refers to the Stock Keeping Unit. A unique identifier for each product that helps track inventory and pricing. | Seller |
| Item ID | Walmart numeric item identifier. | Walmart |
| Product Name | A unique identifier assigned to a product with a specific set of elements that define the product. Example: Women's Square Neck Ribbed Sweater Dress | Seller |
| Impressions | Counted when your ad is shown, helping you understand the reach of your ad. | Walmart |
| Clicks | Counted 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 Spend | The 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 |
| Sales | The total sales of both promoted and non-promoted items purchased by customers within 14 days of clicking on one of your ads. | Walmart |
| ROAS | Sales generated from your ads divided by the total ad spend. | Walmart |
Error handling
Common failures when requesting or downloading reports:
| HTTP | Code | Message | How to fix |
|---|---|---|---|
| 400 | MISSING_REQUEST_PARAM | Required parameter missing, such as reportType. | Add the missing parameter and retry. |
| 400 | INVALID_REQUEST | Unsupported reportType or invalid filter shape. | Verify reportType, reportVersion, and filter format. |
| 401 | UNAUTHORIZED | Invalid or missing OAuth token. | Refresh the token and retry. |
| 404 | CONTENT_NOT_FOUND | Unknown or expired requestId. | Verify the requestId and retention window. |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests. | Back off and retry with jitter. |
| 500 | INTERNAL_ERROR | Unexpected server error. | Retry GET calls; contact support if the issue persists. |
Next steps
- Request and download a report
- Use report filters
- Report status notifications
- Automate recurring generation with the Report Scheduler API.
Updated 1 day ago
