Regarding the "index" selection, that's a new feature specific to RETS 1.7.2 . If:
- You're only interested in getting back certain fields (via the "Select" parameter), AND
- The fields you want back are all listed as being in an index, AND
- You send a "Limit" parameter equal to "NONE", AND
- Connect to the server using RETS 1.7.2
Then the server will suspend the rows-per-response limit and give you back a single, complete response with everything.
Typically, only the MLS# field is included in the index (and maybe a few other fields) so this feature is typically used to retrieve back a single, complete list of all of the MLS#'s. Once you have that list, you can
make batch requests to the server to retrieve back the entire record (obviously keeping your batches below 2000. I'd recommend maybe 100 or 200 per batch).
http://retsmd.com can help you a bit with this. Be sure to select 1.7.2 from the login screen. When you pull up the field list, a red heart symbol will appear next to each field included in the index. Only fields marked with the heart symbol can be included in your "Select" parameter.
Other than using the method above, I've seen a lot of different ways to get around it. More than one RETS server vendor sorts records returned. If, say, the field sorted is the Modification Timestamp field, you'd get your 2000 records back and pluck out the timestamp from the last record. Then, you'd issue a follow up query to get back all records since that plucked out timestamp. Get the next 2000, pluck the timestamp, re-issue query.
I've also seen other techniques like using price ranges that are close enough together where they'll never give back more than 2000 records each.
Good luck!
Troy