diff --git a/lib/NGCP/API/Client.pm b/lib/NGCP/API/Client.pm
index 56f99d0..a4fc9b7 100644
--- a/lib/NGCP/API/Client.pm
+++ b/lib/NGCP/API/Client.pm
@@ -8,6 +8,7 @@ use IO::Socket::SSL;
 use LWP::UserAgent;
 use Readonly;
 use Encode;
+use URI;
 
 my $config;
 
@@ -104,18 +105,16 @@ sub request {
 }
 
 sub next_page {
-    my ($self, $uri) = @_;
-
-    (my $params = $uri) =~ s/^[^?]+\?//;
-    $params =~ s/[&?]rows(=\d+)?//;
-    $params =~ s/[&?]page(=\d+)?//;
+    my ( $self, $uri ) = @_;
 
+    my $uri_obj = URI->new( $uri );
     unless ($self->{_ua}) {
         ($self->{_ua},$self->{_urlbase}) = $self->_create_ua($uri);
-        $self->{_collection_url} = sprintf "https://%s%s%spage=1&rows=%d", $self->{_urlbase},
-            $uri =~ m#^/# ? $uri : "/".$uri,
-            $uri =~ m#\?# ? '&' : '?',
-            $self->{_rows};
+        my %params = $uri_obj->query_form;
+        $params{page} //= 1;
+        $params{rows} //= $self->{_rows};
+        $uri_obj->query_form( \%params );
+        $self->{_collection_url} = sprintf "https://%s%s", $self->{_urlbase}, $uri_obj->as_string;
     }
 
     return unless $self->{_collection_url};
@@ -124,14 +123,19 @@ sub next_page {
 
     my $res = NGCP::API::Client::Result->new($self->{_ua}->request($req));
 
+    my $collection_uri_obj = URI->new( $self->{_collection_url} );
+
     undef $self->{_collection_url};
 
     my $data = $res->as_hash();
     if ($data && ref($data) eq 'HASH') {
-        $uri = $data->{_links}->{next}->{href};
-        return $res unless $uri && $uri =~ /page/;
-        $uri .= '&'.$params if $params && $uri !~ /\Q$params\E/;
-        $self->{_collection_url} = $self->_get_url($self->{_urlbase},$uri) if $uri;
+        $uri_obj = URI->new( $data->{_links}->{next}->{href} );
+        return $res unless $uri_obj;
+        my %params = $uri_obj->query_form;
+        return $res unless grep { $_ eq 'page' } keys %params;
+        %params = ($collection_uri_obj->query_form, $uri_obj->query_form);
+        $uri_obj->query_form( \%params );
+        $self->{_collection_url} = $self->_get_url($self->{_urlbase},$uri_obj->as_string) if $uri_obj;
     }
 
     return $res;