GetProductInfo Returns Empty Table for Developer Products Despite Successful pcall

We have encountered a critical issue with MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product) where it intermittently returns an empty table ({}) when called on developer products, yet pcall still evaluates the call as successful. This leads to broken behavior in our experience’s systems that rely on that data—most notably our UI and purchasing logic—because required fields such as PriceInRobux are completely missing.

Importantly, this is not a misuse of the API on our part. The retrieval logic we use is wrapped in a retry-based pcall as shown below:

function module:GetProductInfo(productId, productType)
	local success, result
	local retries = 0
	repeat
		if retries >= 1 then task.wait(0.5) end
		retries += 1
		success, result = pcall(marketplaceService.GetProductInfo, marketplaceService, productId, productType)
	until success or retries > 5
	if not success then warn("an error occurred when getting product info for "..productId..". error: "..tostring(result)) end
	return success and result
end

We then handle the result like this:

local itemData = utilityModule:GetProductInfo(button.Name, Enum.InfoType.Product)
if not itemData then return end
if not itemData.PriceInRobux then
	warn("didn't find PriceInRobux for product "..button.Name..": "..HttpService:JSONEncode(itemData))
	return
end

Over the past few days, this has resulted in thousands of logs of the following form:

didn't find PriceInRobux for product X: []

Over the past 24 hours, we’ve received more than 10,000 warnings of this kind. This has severely affected our users’ ability to see prices or initiate purchases, degrading monetization and damaging user trust. In all these cases, the API returned {} with no PriceInRobux, Name, or any other fields, and yet the pcall result was true.

This bug does not affect other asset types like gamepasses—only developer products seem impacted. We also tested with Price Optimization both enabled and disabled, and the issue still occurs, which strongly suggests that feature is not the cause (although a possible link).

Expected behavior

If MarketplaceService:GetProductInfo fails to retrieve product information—particularly when returning an empty table—it should throw an error, causing pcall to return false. This allows the developer to handle the error properly (e.g., retry, fallback UI, etc.). Returning an empty table while still flagging success leads to silent system failures and incorrect assumptions that the product was fetched successfully.

A private message is associated with this bug report

2 Likes

@archang3l289 Hi. Do you mind looking into this?

Seems like this has been fixed. Can an engineer confirm? Thanks a lot.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.