How to use it
- Hit Copy the whole skill.
- Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat — it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
npx degit gooseworks-ai/goose-skills/skills/research-tools/capabilities/amazon-search#main ~/.claude/skills/amazon-searchFor one project only, change the path to .claude/skills/amazon-search.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text129 lines
Amazon Product Search
Setup
Read your credentials from ~/.gooseworks/credentials.json:
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"
Search for products on Amazon. Find items by keyword, category, or criteria.
When to Use
- User wants to find a product on Amazon
- User asks "find me a [product] on Amazon"
- User wants to compare prices
- User needs product recommendations
How It Works
Uses the SearchAPI Amazon Search engine to query Amazon's catalog.
Usage
Basic Product Search
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"wireless earbuds"}}'
curl equivalent
curl -X POST "https://api.orth.sh/v1/run" \
-H "Content-Type: application/json" \
-d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"wireless earbuds"}}'
Search with Category
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"laptop","category_id":"electronics"}}'
Parameters
- engine (required) - Must be
amazon_search - q (required) - Search query
- category_id - Amazon category (electronics, books, etc.)
- page - Page number for pagination
Response
Top-level keys: search_metadata, search_parameters, search_information, organic_results, filters, pagination.
Each item in organic_results array:
- position (integer) - Result rank
- asin (string) - Amazon product ID
- title (string) - Product name
- link (string) - Product page URL
- image (string) - Product thumbnail URL
- price (string) - Display price (e.g., "$69.99")
- extracted_price (number) - Numeric price for comparison
- original_price / extracted_original_price - Pre-discount price (if on sale)
- currency (string) - Currency code (e.g., "USD")
- rating (number) - Star rating (0-5)
- reviews (integer) - Number of reviews
- is_prime (boolean) - Prime eligible
- is_best_seller / is_amazon_choice (boolean) - Badge flags
- delivery (string) - Delivery estimate text
Pagination: Use page=2, page=3, etc. for more results.
Examples
User: "Find wireless earbuds on Amazon"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"wireless earbuds"}}'
User: "Search for laptops under $500"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"laptop under 500"}}'
User: "Find highly rated coffee makers"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"coffee maker best rated"}}'
Error Handling
- 400 - Invalid engine name or missing
qparameter - 401 - Invalid API key
- 429 - Rate limit — wait and retry
- Empty
organic_resultsarray means no products matched the query — try broader search terms - Use separate
-qflags if&in query string causes issues:-q 'engine=amazon_search' -q 'q=wireless earbuds'
| 1 | |
| 2 | name amazon-search |
| 3 | description Search Amazon products - find items, compare prices, read reviews |
| 4 | source orthogonal |
| 5 | |
| 6 | |
| 7 | |
| 8 | # Amazon Product Search |
| 9 | |
| 10 | ## Setup |
| 11 | |
| 12 | Read your credentials from ~/.gooseworks/credentials.json: |
| 13 | |
| 14 | export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") |
| 15 | export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))") |
| 16 | |
| 17 | |
| 18 | If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login` |
| 19 | |
| 20 | All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"` |
| 21 | |
| 22 | |
| 23 | Search for products on Amazon. Find items by keyword, category, or criteria. |
| 24 | |
| 25 | ## When to Use |
| 26 | |
| 27 | User wants to find a product on Amazon |
| 28 | User asks "find me a [product] on Amazon" |
| 29 | User wants to compare prices |
| 30 | User needs product recommendations |
| 31 | |
| 32 | ## How It Works |
| 33 | |
| 34 | Uses the SearchAPI Amazon Search engine to query Amazon's catalog. |
| 35 | |
| 36 | ## Usage |
| 37 | |
| 38 | ### Basic Product Search |
| 39 | |
| 40 | |
| 41 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 42 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 43 | -H "Content-Type: application/json" \ |
| 44 | -d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"wireless earbuds"}}' |
| 45 | |
| 46 | |
| 47 | <details> |
| 48 | <summary>curl equivalent</summary> |
| 49 | |
| 50 | |
| 51 | curl -X POST "https://api.orth.sh/v1/run" \ |
| 52 | |
| 53 | -H "Content-Type: application/json" \ |
| 54 | -d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"wireless earbuds"}}' |
| 55 | |
| 56 | </details> |
| 57 | |
| 58 | ### Search with Category |
| 59 | |
| 60 | |
| 61 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 62 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 63 | -H "Content-Type: application/json" \ |
| 64 | -d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"laptop","category_id":"electronics"}}' |
| 65 | |
| 66 | |
| 67 | ## Parameters |
| 68 | |
| 69 | **engine** (required) - Must be `amazon_search` |
| 70 | **q** (required) - Search query |
| 71 | **category_id** - Amazon category (electronics, books, etc.) |
| 72 | **page** - Page number for pagination |
| 73 | |
| 74 | ## Response |
| 75 | |
| 76 | Top-level keys: `search_metadata`, `search_parameters`, `search_information`, `organic_results`, `filters`, `pagination`. |
| 77 | |
| 78 | Each item in **`organic_results`** array: |
| 79 | **position** (integer) - Result rank |
| 80 | **asin** (string) - Amazon product ID |
| 81 | **title** (string) - Product name |
| 82 | **link** (string) - Product page URL |
| 83 | **image** (string) - Product thumbnail URL |
| 84 | **price** (string) - Display price (e.g., "$69.99") |
| 85 | **extracted_price** (number) - Numeric price for comparison |
| 86 | **original_price** / **extracted_original_price** - Pre-discount price (if on sale) |
| 87 | **currency** (string) - Currency code (e.g., "USD") |
| 88 | **rating** (number) - Star rating (0-5) |
| 89 | **reviews** (integer) - Number of reviews |
| 90 | **is_prime** (boolean) - Prime eligible |
| 91 | **is_best_seller** / **is_amazon_choice** (boolean) - Badge flags |
| 92 | **delivery** (string) - Delivery estimate text |
| 93 | |
| 94 | **Pagination**: Use `page=2`, `page=3`, etc. for more results. |
| 95 | |
| 96 | ## Examples |
| 97 | |
| 98 | **User:** "Find wireless earbuds on Amazon" |
| 99 | |
| 100 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 101 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 102 | -H "Content-Type: application/json" \ |
| 103 | -d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"wireless earbuds"}}' |
| 104 | |
| 105 | |
| 106 | **User:** "Search for laptops under $500" |
| 107 | |
| 108 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 109 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 110 | -H "Content-Type: application/json" \ |
| 111 | -d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"laptop under 500"}}' |
| 112 | |
| 113 | |
| 114 | **User:** "Find highly rated coffee makers" |
| 115 | |
| 116 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 117 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 118 | -H "Content-Type: application/json" \ |
| 119 | -d '{"api":"searchapi","path":"/api/v1/search","query":{"engine":"amazon_search","q":"coffee maker best rated"}}' |
| 120 | |
| 121 | |
| 122 | ## Error Handling |
| 123 | |
| 124 | **400** - Invalid engine name or missing `q` parameter |
| 125 | **401** - Invalid API key |
| 126 | **429** - Rate limit — wait and retry |
| 127 | Empty `organic_results` array means no products matched the query — try broader search terms |
| 128 | Use separate `-q` flags if `&` in query string causes issues: `-q 'engine=amazon_search' -q 'q=wireless earbuds'` |
| 129 |