Amazon Product Advertising API client

npm install amazon-product-api
4 downloads in the last day
18 downloads in the last week
34 downloads in the last month

Node.js client for the Amazon Product Advertising API NPM version Dependency Status Build Status

Promise-based Node.js client for Amazon Product Advertising API


The major differences between this project and other implementations are:

  1. Item search returns an EcmaScript6 promise. (Check out a great article about ES6 promises)
  2. Item search is "yieldable". So it plays well with fantastic next-gen libs such as Koa and Co. See example
  3. The entire codebase is very small (~90 LOC)


Install using npm:

npm install amazon-product-api


Basic usage

Require library

amazon = require('amazon-product-api');

Create client

var client = amazon.createClient({
    awsId: "aws ID",
    awsSecret: "aws Secret",
     awsTag: "aws Tag"

Now you can search for items on amazon like this:

//search for Pulp Fiction dvd offers
    keywords: 'Pulp fiction',
    searchIndex: 'DVD',
    responseGroup: 'ItemAttributes,Offers,Images'

Search query options:

condition: availiable options - 'All', 'New', 'Used', 'Refurbished', 'Collectible'. Defaults to 'All'
keywords: Defaults to ''
responseGroup: You can use multiple values by separating them with comma (e.g responseGroup: 'ItemAttributes,Offers,Images'). Defaults to'ItemAttributes'
searchIndex: Defaults to 'All'.


Setup your own server that doesn't require signatures and timestamp and returns JSON

koa = require 'koa'
router = require 'koa-router'
amazonProductApi = require 'amazon-product-api' 

app = koa()
app.use router app

client = amazonProductApi.createClient
  awsTag: process.env.AWS_TAG
  awsId: process.env.AWS_ID
  awsSecret: process.env.AWS_SECRET

app.get '/amazon/:index', (next) ->*
    searchResults = yield client.itemSearch
      keywords: @request.query.title
      searchIndex: @params.index
      responseGroup: 'ItemAttributes,Offers,Images'
    @body = searchResults
  catch error
    @body = error

app.listen process.env.PORT || 5000

Working demo:
Search for Alien DVDs
Search for Streets of Rage videogame
Search for shoes

npm loves you