Conversion tables A-K
  Conversion tables L-Z
  SPAM database query
  Reverse WHOIS utility
  North America area codes
  PHP Example forums

PHP example repository.

Web www.web-max.ca
Back to examples
Script to calculate your sites Google SERP position / rank.

The following script allows you to retrieve the google page position for your site for a given search phrase. The script performs the search, and automatically pages through the results until it finds your domain.

A few things to note about this script:

The URLs are extracted by searching for a specific font tag combination which Google currently uses to display the URL name on the search results page. This tag may change in future.

The script current asks for the results in batches of 10 hits per page. You can easily modify it to ask for more - ie 100, which will speed the whole process up. However, you will get different rankings. The more hits you ask for per page, the more Google will "expand" internal domain results or display similar results within the same site, thus dropping your site down the virtual rankings.

The script also counts two ranking types - the physical position of your site in the search results, plus the "site" position. The "site" position is how your site is ranked once the internal domain results / similar results are removed ( remember, a single site can postential occupy two result spaces ).

<?php 
// $searchquery is the value to search for.
// The script replaces the spaces and ampersands and
// converts them to values that google is expecting.

// $searchurl is the url to find - ie www.web-max.ca
// Do not pass http:// - you don't need it.

// $searchquery = "ontario inns";
// $searchurl = "www.selectontarioinns.com";

if(!empty($searchquery) && !empty($searchurl))
{
    
$query str_replace(" ","+",$searchquery);    
    
$query str_replace("%26","&",$query);    

// How many results to search through.

    
$total_to_search 100;

// The number of hits per page.    

    
$hits_per_page   10;
    
// Obviously, the total pages / queries we will be doing is
// $total_to_search / $hits_per_page
    
// This will be our rank
    
    
$position      0;

// This is the rank minus the duplicates
    
    
$real_position 0;

    
$found   NULL;
    
$lastURL NULL;

    for(
$i=0;$i<$total_to_search && empty($found);$i+=$hits_per_page)
    {

// Open the search page.
// We are filling in certain variables - 
// $query,$hits_per_page and $start.

        
$filename "http://www.google.com/search?as_q=$query".
                    
"&num=$hits_per_page&hl=en&ie=UTF-8&btnG=Google+Search".
                    
"&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=".
                    
"&as_qdr=all&as_nlo=&as_nhi=&as_occt=any&as_dt=i".
                    
"&as_sitesearch=&safe=images&start=$i";

        
$file fopen($filename"r");
        if (!
$file
        {
            echo 
"<p>Unable to open remote file $filename.\n";
        }
        else
        {

// Now load the file into a variable line at a time

            
while (!feof($file))
            {
                
$var fgets($file1024);

// Try and find the font tag google uses to show the site URL

                
if(eregi("<font color=#008000>(.*)</font><nobr>",$var,$out))
                {

// If we find it take out any <B> </B> tags - google does
// highlight search terms within URLS

                    
$out[1] = strtolower(strip_tags($out[1]));

// Get the domain name by looking for the first /

                    
$x strpos($out[1],"/");

// and get the URL

                    
$url substr($out[1],0,$x);

                    
$position++;

// If you want to see the hits, set $trace to something

                    
if($trace)print($url."<br>");

// If the last result process is the same as this one, it
// is a nest or internal domain result, so don't count it
// on $real_position

                    
if(strcmp($lastURL,$url)<>0)$real_position++;

                    
$lastURL $url;

// Else if the sites match we have found it!!!

                    
if(strcmp($searchurl,$url)==0)
                    {
                        
$found $position;
                        
// We quit out, we don't need to go any further.
                        
                        
break;
                    }    
                }
            }
        }
        
fclose($file);    
    }

    if(
$found)
    {
        print(
"The URL $searchurl is at position $found ".
              
"( $real_position ) for the term $searchquery");
    }
}
?>
 
Example
Downloads

 misc_12.zip