Request an SEM search terms report
Overview
Use the Search Engine Marketing (SEM) search terms report to analyze which customer search queries are triggering your Marketplace advertising campaigns. The report provides detailed metrics, including search terms, impressions, clicks, CTR, and spend, at the search term level. Each row represents one day of performance for a specific search term within a campaign, uniquely identified by the combination of date, campaign ID, SKU, and a search term. Search terms with no performance data on a given day do not appear, even if the associated campaign remains active. Date range and multi-value filters are supported.
Availability: U.S. Marketplace.
When to use this report
Use the SEM search terms report when you want to:
- Analyze which customer search queries are triggering your SEM campaigns.
- Evaluate keyword relevance using search-term-level impressions, clicks, CTR, and ad spend.
- Identify high-performing search queries.
- Review daily search term performance by campaign and SKU across a selected date range.
How it works
- Submit a report request.
POST/v3/reports/reportRequestswithreportType=SEM_SEARCH_TERMSandreportVersion=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 report.
GET/v3/reports/downloadReport?requestId={requestId}.
Endpoint
POST https://marketplace.walmartapis.com/v3/reports/reportRequests?reportType=SEM_SEARCH_TERMS&reportVersion=v1Track 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 filters or from/to bounds for range filters.
- Supported filter types:
rangeFilter,multiValueFilter - Column names:
"Date","Campaign ID"
Column names are case sensitive and must match the CSV headers exactly.
Date range
Use a rangeFilter on the Date column. Dates use YYYY-MM-DD. If you do not pass a range, the report defaults to the last 30 days.
{ "rowFilters": [ { "type": "rangeFilter", "columnName": "Date", "from": "2026-01-01", "to": "2026-06-30" } ]
}Campaign filter
Use a multiValueFilter on the Campaign ID column to 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. Within a single multiValueFilter, the values act as OR logic for that column.
The following example returns rows where:
Dateis between2026-01-01and2026-06-30, andCampaign IDis either123456789or123456790.
{ "rowFilters": [ { "type": "rangeFilter", "columnName": "Date", "from": "2026-01-01", "to": "2026-06-30" }, { "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_SEARCH_TERMS&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_SEARCH_TERMS", "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 --location \ 'https://marketplace.walmartapis.com/v3/reports/reportRequests?reportType=SEM_SEARCH_TERMS&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": [ { "type": "rangeFilter", "columnName": "Date", "from": "2026-04-01", "to": "2026-04-30" }, { "type": "multiValueFilter", "columnName": "Campaign ID", "values": [ "123456789", "123456790" ] } ] }'Rate limits
If you submit too many report requests in a short period of time, you may exceed Walmart’s rate limits and receive HTTP 429 (Too Many Requests) responses. For more details on throttling and best practices, refer to the Rate Limiting Guide.
Report fields
The report contains one row per day per item and search term. Each row is uniquely identified by the reporting date, campaign ID, SKU, and search term. 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 |
| Search Term | Customer search query that triggered your advertising. | Walmart |
| SKU | Stock Keeping Unit. A seller-defined identifier for each product that helps track inventory and pricing. | Seller |
| Item ID | Walmart numeric item identifier. | Walmart |
| 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 it, tracking engagement. | Walmart |
| Average Click-Through Rate (CTR) | Measures how often customers click your ad after it is shown, indicating ad effectiveness. | Walmart |
| Ad Spend | Total amount spent on ads during the reporting period. You pay when a customer clicks your ad. | 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 about 5 hours ago

