Amazon Alexa Scraper API: Structured Alexa Shopping Answers
Advanced Data Extraction Specialist
TL;DR:
- The Amazon Alexa Scraper is a Scrapeless LLM Chat Scraper actor (
scraper.alexa) that turns an Alexa shopping question into structured JSON. - One authenticated
POSTto/api/v2/scraper/executewith apromptand acountryreturns the answer plus the products Alexa recommends — no browser automation or app reverse-engineering. - You get back the query, the answer in Markdown and plain text, a
productsarray with price, rating, delivery, and ASIN, a conversation ID for follow-ups, and optional references and suggestions. - Fields are nullable and vary by query:
references,sources, andsuggestionscan come back empty, and prices arrive as display strings, so parse defensively. - Start free. New Scrapeless accounts include free Scraper API credits — sign up at app.scrapeless.com.
Amazon Alexa now answers shopping questions the way a person would ask them — "best noise cancelling headphones under $300" — and replies with a written recommendation and a set of products to buy. That makes Alexa a data surface: the products it names, the prices it shows, and the order it ranks them in are all signals worth tracking. This guide shows how to capture an Alexa answer as structured data with the Scrapeless Scraping API, what the response contains, and where the fields need careful handling. Every request and field below was captured from a live run of the actor.
What You Can Do With the Amazon Alexa Scraper
The actor takes a natural-language shopping prompt and a target country and returns Alexa's answer as JSON. Practically, that lets you:
- Track product recommendations — capture which products Alexa names for a category query, with their ASIN, price, and rating, and watch how the set changes over time.
- Compare across regions — send the same prompt with a different
countryto see how Alexa's picks shift by market. - Monitor AI shopping visibility — measure whether your product or a competitor's appears in Alexa's answer for the queries that matter to you.
- Feed downstream systems — pipe the structured answer into dashboards, spreadsheets, or alerts without scraping the Alexa app yourself.
Why the Scrapeless Alexa Actor
Alexa's shopping answers are generated behind an app, not served as a public web page you can request. The Scrapeless actor handles the collection and returns a clean, developer-friendly envelope, so your code sends a prompt and reads fields rather than driving an app, rotating infrastructure, or maintaining selectors. Alexa is one member of the LLM Chat Scraper family, which means the same request shape you use here also works for the other answer engines — you change the actor value and keep the rest.
Endpoint and Parameters
The actor runs on the synchronous Scraper API endpoint. Authenticate with your API token in the x-api-token header.
- Endpoint:
POST https://api.scrapeless.com/api/v2/scraper/execute - Actor:
scraper.alexa
| Input field | Type | Required | Description |
|---|---|---|---|
prompt |
string | yes | The shopping question to send to Alexa. |
country |
string | yes | Target country code, e.g. US. |
The response is returned synchronously in a task_result object; you do not have to poll. Get your token from the Scrapeless dashboard.
Authenticated Request
A minimal request looks like this (illustrative — replace the token):
bash
curl 'https://api.scrapeless.com/api/v2/scraper/execute' \
--header 'Content-Type: application/json' \
--header 'x-api-token: YOUR_API_TOKEN' \
--data '{
"actor": "scraper.alexa",
"input": {
"prompt": "best noise cancelling headphones under $300",
"country": "US"
}
}'
Python Integration
This example reads the token from the SCRAPELESS_API_KEY environment variable, sends the request, and prints the answer and the recommended products. It uses only the Python standard library.
python
import json
import os
import urllib.request
API_URL = "https://api.scrapeless.com/api/v2/scraper/execute"
API_TOKEN = os.environ["SCRAPELESS_API_KEY"]
payload = {
"actor": "scraper.alexa",
"input": {
"prompt": "best noise cancelling headphones under $300",
"country": "US",
},
}
request = urllib.request.Request(
API_URL,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json", "x-api-token": API_TOKEN},
method="POST",
)
with urllib.request.urlopen(request, timeout=180) as response:
data = json.loads(response.read().decode("utf-8"))
result = data.get("task_result", {})
print("status:", data.get("status"))
print("query:", result.get("user_text"))
print("products returned:", len(result.get("products") or []))
for product in (result.get("products") or [])[:3]:
print("-", product.get("title"))
print(" price:", product.get("price"), "| rating:", product.get("rating"))
print(" asin:", product.get("product_id"))
What You Get Back
The answer arrives inside task_result. The fields below are the ones you will use most; values are an illustrative sample from a live run, trimmed for length.
json
// Illustrative sample from a live scraper.alexa run — field names are real, values trimmed.
{
"status": "success",
"task_id": "1ba323ef-1bee-446c-9a80-090cb9c67231",
"task_result": {
"user_text": "best noise cancelling headphones under $300",
"md_text": "**Premium Noise-Cancelling Headphones** ...",
"raw_text": "**Premium Noise-Cancelling Headphones** {cite_product_1} ...",
"completed": true,
"conversation": { "id": "amzn1.conversation.866ba539-..." },
"products": [
{
"citation_id": "cite_product_1",
"product_id": "B09XS7JWHH",
"title": "Sony Premium Noise Canceling Headphones, 30-Hour Battery, Alexa Voice Control",
"price": "~~$399.99~~ $248.00",
"rating": "{rating 4.2} 19,796 Reviews",
"delivery": "Delivery by July 15",
"image_url": "<product image URL>",
"url": "<dl.amazon.com redirect resolving to /dp/B09XS7JWHH>"
}
],
"references": [],
"sources": [],
"suggestions": [],
"directives": []
}
}
| Field | Type | Description |
|---|---|---|
user_text |
string | The shopping question as Alexa received it. |
md_text |
string | Alexa's answer as Markdown/HTML, including inline product cards. |
raw_text |
string | The answer as plain text, with {cite_product_N} citation markers. |
completed |
bool | Whether the answer finished generating. |
conversation |
object | A conversation id you can carry into a follow-up prompt. |
products |
array | Recommended products: product_id (ASIN), title, price, rating, delivery, image_url, url, citation_id. |
references |
array | Citations behind the answer — may be empty. |
sources |
array | Backing links — may be empty. |
suggestions |
array | Follow-up prompts Alexa offers — may be empty. |
directives |
array | Processing directives from the interaction. |
Common Data-Shape Problems
A few fields need defensive parsing:
user_textis the query, not the answer. The answer lives inmd_text(rich) andraw_text(plain). If you want the prose recommendation, read those.- Prices are display strings, not numbers. A discounted item comes back like
~~$399.99~~ $248.00, where the struck-through value is the list price and the second is the current price. Parse the numbers out rather than casting the field directly. ratingis a formatted string. It arrives as{rating 4.2} 19,796 Reviews, so extract the score and the review count with a small regex instead of expecting a float.- Empty arrays are normal.
references,sources, andsuggestionscan all be empty depending on the query, so guard forNoneand[]before iterating. - Product URLs are redirects. The
urlis andl.amazon.com/redirectlink that resolves to the product's/dp/<ASIN>page; useproduct_idwhen you want the canonical ASIN.
Companion Actors
Because Alexa is part of the LLM Chat Scraper family, the same request pattern covers the other answer engines — swap scraper.alexa for scraper.chatgpt, scraper.gemini, scraper.perplexity, and the rest. Scrapeless also publishes an open-source Alexa scraper example repository with runnable code in five languages if you want a starting point outside Python. For another answer engine that shares the same request shape, see the ChatGPT Scraper API guide.
Conclusion
The Amazon Alexa Scraper turns a conversational shopping answer into structured JSON with one authenticated request: send a prompt and a country, read back the answer text and a products array with ASIN, price, rating, and delivery. Treat prices and ratings as strings, expect some arrays to be empty, and you have a reliable feed for tracking how Alexa recommends products across queries and regions. Amazon documents Alexa for developers, and Amazon's devices newsroom covers how the assistant is evolving.
Ready to capture Alexa answers as data? Start free from the Scrapeless dashboard, see where the actor fits on the Scraping API product page, or compare plans on Scrapeless pricing.
FAQ
Q: What is the Amazon Alexa Scraper?
A: It is a Scrapeless LLM Chat Scraper actor (scraper.alexa) that sends a shopping prompt to Amazon Alexa and returns the answer as structured JSON — the query, the answer in Markdown and plain text, and a products array with ASIN, price, rating, and delivery.
Q: Which endpoint and parameters does it use?
A: POST https://api.scrapeless.com/api/v2/scraper/execute with actor set to scraper.alexa and an input object containing prompt and country. Authenticate with your token in the x-api-token header.
Q: Is the response synchronous?
A: Yes. The result comes back in the task_result object of the same response, so you do not need to poll a separate result endpoint.
Q: Do I need a browser or proxy pool?
A: No. Scrapeless runs the collection behind the API, so your application only sends the request and parses the returned JSON.
Q: Why are references, sources, or suggestions sometimes empty?
A: Those fields depend on the query. A simple category prompt may return products with no separate citations or follow-up suggestions, so treat the arrays as optional and guard before iterating.
Q: How do I read the price and rating?
A: Both are display strings. Price arrives like ~~$399.99~~ $248.00 (list price struck through, current price after), and rating like {rating 4.2} 19,796 Reviews. Extract the numbers with a small parser rather than casting the field directly.
Q: Can I use the same code for other AI assistants?
A: Yes. Alexa shares the LLM Chat Scraper request shape with the other engines, so swapping scraper.alexa for scraper.chatgpt, scraper.gemini, or scraper.perplexity reuses the same integration.
At Scrapeless, we only access publicly available data while strictly complying with applicable laws, regulations, and website privacy policies. The content in this blog is for demonstration purposes only and does not involve any illegal or infringing activities. We make no guarantees and disclaim all liability for the use of information from this blog or third-party links. Before engaging in any scraping activities, consult your legal advisor and review the target website's terms of service or obtain the necessary permissions.



