Mercado Libre
Mercado Libre Questions API
A page of buyer questions on a Mercado Libre listing with the seller's answers and answer dates. Mercado Libre shows no question dates. Page through with next_offset. Costs 2 credits per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonitem_idstringItem (listing) id, as returned in item_id by Search or Product. MLM-3571336480 is accepted too. Pass exactly one of item_id or url.
Example: MLM3571336480
urlstringA listing page URL, or a product (/p/, /up/) URL: a product's questions are those of the listing in its buy box.
Example: https://www.mercadolibre.com.mx/apple-iphone-15-128-gb-azul-distribuidor-autorizado/p/MLM1027172667
offsetintegerdefault:0Where to start: next_offset from the previous page.
Example: 20
Notes
Answer dates, no question dates. Each question carries the seller's answer and the date it was answered (answer.date, YYYY-MM-DD). Mercado Libre does not show when a question was asked, so there is no question date. answer is null for an unanswered question.
Paging. The first page holds 20 to 40 questions. Pass next_offset back as offset for the next page; it is null on the last page.
- Questions belong to a listing (
item_id), not a catalog product. Pass a product URL and the API reads the questions of the listing in its buy box;resolved_fromthen names the product it started from. A bareproduct_idis not accepted: takeitem_idfrom Search or Product. - A listing with no public questions returns 404 and is billed. A product with nothing in its buy box returns 404 too. Temporary failures (502/503) are never billed.
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
offset = 0
while offset is not None:
res = client.mercadolibre.questions("MLM3571336480", offset=offset)
data = res["data"]
for q in data["questions"]:
answer = q["answer"]
print(q["text"], "->", answer["text"] if answer else "(unanswered)")
offset = data["next_offset"]Response