Ebay API Client for node js.
The intent is to simplify the request process by handling the tedious logic. It's a thin wrapper around eBay Api.
npm install ebay-node-api
let eBay = require('ebay-node-api')
let ebay = new eBay({
clientID: '-- Client APP ID ----',
env: 'SANDBOX', // optional default = 'PRODUCTION'
headers:{ // optional
'X-EBAY-C-MARKETPLACE-ID': 'EBAY_GB' // For Great Britain https://www.ebay.co.uk
}
})
Creates a new Ebay
instance.
Join eBay developers program. Register your app here https://go.developer.ebay.com/quick-start-guide.
If you using Sandbox environment, make sure to provide env
variable in options as mentioned above.
clientID
- Required(String
) - Client Id key provided when you register in eBay developers program.limit
- optional(Number
) - fetch items functionality - Number that limits the number of data you need in response.details
- optional(Boolean
) - Get User Details functionality - true, if you need details about the user.env
- optional(String
) - Environment, default value is PRODUCTION.headers
- optional(Object
) - Add custom request headers. For reference Header SectioncountryCode
- optional(String
) - sets the GLOBAL-ID parameter which specifies the eBay site to use for searches. Possible IDs
const Ebay = require('ebay-node-api');
let ebay = new Ebay({
clientID: '--Client Id----',
clientSecret: '-- Client Secret --',
body: {
grant_type: 'client_credentials',
//you may need to define the oauth scope
scope: 'https://api.ebay.com/oauth/api_scope'
}
});
ebay.getAccessToken().then((data) => {
console.log(data); // data.access_token
}, (error) => {
console.log(error);
});
//This call searches for items on eBay using specific eBay category ID numbers
ebay.findItemsByCategory(10181).then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
//This call searches for items on eBay by a keyword query (keywords).
ebay.findItemsByKeywords('iphone').then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
ebay.FindItemsByKeywords({
keywords: 'Garmin nuvi 1300 Automotive GPS Receiver',
sortOrder: 'PricePlusShippingLowest', //https://developer.ebay.com/devzone/finding/callref/extra/fndcmpltditms.rqst.srtordr.html
pageNumber: 2,
limit: 10
}).then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
This call searches for items whose listings are completed and are no longer available for sale by category (using categoryId), by keywords (using keywords), or a combination of the two.
ebay.findCompletedItems({
keywords: 'Garmin nuvi 1300 Automotive GPS Receiver',
categoryId: '156955',
sortOrder: 'PricePlusShippingLowest', //https://developer.ebay.com/devzone/finding/callref/extra/fndcmpltditms.rqst.srtordr.html
Condition: 3000,
SoldItemsOnly: true,
entriesPerPage: 2
}).then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
This call searches for items on eBay using specific eBay product values. reference
ebay.findItemsByProduct({
productId: 53039031
}).then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
Searches items on eBay by category or keyword or both. reference
ebay.findItemsAdvanced({
entriesPerPage: 2,
keywords: 'ipad',
ExpeditedShippingType: 'OneDayShipping' //Filtering results with item filters see: https://developer.ebay.com/DevZone/finding/CallRef/findItemsAdvanced.html#Request.itemFilter
}).then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
ebay.getVersion().then((data) => {
console.log(data.version);
}, (error) => {
console.log(error);
});
// Get access token and pass it to this method
ebay.getAccessToken()
.then((data) => {
ebay.getItem('v1|202117468662|0').then((data) => {
console.log(data);
// Data is in format of JSON
// To check the format of Data, Go to this url (https://jsonblob.com/56cbea67-30b8-11e8-953c-5d1886dcf4a0)
})
});
ebay.getAccessToken()
.then((data) => {
ebay.getItemByLegacyId({
'legacyItemId': 2628001 // Get Item Details Using a Legacy ID
'legacyVariationSku': 'V-00031-WHM' // default null
}).then((data) => {
if (!data) console.log(data);
// Data is in format of JSON
// To check the format of Data, Go to this url (https://jsonblob.com/56cbea67-30b8-11e8-953c-5d1886dcf4a0)
});
});
ebay.getAccessToken()
.then((data) => {
ebay.getItemByItemGroup('151915076499').then((data) => {
// Data is in format of JSON
// To check the format of Data, Go to this url (https://jsonblob.com/56cbea67-30b8-11e8-953c-5d1886dcf4a0)
console.log(data)
}, (error) => {
console.log(error);
});
});
ebay.getAccessToken()
.then((data) => {
ebay.searchItems({
keyword: 'drone',
limit: '3'
}).then((data) => {
console.log(data);
// Data is in format of JSON
// To check the format of Data, Go to this url (https://developer.ebay.com/api- docs/buy/browse/resources/item_summary/methods/search#w4-w1-w4-SearchforItemsbyKeyword-0)
})
});
ebay.getAccessToken()
.then((data) => {
ebay.searchItems({
keyword: 'drone',
limit: 3,
// filter: { maxDeliveryCost: 0 } old object based filter method
filter: 'maxDeliveryCost:0' // new string based filter method. Format here: https://developer.ebay.com/api-docs/buy/static/ref-buy-browse-filters.html#conditionIds
}).then((data) => {
console.log(data);
// Data is in format of JSON
// To check the format of Data, Go to this url https://developer.ebay.com/api-docs/buy/browse/resources/item_summary/methods/search#w4-w1-w4-ReturnItemswithFreeShipping-6.
})
});
ebay.getAccessToken()
.then((data) => {
ebay.searchItems({
keyword: 'iphone',
limit: 3,
// filter: { price: '[300..800]', priceCurrency: 'USD', conditions: 'NEW' } old object based filter method
filter: 'price:[300..800],priceCurrency:USD,conditions{NEW}' // new string based filter method. Format here: https://developer.ebay.com/api-docs/buy/static/ref-buy-browse-filters.html#conditionIds
}).then((data) => {
console.log(data);
// Data is in format of JSON
// To check the format of Data, Go to this url https://developer.ebay.com/api-docs/buy/browse/resources/item_summary/methods/search#w4-w1-w4-ReturnItemsBasedonPriceandCondition-7.
})
});
ebay.getMostWatchedItems({
maxResults: 3, // optional
categoryId: 267 // optional
}).then((data) => {
if (data.errorMessage) {
console.log('Error:' + data.errorMessage);
}
console.log(JSON.stringify(data));
});
ebay.getSimilarItems({
maxResults: 3, // optional
itemId=280254552262 // optional
}).then((data) => {
if (data.errorMessage) {
console.log('Error:' + data.errorMessage);
}
console.log(JSON.stringify(data));
// JSON format of similar items.
});
ebay.getAccessToken()
.then((data) => {
ebay.getDefaultCategoryTreeId('EBAY_US').then((data) => {
console.log(data);
// for EN_US { categoryTreeId: '0', categoryTreeVersion: '119' }
});
ebay.getCategoryTree(0).then((data) => {
console.log(data);
// JSON format of complete category tree.
});
ebay.getCategorySubtree(0, 11450).then((data) => {
console.log(data);
// JSON format of complete category sub tree.
});
ebay.getCategorySuggestions(0, 'iphone').then((data) => {
console.log(data);
// JSON format of category suggestions.
});
ebay.getItemAspectsForCategory(0, 67726).then((data) => {
console.log(data);
// JSON format of complete category sub tree.
});
});
ebay.getAllCategories('1234').then((data) => {
console.log(data); //extract data.CategoryArray
}, (error) => {
console.log(error);
});
Get User Profile
//https://developer.ebay.com/devzone/shopping/docs/callref/GetUserProfile.html
ebay.getUserDetails({ userId: 'ajaykumapratha_0', details: true }).then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
//https://developer.ebay.com/devzone/shopping/docs/callref/GetItemStatus.html
ebay.getItemStatus(['153265274986', '153265274986']).then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
//https://developer.ebay.com/devzone/shopping/docs/callref/GetShippingCosts.html
ebay.getShippingCosts({
itemId: '153265274986', destCountryCode: 'US',
destPostalCode: '95128'
}).then((data) => {
console.log(data);
}, (error) => {
console.log(error);
});
All test files are present inside test folder. You can run using
npm run test
If you are facing any issues, you can create the issues here.
Show your ❤️ and support by giving a ⭐. Willing to share your idea or ready to contribute, check here
MIT.
I have mentioned the examples here https://github.com/pajaydev/ebay-node-api/tree/master/demo.