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

  1. Submit a report request.
    POST /v3/reports/reportRequests with reportType=SEM_SEARCH_TERMS 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 report.
    GET /v3/reports/downloadReport?requestId={requestId}.

Endpoint

POST https://marketplace.walmartapis.com/v3/reports/reportRequests?reportType=SEM_SEARCH_TERMS&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 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:

  • Date is between 2026-01-01 and 2026-06-30, and
  • Campaign ID is either 123456789 or 123456790.
{ "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.

HeaderDescriptionSource
DateReporting date.Walmart
Campaign IDUnique identifier assigned to a campaign.Walmart
Campaign NameName of the campaign.Seller
Search TermCustomer search query that triggered your advertising.Walmart
SKUStock Keeping Unit. A seller-defined identifier for each product that helps track inventory and pricing.Seller
Item IDWalmart numeric item identifier.Walmart
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 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 SpendTotal 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:

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



Did this page help you?