Google Keywords Rank API
Voici une classe vous permettant de savoir à quel rang se trouve votre site sur Google pour un mot clef donné.
Vous allez pouvoir très facilement savoir si les internautes sont susceptibles de trouver votre site simplement.
Il y a 2 modes de fonctionnement distincts : la recherche d’un seul mot clef ou d’une liste de mot clef.
Pour connaître le rang d’un mot clef particulier, il faut procéder de la manière suivante :
require_once('GoogleKeywordsRankAPI.class.php');
$gRank = new GoogleKeywordsRankAPI('http://www.ycerdan.fr');
$keywordsPositions = $gRank->getKeywordsRank('cerdan yohann');
$maxPages = $gRank->getMaxPages();
echo 'Pour le keyword '<strong>'.$keywordsPositions[0].'</strong>' ';
if ($keywordsPositions[1]==0) {
echo 'vous n\'êtes pas placé dans les <strong>'.($maxPages*10).'</strong> premiers.';
} else {
echo 'vous êtes placé : <strong>'.$keywordsPositions[1].'</strong>.';
}
Cela produit le résultat suivant :
Pour le keyword 'cerdan yohann' vous êtes placé : 1.
Le constructeur GoogleKeywordsRankAPI prend en entrée l’url de votre site web.
La méthode setMaxPages permet de spécifier le nombre de page de 10 résultats de Google à parcourir (par défaut 1 page).
Pour connaître le rang d’une liste de mots clefs, il faut procéder de la manière suivante :
require_once('GoogleKeywordsRankAPI.class.php');
$gRank = new GoogleKeywordsRankAPI('http://www.ycerdan.fr');
$keywords_array = array();
$keywords_array []= 'autocompletion jquery';
$keywords_array []= 'cerdan yohann';
$keywords_array []= 'cron typo3';
$keywords_array []= 'cv développeur typo3';
$keywordsPositions = $gRank->getKeywordsArrayRank($keywords_array);
$maxPages = $gRank->getMaxPages();
echo '<ul>';
foreach ($keywordsPositions as $keywords) {
echo '<li>Pour le keyword '<strong>'.$keywords[0].'</strong>' ';
if ($keywords[1]==0) {
echo 'vous n\'êtes pas placé dans les <strong>'.($maxPages*10).'</strong> premiers.</li>';
} else {
echo 'vous êtes placé : <strong>'.$keywords[1].'</strong>.</li>';
}
}
echo '</ul>';
Cela produit le résultat suivant :
* Pour le keyword 'autocompletion jquery' vous n'êtes pas placé dans les 10 premiers.
* Pour le keyword 'cerdan yohann' vous êtes placé : 1.
* Pour le keyword 'cron typo3' vous êtes placé : 1.
* Pour le keyword 'cv développeur typo3' vous êtes placé : 4.
La recherche de plusieurs mots clefs peut être longue car le script attend volontairement 5 secondes entre chaque requête pour ne pas se faire bannir pendant 24 heures par Google. Il est très important de respecter ce délais. Avec cette limite, il n’y a aucun risque (a priori).
Libre à vous de mettre en forme les données proposées.
GoogleKeywordsRankAPI.class.php (3,9 KiB, 689 hits)
Changelog
[05/08/2009]
- Release initiale



25 février 2010 - 10 h 22 min
bonjour,
script très interessant, j’ai cependant quelques mots clés dont votre script de donne pas la bonne position, alors que c’est ok pour les autres, bizarre non?
avez vous une idée d’où cela peut-il venir ??
25 février 2010 - 21 h 12 min
Oui vous devez être plus loin que la limite spécifiée.
26 février 2010 - 10 h 07 min
en fait j’ai un mot clé placé en 3e position et le script me donne 9e.
26 février 2010 - 10 h 48 min
Il ne fait absolument pas se fier aux résultats renvoyés quand tu fais ta recherche dans ton navigateur (parfois associer à un compte gmail qui « garde » tes recherches) car elle tient compte de ton historique de navigation.
Exemple, je m’amuse souvent à rechercher mon blog en fonction de certain mot clef, a force de cliquer sur mon site sur les résultats de recherche, je remonte beaucoup trop haut par rapport à mon « vrai » classement.
Il suffit de vérifier les résultats du script en les croisant avec Google Webmaster Tool ou Google Analytics. C’est l’effet pervers de Google…
26 février 2010 - 15 h 09 min
Je ne suis pas sur d’avoir tout compris, ce qui importe c’est la position qd on fait une recherche! et pour moi le resultat de recherche ne tient compte d’aucun historique, si pour tel mot clé, un site se trouve en 3e position, il le sera sur n’importe quel navigateur de n’importe quel systeme.
Si un client ne voit pas un site commercial parce que le site est en 3e page, quel est l’interet d’etre en 1ere page dans le soit disant « vrai classement » ??
26 février 2010 - 16 h 18 min
Tu n’a pas compris où je voulais en venir. Je suis entièrement d’accord avec toi mais j’ai déjà eu des expérience de différences de résultats de recherche sur 2 postes différents. A prouver… mais je n’invente rien…mais je me l’explique pas. Comment expliquer la différence que tu notes?
Après le script en lui même renvoie simplement ton rang sur Google à un instant T sur une machine M (en récupérant le code source). Il n’y a aucune manipulation de ce rang, juste on compte les lignes, donc à priori pas de problème la dessus.
Tu peux croiser tes résultats avec cet outil : http://www.referencement-2000.com/quiest-referencement.html
Regarde si tu vois une différence notable.
25 mars 2010 - 11 h 10 min
bonjour,
de temps en temps j’ai des erreurs 302, il semblerait que cela soit du à google qui considère que le script se comporte comme un robot.
Saurais tu comment éviter cela?
11 août 2010 - 15 h 54 min
Le script fonctionne parfaitement, et comme le disent les autres intervenants, le positionnement est maintenant dépendant de ton browser Internet.
Est-ce ce que cette méthode nous permet vraiment d’avoir le vrai positionnement ou est-il également interprété? Et avec quels critères?
11 août 2010 - 16 h 11 min
Malheureusement c’est un peu obscure sur ce point et on ne sait pas vraiment pourquoi les résultats différent quelque peu d’un browser à un autre (associé à un compte gmail).
Mais tu peux te baser sur ce résultats. Tu peux également confronter les résultats avec d’autres outils (comme celui cité plus haut).
16 août 2010 - 16 h 11 min
Salut,
Chaque semaine j’utilise ce superbe script. Quelques rares fois cependant, il semble y avoir un problème.
Le script m’indique qu’un site, il y a 3 semaines, et cette semaine, est classé 5ème, mais pour il y a 2 semaines, il n’est pas dans les 50 premiers. Un peu bizarre non ? Sachant qu’il est toujours environ 5ème.
Sauriez-vous comment ce problème peut arriver ?
16 août 2010 - 16 h 30 min
Je ne vois pas ce qui pourrais influer autant :p A voir…
20 août 2010 - 15 h 32 min
Hum… bon ba tant pis, merci quand même
13 septembre 2010 - 16 h 58 min
Salut,
J’ai quelques soucis en ce moment avec cet outil :/.
Je ne sais pas pourquoi, la fonction « getKeywordsRank » me retourne NULL à chaque fois que j’essai de l’utiliser.
J’ai pu voir que le code ne passe jamais le test conditionnel en ligne 140 de l’API (« if (strlen(stristr($link,$this->url))>0) {« ).
De temps en temps, j’ai l’erreur « Google results parse problem : http error 0″ qui s’affiche, mais c’est rare, et je ne sais pas trop ce que ça signifie.
Je ne comprend pas car le site internet et le mot clé donnés sont corrects.
As-tu une idée sur ce qui se passe ?
Merci
14 septembre 2010 - 12 h 01 min
Quand j’effectue un grand nombre de requêtes à la suite (j’ai testé avec 300 requêtes, toutes les 7 secondes), j’ai aussi énormément d’erreurs HTTP 302 qui apparaissent (la encore je ne sais pas pourquoi).
De plus la fonction » getKeywordsRank » ne me retourne jamais 0, elle me retourne soit une position, soit NULL.
Finalement entre les erreurs HTTP et les retours NULL c’est 170 mots sur les 300 qui ne trouvent pas de position.
Un peu d’aide ne serait pas de refus
14 septembre 2010 - 12 h 08 min
@Francois, car un trop grand nombre de requêtes fait croire que tu es un robot à Google. Il faut y aller doucement en fréquence et en espacement de requêtes pour éviter tout problèmes…
Pour le NULL, il faut le gérer dans le code NULL = pas de rank dans la limite paramétrée.
C’est donc google qui vous bloque.
Même chose pour @Emmanuel. Il ne faut pas surcharger de requêtes.
14 septembre 2010 - 12 h 17 min
Ok, je pensais que ça serait bon vu qu’il n’y a qu’un sleep(5) dans l’api
Je vais essayer en espacement plus !
ps : les 2 derniers commentaires étaient de moi, François est un ami mais ses identifiants étaient déjà enregistrés sur le formulaire (oups :p)
8 décembre 2010 - 16 h 46 min
Pourquoi ne pas utiliser la variable (méthode GET) num de google (rappel: maximum 100) plutôt que de faire -> $maxPages*10 ?
Qui permettrait de brasser plus d’informations par requêtes? (Plus utiles pour un grand consommateur).
http://www.google.fr/search?hl=fr&q=cerdan+yohann
http://www.google.fr/search?hl=fr&q=cerdan+yohann&num=100