ProductAdvertisingAPI 5.0 NodeJS SDK rewritten in TypeScript.
npm install amazon-pa-api5-node-tsshell
npm install amazon-pa-api5-node-ts --save
`
You should now be able to import * as ProductAdvertisingAPIv1 from 'amazon-pa-api5-node-ts' in TypeScript files.
$3
I assume it works in the browser. I have no idea really. I use it on the server. I'm leaving the documentation up from
the original documentation.
The library also works in the browser environment via npm and browserify. After following
the above steps with Node.js and installing browserify with npm install -g browserify,
perform the following (assuming main.js is your entry file, that's to say your javascript file where you actually
use this library):
`shell
browserify main.js > bundle.js
`
Then include bundle.js in the HTML pages.
$3
I assume it works in Webpack. I'm using it with Vite, for instance, with Astro. I have no idea really. I'm leaving the documentation up from
the original documentation.
Using Webpack you may encounter the following error: "Module not found: Error:
Cannot resolve module", most certainly you should disable AMD loader. Add/merge
the following section to your webpack config:
`javascript
module: {
rules: [
{
parser: {
amd: false
}
}
]
}
`
Getting Started
This is an old example. I'm sure you won't have trouble getting started since I've made every effort not to break the original API but it works with all the type hinting of TypeScript. I'm leaving the documentation up from
the original documentation.
Please follow the installation instruction and execute the following JS code:
Simple example for SearchItems to discover Amazon products with the keyword 'Harry Potter' in Books category:
`javascript
var ProductAdvertisingAPIv1 = require('paapi5-nodejs-sdk');
var defaultClient = ProductAdvertisingAPIv1.ApiClient.instance;
// Specify your credentials here. These are used to create and sign the request.
defaultClient.accessKey = '';
defaultClient.secretKey = '';
/**
* PAAPI Host and Region to which you want to send request.
* For more details refer: https://webservices.amazon.com/paapi5/documentation/common-request-parameters.html#host-and-region
*/
defaultClient.host = 'webservices.amazon.com';
defaultClient.region = 'us-east-1';
var api = new ProductAdvertisingAPIv1.DefaultApi();
// Request Initialization
var searchItemsRequest = new ProductAdvertisingAPIv1.SearchItemsRequest();
/* Enter your partner tag (store/tracking id) and partner type /
searchItemsRequest['PartnerTag'] = '';
searchItemsRequest['PartnerType'] = 'Associates';
/* Specify Keywords /
searchItemsRequest['Keywords'] = 'Harry Potter';
/**
* Specify the category in which search request is to be made
* For more details, refer: https://webservices.amazon.com/paapi5/documentation/use-cases/organization-of-items-on-amazon/search-index.html
*/
searchItemsRequest['SearchIndex'] = 'Books';
/* Specify item count to be returned in search result /
searchItemsRequest['ItemCount'] = 2;
/**
* Choose resources you want from SearchItemsResource enum
* For more details, refer: https://webservices.amazon.com/paapi5/documentation/search-items.html#resources-parameter
*/
searchItemsRequest['Resources'] = ['Images.Primary.Medium', 'ItemInfo.Title', 'Offers.Listings.Price'];
function onSuccess(data) {
console.log('API called successfully.');
var searchItemsResponse = ProductAdvertisingAPIv1.SearchItemsResponse.constructFromObject(data);
console.log('Complete Response: \n' + JSON.stringify(searchItemsResponse, null, 1));
if (searchItemsResponse['SearchResult'] !== undefined) {
console.log('Printing First Item Information in SearchResult:');
var item_0 = searchItemsResponse['SearchResult']['Items'][0];
if (item_0 !== undefined) {
if (item_0['ASIN'] !== undefined) {
console.log('ASIN: ' + item_0['ASIN']);
}
if (item_0['DetailPageURL'] !== undefined) {
console.log('DetailPageURL: ' + item_0['DetailPageURL']);
}
if (
item_0['ItemInfo'] !== undefined &&
item_0['ItemInfo']['Title'] !== undefined &&
item_0['ItemInfo']['Title']['DisplayValue'] !== undefined
) {
console.log('Title: ' + item_0['ItemInfo']['Title']['DisplayValue']);
}
if (
item_0['Offers'] !== undefined &&
item_0['Offers']['Listings'] !== undefined &&
item_0['Offers']['Listings'][0]['Price'] !== undefined &&
item_0['Offers']['Listings'][0]['Price']['DisplayAmount'] !== undefined
) {
console.log('Buying Price: ' + item_0['Offers']['Listings'][0]['Price']['DisplayAmount']);
}
}
}
if (searchItemsResponse['Errors'] !== undefined) {
console.log('Errors:');
console.log('Complete Error Response: ' + JSON.stringify(searchItemsResponse['Errors'], null, 1));
console.log('Printing 1st Error:');
var error_0 = searchItemsResponse['Errors'][0];
console.log('Error Code: ' + error_0['Code']);
console.log('Error Message: ' + error_0['Message']);
}
}
function onError(error) {
console.log('Error calling PA-API 5.0!');
console.log('Printing Full Error Object:\n' + JSON.stringify(error, null, 1));
console.log('Status Code: ' + error['status']);
if (error['response'] !== undefined && error['response']['text'] !== undefined) {
console.log('Error Object: ' + JSON.stringify(error['response']['text'], null, 1));
}
}
api.searchItems(searchItemsRequest).then(
function(data) {
onSuccess(data);
},
function(error) {
onError(error);
}
);
``