Skip to content

Latest commit

 

History

History
92 lines (71 loc) · 3.62 KB

README.md

File metadata and controls

92 lines (71 loc) · 3.62 KB

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

NPM

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)

Installation

Install using npm:

npm install amazon-product-api

Usage

###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
client.itemSearch({
	keywords: 'Pulp fiction',
	searchIndex: 'DVD',
    responseGroup: 'ItemAttributes,Offers,Images'
}).then(function(results){
	console.log(results);
}).catch(function(error){
	console.log(error);
});

###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'.

##Example ###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) ->*
  try
    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