let params = { TableName: 'xxx', Limit: 50 // Configure based on needs }; let aItems = []; const recursiveScan = (params) => { return client.scan(params).promise().then((data) => { // Simple Changes to input, optional let newItems = data.Items.map((item) => { return item; }); aItems = aItems.concat(newItems); if(data.LastEvaluatedKey != null){ params.ExclusiveStartKey = data.LastEvaluatedKey; // Recursive call, as deep as we can loop ! return recursiveScan(params); } return Promise.resolve(aItems); }).then((items) => { if(items != null && items.length != null) console.log("Final List : " + items.length); }).catch((error) => { console.log(error); console.log(JSON.stringify(error)); }); };