Question: i want to get all the records in particular record type , but i got 1000 only.
This is the code I used.

```
function getRecords() {
    return nlapiSearchRecord('contact', null, null, null);
}

```

I need two codes.

1) Get whole records at a single time

2) Get the records page wise by passing pageindex as an argument to the getRecords [1st =>0-1000 , 2nd =>1000 - 2000 , ...........] 

```
function getRecords(pageIndex) {
    .........
}

```

Thanks in advance

Answer: 
you can't get whole records at a time. However, you can sort results by internalid, and remember the last internalId of 1st search result and use an additional filter in your next search result.

```
var totalResults = [];
var res = nlapiSearchRecord('contact', null, null, new nlobjSearchColumn('internalid').setSort()) || [];
lastId = res[res.length - 1].getId();
 copyAndPushToArray(totalResult, res);
while(res.length < 1000)
{
res = nlapiSearchRecord('contact', null, ['internalidnumber', 'greaterthan', lastId], new nlobjSearchColumn('internalid').setSort());
 copyAndPushToArray(totalResult, res);
lastId = res[res.length - 1].getId();
}

```

Beware, if the number of records are high you may overuse governance limit in terms of time and usage points.

If you remember the lastId you can write a logic in RESTlet to take id as param and then use that as additional filter to return nextPage. 

You can write a logic to get nth pageresult but, you might have to run search uselessly n-1 times.

Also, I would suggest to use `nlapiCreateSearch().runSearch()` as it can return up to 4000 records
Here is another way to get more than 1000 results on a search:

```
function getItems() {

    var columns = ['internalid', 'itemid', 'salesdescription', 'baseprice', 'lastpurchaseprice', 'upccode', 'quantityonhand', 'vendorcode'];

    var searchcolumns = [];
    for(var col in columns) {
        searchcolumns.push(new nlobjSearchColumn(columns[col]));
    }

    var search = nlapiCreateSearch('item', null, searchcolumns);
    var results = search.runSearch();
    var items = [], slice = [], i = 0;
    do {
        slice = results.getResults(i, i + 1000);
        for (var itm in slice) {
            var item = {};
            for(var col in columns) { item[columns[col]] = slice[itm].getValue(columns[col]); }          // convert nlobjSearchResult into simple js object
            items.push(item);
            i++;
        }
    } while (slice.length >= 1000);

    return items;
}

```