diff --git a/lib/ecwid_api/api/products.rb b/lib/ecwid_api/api/products.rb
index <HASH>..<HASH> 100644
--- a/lib/ecwid_api/api/products.rb
+++ b/lib/ecwid_api/api/products.rb
@@ -5,6 +5,7 @@ module EcwidApi
       #
       # Returns an Array of Product objects
       def all(params = {})
+        params[:limit] ||= 100
         response = client.get("products", params)
 
         PagedEnumerator.new(response) do |response, yielder|
@@ -16,7 +17,7 @@ module EcwidApi
             response.body[i].to_i
           end
 
-          if count + offset >= total
+          if count == 0 || count + offset >= total
             false
           else
             client.get("products", params.merge(offset: offset + count))
Fixes infinite loop with an incorrect total.

Apparently the total that comes back in the response from Ecwid
is higher than it should be. This caused an infinite loop because
`count + offset` would never reach the total. Eventually, the offset
would be high enough that there weren't any results. So we'll exit
the loop when the `count == 0` as well.