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.
- Installation
- Usage
- Examples
- Getting Access Token
- Fetch Items By Keyword
- Get Items By Category
- Get Single Item
- Get Item By Legacy Id
- Get Items By Group Id
- Search Items by Keyword
- Search Items with Free Shipping
- Search Items Based on Price and Condition
- Taxonomy Api(getDefaultCategoryTreeId, getCategoryTree, getCategorySubtree, getCategorySuggestions)
- Get Most Watched item, Get Most Similar Items
- Get All Categories, GetUserDetails, GetShippingCost, GetItemStatus
- Test
- Issues
- Contribution
- LICENSE
npm install ebay-node-api
let eBay = require('ebay-node-api')
let ebay = new eBay({
clientID: '-- Client APP ID ----',
// options - optional HTTP request timeout to apply to all requests.
env: 'SANDBOX' // optional default = 'PRODUCTION'
})
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.
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);
});
const Ebay = require('ebay-node-api');
let ebay = new Ebay({
clientID: '-- Client APP ID ----',
limit: 6
});
ebay.findItemsByKeywords('iphone').then((data) => {
console.log(data); // fetches top 6 results in form of JSON.
}, (error) => {
console.log(error);
});
let ebay = new Ebay({
clientID: '-- Client APP ID ----',
limit: 6
});
ebay.findItemsByCategory(10181).then((data) => {
console.log(data);
}, (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);
});
// Get Item Status
//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.
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.