The "official" answer is this: The MSN Search Web Service may not return the exact number of results you requested for a variety of reasons. The most common reasons include host collapsing and de-duping. If you're experiencing problems with receiving fewer than expected results with every query, please repost the details, but the de-duping behavior is expected with the API for many queries and is consistent with the behavior of our website (http://search.msn.com).
I'm seeing this behavior too...I ask for 50, and I always get either 48 or 49, I have yet to actually get 50.
Tried with Count=11 (I get 11), with Count=12, I get 11.
This pretty much screws up my $total counter...do I have to work-around this one, or is it possible to actually get 50 when I ask for 50 (regardless of duplicates)
This has been my experience as well for as long as I've used the MSN Search API. I suppose it is a bug, but I've never heard any official response on it.
Even on the regular MSN search at www.msn.com, some results pages will have only 9 results instead of 10. For example, try the query "spots" in MSN and you will only get 9 results on page one. I have even seen 9 results on pages other than page one. Using the API, I have seen that the returns match the online results, so using the API to get 10 results for "spots" will only return 9. What it seems like to me is that when using the API and requesting 10 results really means a request for the 1st page of results. And requesting 20 results really means a request for the first 2 pages of results, and so on. So if any of those pages have only 9 results, then you will get the discrepancy between # of results requested and # of results returned.
To get the next set of results, start with the Offset equal to the Count and follow with Count * Page Number for subsequent results. For example, to get ten results starting at Offset 0, make one request. To get the second ten results (11-20), set Offset to 10. Set Offset to 20 for the third set (21-30) and so on. Duplicate removal happens within the result set, so if you ask for 10 and get only 9 it doesn't affect paging.
We're looking into changing this behavior sometime in the future (no ETA at the moment) to return exactly the Count requested. I'll post more here if and when we have decided on the change.
1 result less...
Andrew Tweddle
Keith Blackham
Tried with Count=11 (I get 11), with Count=12, I get 11.
This pretty much screws up my $total counter...do I have to work-around this one, or is it possible to actually get 50 when I ask for 50 (regardless of duplicates)
Adam-CCI
lokeshbhatnagar
John Ferrell
if Count=50/Offset=0, and I get 48 back, then do I start my next query at Offset=49 or 51
James Bender
rodrigobenin
To get the next set of results, start with the Offset equal to the Count and follow with Count * Page Number for subsequent results. For example, to get ten results starting at Offset 0, make one request. To get the second ten results (11-20), set Offset to 10. Set Offset to 20 for the third set (21-30) and so on. Duplicate removal happens within the result set, so if you ask for 10 and get only 9 it doesn't affect paging.
We're looking into changing this behavior sometime in the future (no ETA at the moment) to return exactly the Count requested. I'll post more here if and when we have decided on the change.