Usage of Google Translator Api For Free !!!!!!!

Hello Friends,

I found a hack to use Google Translator services.

As I was working on my scrapper project, category titles were  needed to translated from Dutch to English and we do not wanted to use any paid service.

I have tracked the requests made From  and gathered them, then fetched responses from my curl function which I have Posted before .

below is the final code. It is working perfectly. Please let the page loaded for proper source code view.


function curl($url,$params = array(),$is_coockie_set = false)

/* STEP 1. let’s create a cookie file */
$ckfile = tempnam ("/tmp", "CURLCOOKIE");

/* STEP 2. visit the homepage to set the cookie properly */
$ch = curl_init ($url);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);

$str = ''; $str_arr= array();
foreach($params as $key => $value)
$str_arr[] = urlencode($key)."=".urlencode($value);
$str = '?'.implode('&',$str_arr);

/* STEP 3. visit cookiepage.php */

$Url = $url.$str;

$ch = curl_init ($Url);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec ($ch);
return $output;

function Translate($word,$conversion = 'hi_to_en')
$word = urlencode($word);
// dutch to english
if($conversion == 'nl_to_en')
$url = ''.$word.'&hl=en&sl=nl&tl=en&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1';

// english to hindi
if($conversion == 'en_to_hi')
$url = ''.$word.'&hl=en&sl=en&tl=hi&ie=UTF-8&oe=UTF-8&multires=1&otf=1&ssel=3&tsel=3&sc=1';

// hindi to english
if($conversion == 'hi_to_en')
$url = ''.$word.'&hl=en&sl=hi&tl=en&ie=UTF-8&oe=UTF-8&multires=1&otf=1&pc=1&trs=1&ssel=3&tsel=6&sc=1';

//$url = ''.$word.'&hl=en&sl=nl&tl=en&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1';

$name_en = curl($url);

$name_en = explode('"',$name_en);
return  $name_en[1];
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
echo "

Hindi To English
echo  Translate('कानूनी नोटिस: यह गूगल के अनुवादक सेवाओं की एक दुरुपयोग है, आप इस के लिए भुगतान करना होगा.');
echo "

English To Hindi
echo  Translate('legal notice: This is an abuse of google translator services ,  you must pay for this.','en_to_hi');
echo "

Dutch To English
echo  Translate('Disclaimer: Dit is een misbruik van Google Translator diensten, moet u betalen.','nl_to_en');

echo "

Just Kidding ....... :)";

Copy this code in php file and hit it.
You will need to enable curl for this code to work.

Currently It supports Three translations

1)Hindi To English       2)English To Hindi       3) Dutch To English

If you want to add more translations Follow the steps below

1) Go to by Mozilla Firefox

2) open firebug and type any thing them copy the URL of Ajax request made by the browser.

3) Place it in the translate function with proper condition and replace &text parameter in the url with $word variable.
Let me know if it is helpful or give your valuable suggestions.

And Please don’t tell this to Google Ha ha …….


AS per rob’s suggestion I am placing the  updated translate function to support all kind of languages supported by Google. I have not tested it but hope it works fine

function Translate($word,$conversion = 'hi_to_en')
$word = urlencode($word);
$arr_langs = explode(‘_to_’, $conversion);
 $url = “$word&hl=".$arr_langs[1]."&sl=".$arr_langs[0]."&tl=".$arr_langs[1]."&ie=UTF-8&oe=UTF-8&multires=1&otf=1&pc=1&trs=1&ssel=3&tsel=6&sc=1″;

$name_en = curl($url);

$name_en = explode('"',$name_en);
return  $name_en[1];

Thanks And Regards,
Rupesh Patel

155 comments on “Usage of Google Translator Api For Free !!!!!!!

  1. Steve Teale says:

    I was in character encoding hell with this for a while until I spotted an alternate URL in the comments. My browser is set to default UTF-8. Works better with …&ie=UTF-8&oe=UTF-8&multires…

    You may see what I mean if you use one of the muli-sentence variants using source:

    Your dog ate my cat. How come? What the hell!

    Try translating from en to es.

  2. w2009 says:

    Hi mate,

    I have a “fatal error: Call to undefined function curl_init() on line 11″… Do you have any idea why it doesn’t work for me…?


    • rupeshpatel says:

      curl is disable in your server … google “enable curl in php”

      • w2009 says:

        Sorry, I’m stupid… I should UTFG next time;-) Works fine now…The only problem seems to be with a character limit (already mentioned above by Guilherme Cunha etc.)… Have you dealt with it…?

  3. john slater says:

    heey i am trying this but i cant get the url using firebug of other languages

  4. chimele says:

    Big thanks for this! any thoughts on the below error? It has already been posted but not answered… cheers!

    I am getting this when i translate more than 1 word.
    “initial-scale=1, minimum-scale=1, width=device-width”

  5. aryan says:

    Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in /home/content/99/10382899/html/test.php on line 73

  6. awesome!!!
    thanks a lot, you saved me 🙂
    i hope this awesome trick will not turn of by “G” :mrgreen:

  7. Sven says:

    Thank you very much for this posting 🙂 Do you know whether Google has some mechanism detecting that you make use of their service? In earlier times I remember they had something like that got the search API.

  8. Krzysiek says:

    echo ” Just Kidding ……. “;
    Not a big bug if you know basic php coding… huh

    Thank you for the script!

  9. Krzysiek says:

    Multiple sentences give problem (there is no char limit…). Google answer is divided somehow into some kind of array
    like sentence_1_en, sentence_1_de, senstence_2_en, sentence_2_de.
    So mix of sentences – source language sentence next to its translated version and so on.
    Your code is to simple to cope with that. What can we do?
    Google output is json? I have trouble to automate that.

    Like cats. Hate dogs. Eat Cows.

    Translate that at and turn on firebug – network tab. Then search for output tab and see what it outputs (json can be seen to). This is a problem to “glue” all translated sentences into one pice. And still this is a workaround of problem, google can change website each minute and code will stop working. API needs to be paid, 20$ for one automated translation a week is to much for me.

  10. Krzysiek says:

    OK I did it myself with a little help of google search 🙂
    It turns out that client GET parameter changes response to be send as JSON!

    Here is my body of translate (with little changes).

    function translate($what, $from = ‘en’, $to = ‘pl’)
    $url = “”.urlencode($what).”&hl=”.$to.”&sl=”.$from.”&tl=”.$to.”&ie=UTF-8&oe=UTF-8&multires=0″; // client = p !

    $out = json_decode(curl($url), 1);

    foreach($out[‘sentences’] as $sentence) {
    $ret .= $sentence[‘trans’].’ ‘;

    return stripslashes(trim($ret));

  11. Cron says:

    There’s a limit of 2048 characters in the translation so I’ve modified Krzsiek’s function to split translation into several requests:

    function translate($phrase, $from =’en’, $to = ‘de’){
    $ret = ”;
    if(strlen($phrase)>1600){ //split and translate each part individually to get around 2048 size limit:
    $phrases = str_split($phrase,1600);
    foreach($phrases as $p) $ret .= translate($p, $from, $to);
    $url = “”.urlencode($phrase).”&hl={$to}&sl={$from}&tl={$to}&ie=UTF-8&oe=UTF-8&multires=0″ ; // client = p !
    $out = json_decode(curl($url), 1);
    foreach($out[‘sentences’] as $sentence) {
    $ret .= $sentence[‘trans’].’ ‘;
    return stripslashes(trim($ret));

  12. Javier says:

    Thanks Rupesh and the other guys for this post.

    If you want to achieve same functionality using python:

    $ sudo pip install translate

    from translate import Translator
    translator= Translator(from_lang=”en”,to_lang=”es”)
    translation = translator.translate(“Hello world”)



  13. Thobib says:

    Thank you very much Rupeshpatel, you save my time to find and lern about grabbing google translator result. thank you once again 😉

  14. Bruce says:

    Very useful, thanks Rupesh; I used it to translate from French to English, although I found that to get a full translation I had to use a (huge!) WordPress function I found on Stackoverflow, to remove all accents from the text.

  15. Shona says:

    hy ppl i need it for android application plz tell how can i use php in it 😦

  16. neeraj says:

    hi I am getting the content-type when i am translating my site please suggest me some solution as soon as possible.

  17. naysa says:

    really???google “enable curl in php”???

  18. hablutzel1 says:

    Still working!, by the way “the updated translate function to support all kind of languages supported by Google” is working ok.

  19. Is it possible to do an ajax request on the url? If yes, how to do it?

    Doing this:
    url: ‘’
    }).done(function(data) {
    }).error(function(xhr, textStatus, errorThrown) {

    gives me an error “Unexpected token”…

    • rupeshpatel says:

      No, you can not because does not allow cross domain requests.
      you can still add this code in php file on you server and can call that url by ajax

      url: ‘ world′
      }).done(function(data) {
      }).error(function(xhr, textStatus, errorThrown) {

    • rupeshpatel says:

      That will not b possible, because your browser will prevent cross domain request

  20. avishayhajbi says:

    hello .
    can i change that code into js/ajax ?

  21. khong says:

    i cannot do number 2
    2) open firebug and type any thing them copy the URL of Ajax request made by the browser.

    i cannot find the Ajax request

    please help me

  22. Mr. M says:

    Seriously, tried your code, way to complex with cUrl.. I found out the data creates a txt file after the AJAX, what I did was include that txt using PHP get contents from file, it works with just awesome!!

    Important: the urlencode is needed to send commas etc.


  23. Mr. M says:

    Sorry, CODE here:

    $ToTranslate = “Hello, sir!”;
    $ToTranslate = urlencode($ToTranslate);
    $GetTranslation = file_get_contents(“” . $ToTranslate . “&hl=en&sl=en&tl=fr&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1”);
    $Translation = explode(‘”‘,$GetTranslation);
    echo $Translation[1];

  24. WoW Its work form me…

  25. willi says:

    that works great! many thanks !!

    can you give the line for german to russian translation?

  26. rashmi says:

    Hi Rupesh, I am trying to call translator from C# program using the url from ur program ‘’.$word.’&hl=en&sl=hi&tl=en&ie=UTF-8&oe=UTF-8&multires=1&otf=1&pc=1&trs=1&ssel=3&tsel=6&sc=1′;. I have characters more than 10,000 in my file that need to be translated and I found that after 300 characters, i get error “Your client has issued a malformed or illegal request.” I have never used curl before. So, does the curl handle things differently so many characters can be translated?? Thanks Rashmi

  27. frank says:

    what about when using it for Instant messaging

  28. ZiziPop says:

    There is a bug when translating text that contains double quotes (“) and then the result is exploded by “.
    $name_en = explode(‘”‘,$name_en);

    so better way is to parsing by square brackets [ ]

  29. dskanth says:

    It seems like it works… but is it good to use this code for making translations without paying a single rupee to google? It sounds illegal. I am afraid that my application will get banned later, if google takes any action or imposes fine on me.

    Can someone throw more light on this please ?

  30. It Works Correctly..Thanks A lot ….

  31. Subhash says:

    its not working on localhost..

  32. anjana says:

    I am getting this error
    Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\abc.php on line 11

  33. nadim says:

    Hello brother code is running very perfectly. i need some help can you please give me some another code for parsing noun, verb, example and all data from google translator. I tried by some another way but i couldn’t so can you please help me.

  34. Avlex says:

    Seems that starting today, Google changed it’s methods. This affects YQL, which also was based on Google’s translation service. If you find a workaround, just let us know 🙂

  35. Michal says:

    can this be done on client side in javascript in such way that each request is from different IP address and to detect wether there is captcha and than possibly display this captcha to end user in that way he can type in captcha and use this again

  36. Michal says:

    what about making direct request to web making REST request like this one:

    Could be this done using curl also and retrieve the translation using Regex expressions…?

  37. wesostler says:

    Hi Rupesh,

    I have been using your script for a while now and it has worked perfectly. Unfortunately, as Avlex indicated above, Google has made some changes and it isn’t working anymore. I tried debugging the traffic in Charles proxy and I am not able to figure out what is new, or how to fix it.

    Have you had a chance to look at it? Your help would be so much appreciated!

  38. rupeshpatel says:

    Hello All, I heard the cry 🙂 , I think the response format from Google has been changed a bit. I am going to update the code soon. unfortunately too busy currently to look into that. Planing to update that next weekend. Thank you all for updating me.

  39. simon remis says:

    Thank you rupeshpatel, waiting your update too 🙂

  40. Rafael says:

    Waiting for an Update too. Used your code for a project at university and we want to exhibit it again. Its not working any longer!

    • matches[0]->translation;
      $qa= $json->matches[0]->match;
      $qa1= $json->matches[1]->match;
      $qa2= $json->matches[2]->match;

      if ($qa>0.80 && $qamatches[0]->translation;
      elseif($qa1>0.80 && $qa1matches[1]->translation;
      elseif($qa2>0.80 && $qa2matches[2]->translation;
      else {
      echo “No translation avail!!!”.”\n code develope by Nitish”;}

      save this php file!!!
      yourfile.php?name=YOUR WORD

      I made this for english to hindi translation
      be happy 🙂

  41. Zia says:

    Hi all.
    This code is not working for me, anyone can do me a favor.

  42. info says:

    How can i pass post value and retrieve json response ?

  43. Iberius says:

    Hi. Is it possible to use this method to get Bing translations?

  44. Justin says:

    Thanks for your awesome code. But I have a question.. I can’t to receive cookie via Curl.. Did you test how to receive correct cookie from Google Translate?

  45. I have also Implement this Code but It Return a .txt file with so many string. Right Now I am Just Wirte a Text “Hello” and I want Hindi Version of Hello at Output only. Not any Other Meaning.

    $word = “Hello”;

    $res = Translate($word, $conversion = ‘en_to_hi’);

    echo $res;

  46. It shows only content-type at output and nothing else

  47. Is it Poosible through Query String Like as:-

    Here is my URL and I want the Hindi Meaning of This Query String.

    It Shows me the Unwanted Characters.

    Tell me what we have to do to Resolve this.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s