What are the maximum no of records that can be fetched using 1 SOAP API call
You can get up to 2,000 records at a time from a query using the SOAP API by changing the batchSize: http://bit.ly/TfkKge
You can then get additional records by calling queryMore with the queryLocator returned with the result.
If the records you are querying for are wide (because you are querying for many fields or long fields), you will get fewer than 2,000 records in each result set even if that's your batch size.
The Maximum no of records a query can fetch is 50000 rows and also there is an apex limit of 3MB for output response for any service(REST OR SOAP)
If we use @Readonly annotation then we can increase the no of records that will be fetched by the query .But note then we cannot do any DML over the data.