use warnings; use strict; use XML::LibXML; use WWW::Mechanize; use URI; my $api = URI->new("https://product-search.api.cj.com/v2/product-search"); my %constants = ( "website-id" => "1594990" ); my $client = WWW::Mechanize->new( agent => "MyBot/0.0000001", autocheck => 0 ); my $api_call = $api->clone; # To make $api reusable without polluting it. $api_call->query_form( %constants, keywords => "+sony -camera" ); $client->add_header(Authorization => "Some Nonsense Key 1234567890"); $client->get($api_call); my $dom = XML::LibXML->new->parse_string($client->content); print $dom->serialize(1); __END__ Not Authenticated: Some Nonsense Key 1234567890