diff --git a/samples-index.py b/samples-index.py
index 712f552..086886a 100644
--- a/samples-index.py
+++ b/samples-index.py
@@ -28,6 +28,7 @@
 
    The rest of the file is ignored when it comes to building the index.
 """
+from __future__ import print_function
 
 import httplib2
 import itertools
@@ -239,7 +240,7 @@
 </tr>""" % context)
     page.append('</table>\n')
 
-  print ''.join(page)
+  print(''.join(page))
 
 
 if __name__ == '__main__':
diff --git a/samples/adexchangeseller/generate_report.py b/samples/adexchangeseller/generate_report.py
index 8440caa..510c94b 100644
--- a/samples/adexchangeseller/generate_report.py
+++ b/samples/adexchangeseller/generate_report.py
@@ -20,6 +20,7 @@
 
 Tags: reports.generate
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -68,14 +69,14 @@
       sys.exit(1)
     # Display headers.
     for header in result['headers']:
-      print '%25s' % header['name'],
-    print
+      print('%25s' % header['name'], end=' ')
+    print()
 
     # Display results.
     for row in result['rows']:
       for column in row:
-        print '%25s' % column,
-      print
+        print('%25s' % column, end=' ')
+      print()
 
   except client.AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run the '
diff --git a/samples/adexchangeseller/generate_report_with_paging.py b/samples/adexchangeseller/generate_report_with_paging.py
index ed14976..9ef1b0c 100644
--- a/samples/adexchangeseller/generate_report_with_paging.py
+++ b/samples/adexchangeseller/generate_report_with_paging.py
@@ -24,6 +24,7 @@
 
 Tags: reports.generate
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -70,14 +71,14 @@
       # If this is the first page, display the headers.
       if start_index == 0:
         for header in result['headers']:
-          print '%25s' % header['name'],
-        print
+          print('%25s' % header['name'], end=' ')
+        print()
 
       # Display results for this page.
       for row in result['rows']:
         for column in row:
-          print '%25s' % column,
-        print
+          print('%25s' % column, end=' ')
+        print()
 
       start_index += len(result['rows'])
 
diff --git a/samples/adexchangeseller/get_all_ad_clients.py b/samples/adexchangeseller/get_all_ad_clients.py
index 67333d2..a06d3bd 100644
--- a/samples/adexchangeseller/get_all_ad_clients.py
+++ b/samples/adexchangeseller/get_all_ad_clients.py
@@ -18,6 +18,7 @@
 
 Tags: adclients.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -43,11 +44,11 @@
       result = request.execute()
       ad_clients = result['items']
       for ad_client in ad_clients:
-        print ('Ad client for product "%s" with ID "%s" was found. '
-               % (ad_client['productCode'], ad_client['id']))
+        print(('Ad client for product "%s" with ID "%s" was found. '
+               % (ad_client['productCode'], ad_client['id'])))
 
-        print ('\tSupports reporting: %s' %
-               (ad_client['supportsReporting'] and 'Yes' or 'No'))
+        print(('\tSupports reporting: %s' %
+               (ad_client['supportsReporting'] and 'Yes' or 'No')))
 
       request = service.adclients().list_next(request, result)
 
diff --git a/samples/adexchangeseller/get_all_ad_units.py b/samples/adexchangeseller/get_all_ad_units.py
index 317199b..8599545 100644
--- a/samples/adexchangeseller/get_all_ad_units.py
+++ b/samples/adexchangeseller/get_all_ad_units.py
@@ -20,6 +20,7 @@
 
 Tags: adunits.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -54,8 +55,8 @@
       result = request.execute()
       ad_units = result['items']
       for ad_unit in ad_units:
-        print ('Ad unit with code "%s", name "%s" and status "%s" was found. ' %
-               (ad_unit['code'], ad_unit['name'], ad_unit['status']))
+        print(('Ad unit with code "%s", name "%s" and status "%s" was found. ' %
+               (ad_unit['code'], ad_unit['name'], ad_unit['status'])))
 
       request = service.adunits().list_next(request, result)
 
diff --git a/samples/adexchangeseller/get_all_ad_units_for_custom_channel.py b/samples/adexchangeseller/get_all_ad_units_for_custom_channel.py
index 2e9f4ba..0c63225 100644
--- a/samples/adexchangeseller/get_all_ad_units_for_custom_channel.py
+++ b/samples/adexchangeseller/get_all_ad_units_for_custom_channel.py
@@ -20,6 +20,7 @@
 
 Tags: customchannels.adunits.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -59,8 +60,8 @@
       result = request.execute()
       ad_units = result['items']
       for ad_unit in ad_units:
-        print ('Ad unit with code "%s", name "%s" and status "%s" was found. ' %
-               (ad_unit['code'], ad_unit['name'], ad_unit['status']))
+        print(('Ad unit with code "%s", name "%s" and status "%s" was found. ' %
+               (ad_unit['code'], ad_unit['name'], ad_unit['status'])))
 
       request = service.adunits().list_next(request, result)
 
diff --git a/samples/adexchangeseller/get_all_alerts.py b/samples/adexchangeseller/get_all_alerts.py
index 459038c..f15ef51 100644
--- a/samples/adexchangeseller/get_all_alerts.py
+++ b/samples/adexchangeseller/get_all_alerts.py
@@ -18,6 +18,7 @@
 
 Tags: alerts.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -43,10 +44,10 @@
       if 'items' in result:
         alerts = result['items']
         for alert in alerts:
-          print ('Alert id "%s" with severity "%s" and type "%s" was found. '
-                 % (alert['id'], alert['severity'], alert['type']))
+          print(('Alert id "%s" with severity "%s" and type "%s" was found. '
+                 % (alert['id'], alert['severity'], alert['type'])))
       else:
-        print 'No alerts found!'
+        print('No alerts found!')
   except client.AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run the '
            'application to re-authorize')
diff --git a/samples/adexchangeseller/get_all_custom_channels.py b/samples/adexchangeseller/get_all_custom_channels.py
index 43b5eca..68f92d2 100644
--- a/samples/adexchangeseller/get_all_custom_channels.py
+++ b/samples/adexchangeseller/get_all_custom_channels.py
@@ -20,6 +20,7 @@
 
 Tags: customchannels.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -54,20 +55,20 @@
       result = request.execute()
       custom_channels = result['items']
       for custom_channel in custom_channels:
-        print ('Custom channel with id "%s" and name "%s" was found. '
-               % (custom_channel['id'], custom_channel['name']))
+        print(('Custom channel with id "%s" and name "%s" was found. '
+               % (custom_channel['id'], custom_channel['name'])))
 
         if 'targetingInfo' in custom_channel:
-          print '  Targeting info:'
+          print('  Targeting info:')
           targeting_info = custom_channel['targetingInfo']
           if 'adsAppearOn' in targeting_info:
-            print '    Ads appear on: %s' % targeting_info['adsAppearOn']
+            print('    Ads appear on: %s' % targeting_info['adsAppearOn'])
           if 'location' in targeting_info:
-            print '    Location: %s' % targeting_info['location']
+            print('    Location: %s' % targeting_info['location'])
           if 'description' in targeting_info:
-            print '    Description: %s' % targeting_info['description']
+            print('    Description: %s' % targeting_info['description'])
           if 'siteLanguage' in targeting_info:
-            print '    Site language: %s' % targeting_info['siteLanguage']
+            print('    Site language: %s' % targeting_info['siteLanguage'])
 
       request = service.customchannels().list_next(request, result)
 
diff --git a/samples/adexchangeseller/get_all_custom_channels_for_ad_unit.py b/samples/adexchangeseller/get_all_custom_channels_for_ad_unit.py
index 78205a1..b73bf15 100644
--- a/samples/adexchangeseller/get_all_custom_channels_for_ad_unit.py
+++ b/samples/adexchangeseller/get_all_custom_channels_for_ad_unit.py
@@ -21,6 +21,7 @@
 
 Tags: customchannels.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -62,20 +63,20 @@
       result = request.execute()
       custom_channels = result['items']
       for custom_channel in custom_channels:
-        print ('Custom channel with code "%s" and name "%s" was found. '
-               % (custom_channel['code'], custom_channel['name']))
+        print(('Custom channel with code "%s" and name "%s" was found. '
+               % (custom_channel['code'], custom_channel['name'])))
 
         if 'targetingInfo' in custom_channel:
-          print '  Targeting info:'
+          print('  Targeting info:')
           targeting_info = custom_channel['targetingInfo']
           if 'adsAppearOn' in targeting_info:
-            print '    Ads appear on: %s' % targeting_info['adsAppearOn']
+            print('    Ads appear on: %s' % targeting_info['adsAppearOn'])
           if 'location' in targeting_info:
-            print '    Location: %s' % targeting_info['location']
+            print('    Location: %s' % targeting_info['location'])
           if 'description' in targeting_info:
-            print '    Description: %s' % targeting_info['description']
+            print('    Description: %s' % targeting_info['description'])
           if 'siteLanguage' in targeting_info:
-            print '    Site language: %s' % targeting_info['siteLanguage']
+            print('    Site language: %s' % targeting_info['siteLanguage'])
 
       request = service.customchannels().list_next(request, result)
 
diff --git a/samples/adexchangeseller/get_all_dimensions.py b/samples/adexchangeseller/get_all_dimensions.py
index 6c0e585..0c6bec7 100644
--- a/samples/adexchangeseller/get_all_dimensions.py
+++ b/samples/adexchangeseller/get_all_dimensions.py
@@ -18,6 +18,7 @@
 
 Tags: metadata.dimensions.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -43,10 +44,10 @@
       if 'items' in result:
         dimensions = result['items']
         for dimension in dimensions:
-          print ('Dimension id "%s" for product(s): [%s] was found. '
-                 % (dimension['id'], ', '.join(dimension['supportedProducts'])))
+          print(('Dimension id "%s" for product(s): [%s] was found. '
+                 % (dimension['id'], ', '.join(dimension['supportedProducts']))))
       else:
-        print 'No dimensions found!'
+        print('No dimensions found!')
   except client.AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run the '
            'application to re-authorize')
diff --git a/samples/adexchangeseller/get_all_metrics.py b/samples/adexchangeseller/get_all_metrics.py
index c1bf06f..0f2df22 100644
--- a/samples/adexchangeseller/get_all_metrics.py
+++ b/samples/adexchangeseller/get_all_metrics.py
@@ -18,6 +18,7 @@
 
 Tags: metadata.metrics.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -43,10 +44,10 @@
       if 'items' in result:
         metrics = result['items']
         for metric in metrics:
-          print ('Metric id "%s" for product(s): [%s] was found. '
-                 % (metric['id'], ', '.join(metric['supportedProducts'])))
+          print(('Metric id "%s" for product(s): [%s] was found. '
+                 % (metric['id'], ', '.join(metric['supportedProducts']))))
       else:
-        print 'No metrics found!'
+        print('No metrics found!')
   except client.AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run the '
            'application to re-authorize')
diff --git a/samples/adexchangeseller/get_all_preferred_deals.py b/samples/adexchangeseller/get_all_preferred_deals.py
index 1614183..3ef38a4 100644
--- a/samples/adexchangeseller/get_all_preferred_deals.py
+++ b/samples/adexchangeseller/get_all_preferred_deals.py
@@ -18,6 +18,7 @@
 
 Tags: preferreddeals.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -54,7 +55,7 @@
           output += 'was found.'
           print(output)
       else:
-        print 'No preferred deals found!'
+        print('No preferred deals found!')
   except client.AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run the '
            'application to re-authorize')
diff --git a/samples/adexchangeseller/get_all_saved_reports.py b/samples/adexchangeseller/get_all_saved_reports.py
index 5f19e7c..fed0885 100644
--- a/samples/adexchangeseller/get_all_saved_reports.py
+++ b/samples/adexchangeseller/get_all_saved_reports.py
@@ -19,6 +19,7 @@
 
 Tags: savedreports.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -44,8 +45,8 @@
       result = request.execute()
       saved_reports = result['items']
       for saved_report in saved_reports:
-        print ('Saved report with ID "%s" and name "%s" was found.'
-               % (saved_report['id'], saved_report['name']))
+        print(('Saved report with ID "%s" and name "%s" was found.'
+               % (saved_report['id'], saved_report['name'])))
 
       request = service.reports().saved().list_next(request, result)
 
diff --git a/samples/adexchangeseller/get_all_url_channels.py b/samples/adexchangeseller/get_all_url_channels.py
index 262cab3..c19c6ee 100644
--- a/samples/adexchangeseller/get_all_url_channels.py
+++ b/samples/adexchangeseller/get_all_url_channels.py
@@ -20,6 +20,7 @@
 
 Tags: urlchannels.list
 """
+from __future__ import print_function
 
 __author__ = 'sgomes@google.com (Sérgio Gomes)'
 
@@ -55,8 +56,8 @@
 
       url_channels = result['items']
       for url_channel in url_channels:
-        print ('URL channel with URL pattern "%s" was found.'
-               % url_channel['urlPattern'])
+        print(('URL channel with URL pattern "%s" was found.'
+               % url_channel['urlPattern']))
 
       request = service.customchannels().list_next(request, result)
 
diff --git a/samples/analytics/core_reporting_v3_reference.py b/samples/analytics/core_reporting_v3_reference.py
index effb5d9..671f4ef 100755
--- a/samples/analytics/core_reporting_v3_reference.py
+++ b/samples/analytics/core_reporting_v3_reference.py
@@ -56,6 +56,7 @@
 
   $ python core_reporting_v3_reference.py --help
 """
+from __future__ import print_function
 
 __author__ = 'api.nickm@gmail.com (Nick Mihailovski)'
 
@@ -86,12 +87,12 @@
 
   except TypeError as error:
     # Handle errors in constructing a query.
-    print ('There was an error in constructing your query : %s' % error)
+    print(('There was an error in constructing your query : %s' % error))
 
   except HttpError as error:
     # Handle API errors.
-    print ('Arg, there was an API error : %s : %s' %
-           (error.resp.status, error._get_reason()))
+    print(('Arg, there was an API error : %s : %s' %
+           (error.resp.status, error._get_reason())))
 
   except AccessTokenRefreshError:
     # Handle Auth errors.
@@ -142,12 +143,12 @@
     results: The response returned from the Core Reporting API.
   """
 
-  print 'Report Infos:'
-  print 'Contains Sampled Data = %s' % results.get('containsSampledData')
-  print 'Kind                  = %s' % results.get('kind')
-  print 'ID                    = %s' % results.get('id')
-  print 'Self Link             = %s' % results.get('selfLink')
-  print
+  print('Report Infos:')
+  print('Contains Sampled Data = %s' % results.get('containsSampledData'))
+  print('Kind                  = %s' % results.get('kind'))
+  print('ID                    = %s' % results.get('id'))
+  print('Self Link             = %s' % results.get('selfLink'))
+  print()
 
 
 def print_pagination_info(results):
@@ -157,16 +158,16 @@
     results: The response returned from the Core Reporting API.
   """
 
-  print 'Pagination Infos:'
-  print 'Items per page = %s' % results.get('itemsPerPage')
-  print 'Total Results  = %s' % results.get('totalResults')
+  print('Pagination Infos:')
+  print('Items per page = %s' % results.get('itemsPerPage'))
+  print('Total Results  = %s' % results.get('totalResults'))
 
   # These only have values if other result pages exist.
   if results.get('previousLink'):
-    print 'Previous Link  = %s' % results.get('previousLink')
+    print('Previous Link  = %s' % results.get('previousLink'))
   if results.get('nextLink'):
-    print 'Next Link      = %s' % results.get('nextLink')
-  print
+    print('Next Link      = %s' % results.get('nextLink'))
+  print()
 
 
 def print_profile_info(results):
@@ -176,14 +177,14 @@
     results: The response returned from the Core Reporting API.
   """
 
-  print 'Profile Infos:'
+  print('Profile Infos:')
   info = results.get('profileInfo')
-  print 'Account Id      = %s' % info.get('accountId')
-  print 'Web Property Id = %s' % info.get('webPropertyId')
-  print 'Profile Id      = %s' % info.get('profileId')
-  print 'Table Id        = %s' % info.get('tableId')
-  print 'Profile Name    = %s' % info.get('profileName')
-  print
+  print('Account Id      = %s' % info.get('accountId'))
+  print('Web Property Id = %s' % info.get('webPropertyId'))
+  print('Profile Id      = %s' % info.get('profileId'))
+  print('Table Id        = %s' % info.get('tableId'))
+  print('Profile Name    = %s' % info.get('profileName'))
+  print()
 
 
 def print_query(results):
@@ -193,11 +194,11 @@
     results: The response returned from the Core Reporting API.
   """
 
-  print 'Query Parameters:'
+  print('Query Parameters:')
   query = results.get('query')
   for key, value in query.iteritems():
-    print '%s = %s' % (key, value)
-  print
+    print('%s = %s' % (key, value))
+  print()
 
 
 def print_column_headers(results):
@@ -211,15 +212,15 @@
     results: The response returned from the Core Reporting API.
   """
 
-  print 'Column Headers:'
+  print('Column Headers:')
   headers = results.get('columnHeaders')
   for header in headers:
     # Print Dimension or Metric name.
-    print '\t%s name:    = %s' % (header.get('columnType').title(),
-                                  header.get('name'))
-    print '\tColumn Type = %s' % header.get('columnType')
-    print '\tData Type   = %s' % header.get('dataType')
-    print
+    print('\t%s name:    = %s' % (header.get('columnType').title(),
+                                  header.get('name')))
+    print('\tColumn Type = %s' % header.get('columnType'))
+    print('\tData Type   = %s' % header.get('dataType'))
+    print()
 
 
 def print_totals_for_all_results(results):
@@ -229,17 +230,17 @@
     results: The response returned from the Core Reporting API.
   """
 
-  print 'Total Metrics For All Results:'
-  print 'This query returned %s rows.' % len(results.get('rows'))
-  print ('But the query matched %s total results.' %
-         results.get('totalResults'))
-  print 'Here are the metric totals for the matched total results.'
+  print('Total Metrics For All Results:')
+  print('This query returned %s rows.' % len(results.get('rows')))
+  print(('But the query matched %s total results.' %
+         results.get('totalResults')))
+  print('Here are the metric totals for the matched total results.')
   totals = results.get('totalsForAllResults')
 
   for metric_name, metric_total in totals.iteritems():
-    print 'Metric Name  = %s' % metric_name
-    print 'Metric Total = %s' % metric_total
-    print
+    print('Metric Name  = %s' % metric_name)
+    print('Metric Total = %s' % metric_total)
+    print()
 
 
 def print_rows(results):
@@ -249,12 +250,12 @@
     results: The response returned from the Core Reporting API.
   """
 
-  print 'Rows:'
+  print('Rows:')
   if results.get('rows', []):
     for row in results.get('rows'):
-      print '\t'.join(row)
+      print('\t'.join(row))
   else:
-    print 'No Rows Found'
+    print('No Rows Found')
 
 
 if __name__ == '__main__':
diff --git a/samples/analytics/hello_analytics_api_v3.py b/samples/analytics/hello_analytics_api_v3.py
index e0514db..783594f 100755
--- a/samples/analytics/hello_analytics_api_v3.py
+++ b/samples/analytics/hello_analytics_api_v3.py
@@ -40,6 +40,7 @@
 
   $ python hello_analytics_api_v3.py --help
 """
+from __future__ import print_function
 
 __author__ = 'api.nickm@gmail.com (Nick Mihailovski)'
 
@@ -61,19 +62,19 @@
   try:
     first_profile_id = get_first_profile_id(service)
     if not first_profile_id:
-      print 'Could not find a valid profile for this user.'
+      print('Could not find a valid profile for this user.')
     else:
       results = get_top_keywords(service, first_profile_id)
       print_results(results)
 
   except TypeError as error:
     # Handle errors in constructing a query.
-    print ('There was an error in constructing your query : %s' % error)
+    print(('There was an error in constructing your query : %s' % error))
 
   except HttpError as error:
     # Handle API errors.
-    print ('Arg, there was an API error : %s : %s' %
-           (error.resp.status, error._get_reason()))
+    print(('Arg, there was an API error : %s : %s' %
+           (error.resp.status, error._get_reason())))
 
   except AccessTokenRefreshError:
     # Handle Auth errors.
@@ -151,15 +152,15 @@
     results: The response returned from the Core Reporting API.
   """
 
-  print
-  print 'Profile Name: %s' % results.get('profileInfo').get('profileName')
-  print
+  print()
+  print('Profile Name: %s' % results.get('profileInfo').get('profileName'))
+  print()
 
   # Print header.
   output = []
   for header in results.get('columnHeaders'):
     output.append('%30s' % header.get('name'))
-  print ''.join(output)
+  print(''.join(output))
 
   # Print data table.
   if results.get('rows', []):
@@ -167,10 +168,10 @@
       output = []
       for cell in row:
         output.append('%30s' % cell)
-      print ''.join(output)
+      print(''.join(output))
 
   else:
-    print 'No Rows Found'
+    print('No Rows Found')
 
 
 if __name__ == '__main__':
diff --git a/samples/analytics/management_v3_reference.py b/samples/analytics/management_v3_reference.py
index 4151d7e..51bf78d 100755
--- a/samples/analytics/management_v3_reference.py
+++ b/samples/analytics/management_v3_reference.py
@@ -50,6 +50,7 @@
 
   $ python management_v3_reference.py --help
 """
+from __future__ import print_function
 
 __author__ = 'api.nickm@gmail.com (Nick Mihailovski)'
 
@@ -73,12 +74,12 @@
 
   except TypeError as error:
     # Handle errors in constructing a query.
-    print ('There was an error in constructing your query : %s' % error)
+    print(('There was an error in constructing your query : %s' % error))
 
   except HttpError as error:
     # Handle API errors.
-    print ('Arg, there was an API error : %s : %s' %
-           (error.resp.status, error._get_reason()))
+    print(('Arg, there was an API error : %s : %s' %
+           (error.resp.status, error._get_reason())))
 
   except AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run'
@@ -139,25 +140,25 @@
         collection.
   """
 
-  print '------ Account Collection -------'
+  print('------ Account Collection -------')
   print_pagination_info(accounts_response)
-  print
+  print()
 
   for account in accounts_response.get('items', []):
-    print 'Account ID      = %s' % account.get('id')
-    print 'Kind            = %s' % account.get('kind')
-    print 'Self Link       = %s' % account.get('selfLink')
-    print 'Account Name    = %s' % account.get('name')
-    print 'Created         = %s' % account.get('created')
-    print 'Updated         = %s' % account.get('updated')
+    print('Account ID      = %s' % account.get('id'))
+    print('Kind            = %s' % account.get('kind'))
+    print('Self Link       = %s' % account.get('selfLink'))
+    print('Account Name    = %s' % account.get('name'))
+    print('Created         = %s' % account.get('created'))
+    print('Updated         = %s' % account.get('updated'))
 
     child_link = account.get('childLink')
-    print 'Child link href = %s' % child_link.get('href')
-    print 'Child link type = %s' % child_link.get('type')
-    print
+    print('Child link href = %s' % child_link.get('href'))
+    print('Child link type = %s' % child_link.get('type'))
+    print()
 
   if not accounts_response.get('items'):
-    print 'No accounts found.\n'
+    print('No accounts found.\n')
 
 
 def print_webproperties(webproperties_response):
@@ -168,32 +169,32 @@
         Webproperties collection.
   """
 
-  print '------ Web Properties Collection -------'
+  print('------ Web Properties Collection -------')
   print_pagination_info(webproperties_response)
-  print
+  print()
 
   for webproperty in webproperties_response.get('items', []):
-    print 'Kind               = %s' % webproperty.get('kind')
-    print 'Account ID         = %s' % webproperty.get('accountId')
-    print 'Web Property ID    = %s' % webproperty.get('id')
-    print ('Internal Web Property ID = %s' %
-           webproperty.get('internalWebPropertyId'))
+    print('Kind               = %s' % webproperty.get('kind'))
+    print('Account ID         = %s' % webproperty.get('accountId'))
+    print('Web Property ID    = %s' % webproperty.get('id'))
+    print(('Internal Web Property ID = %s' %
+           webproperty.get('internalWebPropertyId')))
 
-    print 'Website URL        = %s' % webproperty.get('websiteUrl')
-    print 'Created            = %s' % webproperty.get('created')
-    print 'Updated            = %s' % webproperty.get('updated')
+    print('Website URL        = %s' % webproperty.get('websiteUrl'))
+    print('Created            = %s' % webproperty.get('created'))
+    print('Updated            = %s' % webproperty.get('updated'))
 
-    print 'Self Link          = %s' % webproperty.get('selfLink')
+    print('Self Link          = %s' % webproperty.get('selfLink'))
     parent_link = webproperty.get('parentLink')
-    print 'Parent link href   = %s' % parent_link.get('href')
-    print 'Parent link type   = %s' % parent_link.get('type')
+    print('Parent link href   = %s' % parent_link.get('href'))
+    print('Parent link type   = %s' % parent_link.get('type'))
     child_link = webproperty.get('childLink')
-    print 'Child link href    = %s' % child_link.get('href')
-    print 'Child link type    = %s' % child_link.get('type')
-    print
+    print('Child link href    = %s' % child_link.get('href'))
+    print('Child link type    = %s' % child_link.get('type'))
+    print()
 
   if not webproperties_response.get('items'):
-    print 'No webproperties found.\n'
+    print('No webproperties found.\n')
 
 
 def print_profiles(profiles_response):
@@ -204,44 +205,44 @@
         Profiles collection.
   """
 
-  print '------ Profiles Collection -------'
+  print('------ Profiles Collection -------')
   print_pagination_info(profiles_response)
-  print
+  print()
 
   for profile in profiles_response.get('items', []):
-    print 'Kind                      = %s' % profile.get('kind')
-    print 'Account ID                = %s' % profile.get('accountId')
-    print 'Web Property ID           = %s' % profile.get('webPropertyId')
-    print ('Internal Web Property ID = %s' %
-           profile.get('internalWebPropertyId'))
-    print 'Profile ID                = %s' % profile.get('id')
-    print 'Profile Name              = %s' % profile.get('name')
+    print('Kind                      = %s' % profile.get('kind'))
+    print('Account ID                = %s' % profile.get('accountId'))
+    print('Web Property ID           = %s' % profile.get('webPropertyId'))
+    print(('Internal Web Property ID = %s' %
+           profile.get('internalWebPropertyId')))
+    print('Profile ID                = %s' % profile.get('id'))
+    print('Profile Name              = %s' % profile.get('name'))
 
-    print 'Currency         = %s' % profile.get('currency')
-    print 'Timezone         = %s' % profile.get('timezone')
-    print 'Default Page     = %s' % profile.get('defaultPage')
+    print('Currency         = %s' % profile.get('currency'))
+    print('Timezone         = %s' % profile.get('timezone'))
+    print('Default Page     = %s' % profile.get('defaultPage'))
 
-    print ('Exclude Query Parameters        = %s' %
-           profile.get('excludeQueryParameters'))
-    print ('Site Search Category Parameters = %s' %
-           profile.get('siteSearchCategoryParameters'))
-    print ('Site Search Query Parameters    = %s' %
-           profile.get('siteSearchQueryParameters'))
+    print(('Exclude Query Parameters        = %s' %
+           profile.get('excludeQueryParameters')))
+    print(('Site Search Category Parameters = %s' %
+           profile.get('siteSearchCategoryParameters')))
+    print(('Site Search Query Parameters    = %s' %
+           profile.get('siteSearchQueryParameters')))
 
-    print 'Created          = %s' % profile.get('created')
-    print 'Updated          = %s' % profile.get('updated')
+    print('Created          = %s' % profile.get('created'))
+    print('Updated          = %s' % profile.get('updated'))
 
-    print 'Self Link        = %s' % profile.get('selfLink')
+    print('Self Link        = %s' % profile.get('selfLink'))
     parent_link = profile.get('parentLink')
-    print 'Parent link href = %s' % parent_link.get('href')
-    print 'Parent link type = %s' % parent_link.get('type')
+    print('Parent link href = %s' % parent_link.get('href'))
+    print('Parent link type = %s' % parent_link.get('type'))
     child_link = profile.get('childLink')
-    print 'Child link href  = %s' % child_link.get('href')
-    print 'Child link type  = %s' % child_link.get('type')
-    print
+    print('Child link href  = %s' % child_link.get('href'))
+    print('Child link type  = %s' % child_link.get('type'))
+    print()
 
   if not profiles_response.get('items'):
-    print 'No profiles found.\n'
+    print('No profiles found.\n')
 
 
 def print_goals(goals_response):
@@ -252,32 +253,32 @@
         collection
   """
 
-  print '------ Goals Collection -------'
+  print('------ Goals Collection -------')
   print_pagination_info(goals_response)
-  print
+  print()
 
   for goal in goals_response.get('items', []):
-    print 'Goal ID     = %s' % goal.get('id')
-    print 'Kind        = %s' % goal.get('kind')
-    print 'Self Link        = %s' % goal.get('selfLink')
+    print('Goal ID     = %s' % goal.get('id'))
+    print('Kind        = %s' % goal.get('kind'))
+    print('Self Link        = %s' % goal.get('selfLink'))
 
-    print 'Account ID               = %s' % goal.get('accountId')
-    print 'Web Property ID          = %s' % goal.get('webPropertyId')
-    print ('Internal Web Property ID = %s' %
-           goal.get('internalWebPropertyId'))
-    print 'Profile ID               = %s' % goal.get('profileId')
+    print('Account ID               = %s' % goal.get('accountId'))
+    print('Web Property ID          = %s' % goal.get('webPropertyId'))
+    print(('Internal Web Property ID = %s' %
+           goal.get('internalWebPropertyId')))
+    print('Profile ID               = %s' % goal.get('profileId'))
 
-    print 'Goal Name   = %s' % goal.get('name')
-    print 'Goal Value  = %s' % goal.get('value')
-    print 'Goal Active = %s' % goal.get('active')
-    print 'Goal Type   = %s' % goal.get('type')
+    print('Goal Name   = %s' % goal.get('name'))
+    print('Goal Value  = %s' % goal.get('value'))
+    print('Goal Active = %s' % goal.get('active'))
+    print('Goal Type   = %s' % goal.get('type'))
 
-    print 'Created     = %s' % goal.get('created')
-    print 'Updated     = %s' % goal.get('updated')
+    print('Created     = %s' % goal.get('created'))
+    print('Updated     = %s' % goal.get('updated'))
 
     parent_link = goal.get('parentLink')
-    print 'Parent link href = %s' % parent_link.get('href')
-    print 'Parent link type = %s' % parent_link.get('type')
+    print('Parent link href = %s' % parent_link.get('href'))
+    print('Parent link type = %s' % parent_link.get('type'))
 
     # Print the goal details depending on the type of goal.
     if goal.get('urlDestinationDetails'):
@@ -295,10 +296,10 @@
     elif goal.get('eventDetails'):
       print_event_goal_details(goal.get('eventDetails'))
 
-    print
+    print()
 
   if not goals_response.get('items'):
-    print 'No goals found.\n'
+    print('No goals found.\n')
 
 
 def print_url_destination_goal_details(goal_details):
@@ -308,20 +309,20 @@
     goal_details: The details portion of the goal response.
   """
 
-  print '------ Url Destination Goal -------'
-  print 'Goal URL            = %s' % goal_details.get('url')
-  print 'Case Sensitive      = %s' % goal_details.get('caseSensitive')
-  print 'Match Type          = %s' % goal_details.get('matchType')
-  print 'First Step Required = %s' % goal_details.get('firstStepRequired')
+  print('------ Url Destination Goal -------')
+  print('Goal URL            = %s' % goal_details.get('url'))
+  print('Case Sensitive      = %s' % goal_details.get('caseSensitive'))
+  print('Match Type          = %s' % goal_details.get('matchType'))
+  print('First Step Required = %s' % goal_details.get('firstStepRequired'))
 
-  print '------ Url Destination Goal Steps -------'
+  print('------ Url Destination Goal Steps -------')
   for goal_step in goal_details.get('steps', []):
-    print 'Step Number  = %s' % goal_step.get('number')
-    print 'Step Name    = %s' % goal_step.get('name')
-    print 'Step URL     = %s' % goal_step.get('url')
+    print('Step Number  = %s' % goal_step.get('number'))
+    print('Step Name    = %s' % goal_step.get('name'))
+    print('Step URL     = %s' % goal_step.get('url'))
 
   if not goal_details.get('steps'):
-    print 'No Steps Configured'
+    print('No Steps Configured')
 
 
 def print_visit_time_on_site_goal_details(goal_details):
@@ -331,9 +332,9 @@
     goal_details: The details portion of the goal response.
   """
 
-  print '------ Visit Time On Site Goal -------'
-  print 'Comparison Type  = %s' % goal_details.get('comparisonType')
-  print 'comparison Value = %s' % goal_details.get('comparisonValue')
+  print('------ Visit Time On Site Goal -------')
+  print('Comparison Type  = %s' % goal_details.get('comparisonType'))
+  print('comparison Value = %s' % goal_details.get('comparisonValue'))
 
 
 def print_visit_num_pages_goal_details(goal_details):
@@ -343,9 +344,9 @@
     goal_details: The details portion of the goal response.
   """
 
-  print '------ Visit Num Pages Goal -------'
-  print 'Comparison Type  = %s' % goal_details.get('comparisonType')
-  print 'comparison Value = %s' % goal_details.get('comparisonValue')
+  print('------ Visit Num Pages Goal -------')
+  print('Comparison Type  = %s' % goal_details.get('comparisonType'))
+  print('comparison Value = %s' % goal_details.get('comparisonValue'))
 
 
 def print_event_goal_details(goal_details):
@@ -355,19 +356,19 @@
     goal_details: The details portion of the goal response.
   """
 
-  print '------ Event Goal -------'
-  print 'Use Event Value  = %s' % goal_details.get('useEventValue')
+  print('------ Event Goal -------')
+  print('Use Event Value  = %s' % goal_details.get('useEventValue'))
 
   for event_condition in goal_details.get('eventConditions', []):
     event_type = event_condition.get('type')
-    print 'Type             = %s' % event_type
+    print('Type             = %s' % event_type)
 
     if event_type in ('CATEGORY', 'ACTION', 'LABEL'):
-      print 'Match Type       = %s' % event_condition.get('matchType')
-      print 'Expression       = %s' % event_condition.get('expression')
+      print('Match Type       = %s' % event_condition.get('matchType'))
+      print('Expression       = %s' % event_condition.get('expression'))
     else:  # VALUE type.
-      print 'Comparison Type  = %s' % event_condition.get('comparisonType')
-      print 'Comparison Value = %s' % event_condition.get('comparisonValue')
+      print('Comparison Type  = %s' % event_condition.get('comparisonType'))
+      print('Comparison Value = %s' % event_condition.get('comparisonValue'))
 
 
 def print_segments(segments_response):
@@ -378,19 +379,19 @@
         Segments collection.
   """
 
-  print '------ Segments Collection -------'
+  print('------ Segments Collection -------')
   print_pagination_info(segments_response)
-  print
+  print()
 
   for segment in segments_response.get('items', []):
-    print 'Segment ID = %s' % segment.get('id')
-    print 'Kind       = %s' % segment.get('kind')
-    print 'Self Link  = %s' % segment.get('selfLink')
-    print 'Name       = %s' % segment.get('name')
-    print 'Definition = %s' % segment.get('definition')
-    print 'Created    = %s' % segment.get('created')
-    print 'Updated    = %s' % segment.get('updated')
-    print
+    print('Segment ID = %s' % segment.get('id'))
+    print('Kind       = %s' % segment.get('kind'))
+    print('Self Link  = %s' % segment.get('selfLink'))
+    print('Name       = %s' % segment.get('name'))
+    print('Definition = %s' % segment.get('definition'))
+    print('Created    = %s' % segment.get('created'))
+    print('Updated    = %s' % segment.get('updated'))
+    print()
 
 
 def print_pagination_info(management_response):
@@ -401,15 +402,15 @@
         Management API.
   """
 
-  print 'Items per page = %s' % management_response.get('itemsPerPage')
-  print 'Total Results  = %s' % management_response.get('totalResults')
-  print 'Start Index    = %s' % management_response.get('startIndex')
+  print('Items per page = %s' % management_response.get('itemsPerPage'))
+  print('Total Results  = %s' % management_response.get('totalResults'))
+  print('Start Index    = %s' % management_response.get('startIndex'))
 
   # These only have values if other result pages exist.
   if management_response.get('previousLink'):
-    print 'Previous Link  = %s' % management_response.get('previousLink')
+    print('Previous Link  = %s' % management_response.get('previousLink'))
   if management_response.get('nextLink'):
-    print 'Next Link      = %s' % management_response.get('nextLink')
+    print('Next Link      = %s' % management_response.get('nextLink'))
 
 
 if __name__ == '__main__':
diff --git a/samples/audit/audit.py b/samples/audit/audit.py
index 13b9ccf..a039cc7 100644
--- a/samples/audit/audit.py
+++ b/samples/audit/audit.py
@@ -33,6 +33,7 @@
 
   $ python audit.py --logging_level=DEBUG
 """
+from __future__ import print_function
 
 __author__ = 'rahulpaul@google.com (Rahul Paul)'
 
@@ -55,7 +56,7 @@
     activities = service.activities()
 
     # Retrieve the first two activities
-    print 'Retrieving the first 2 activities...'
+    print('Retrieving the first 2 activities...')
     activity_list = activities.list(
         applicationId='207535951991', customerId='C01rv1wm7', maxResults='2',
         actorEmail='admin@enterprise-audit-clientlib.com').execute()
@@ -66,7 +67,7 @@
     if match is not None:
       next_token = match.group(0)
 
-      print '\nRetrieving the next 2 activities...'
+      print('\nRetrieving the next 2 activities...')
       activity_list = activities.list(
           applicationId='207535951991', customerId='C01rv1wm7',
           maxResults='2', actorEmail='admin@enterprise-audit-clientlib.com',
diff --git a/samples/blogger/blogger.py b/samples/blogger/blogger.py
index b556c88..6af064c 100644
--- a/samples/blogger/blogger.py
+++ b/samples/blogger/blogger.py
@@ -31,6 +31,7 @@
 
   $ python blogger.py --logging_level=DEBUG
 """
+from __future__ import print_function
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
@@ -54,24 +55,24 @@
 
       # Retrieve this user's profile information
       thisuser = users.get(userId='self').execute(http=http)
-      print 'This user\'s display name is: %s' % thisuser['displayName']
+      print('This user\'s display name is: %s' % thisuser['displayName'])
 
       # Retrieve the list of Blogs this user has write privileges on
       thisusersblogs = users.blogs().list(userId='self').execute()
       for blog in thisusersblogs['items']:
-        print 'The blog named \'%s\' is at: %s' % (blog['name'], blog['url'])
+        print('The blog named \'%s\' is at: %s' % (blog['name'], blog['url']))
 
       posts = service.posts()
 
       # List the posts for each blog this user has
       for blog in thisusersblogs['items']:
-        print 'The posts for %s:' % blog['name']
+        print('The posts for %s:' % blog['name'])
         request = posts.list(blogId=blog['id'])
         while request != None:
           posts_doc = request.execute(http=http)
           if 'items' in posts_doc and not (posts_doc['items'] is None):
             for post in posts_doc['items']:
-              print '  %s (%s)' % (post['title'], post['url'])
+              print('  %s (%s)' % (post['title'], post['url']))
           request = posts.list_next(request, posts_doc)
 
   except client.AccessTokenRefreshError:
diff --git a/samples/groupssettings/groupsettings.py b/samples/groupssettings/groupsettings.py
index 018a2a2..c403757 100644
--- a/samples/groupssettings/groupsettings.py
+++ b/samples/groupssettings/groupsettings.py
@@ -24,6 +24,7 @@
 
   $ python groupsettings.py --help
 """
+from __future__ import print_function
 
 __author__ = 'Shraddha Gupta <shraddhag@google.com>'
 
@@ -75,12 +76,12 @@
 
   # Retrieve the group properties
   g = group.get(groupUniqueId=groupId).execute()
-  print '\nGroup properties for group %s\n' % g['name']
+  print('\nGroup properties for group %s\n' % g['name'])
   pprint.pprint(g)
 
   # If dictionary is empty, return without updating the properties.
   if not settings.keys():
-    print '\nGive access parameters to update group access permissions\n'
+    print('\nGive access parameters to update group access permissions\n')
     return
 
   body = {}
@@ -94,7 +95,7 @@
   # Update the properties of group
   g1 = group.update(groupUniqueId=groupId, body=body).execute()
 
-  print '\nUpdated Access Permissions to the group\n'
+  print('\nUpdated Access Permissions to the group\n')
   pprint.pprint(g1)
 
 
@@ -126,7 +127,7 @@
   (options, args) = parser.parse_args()
 
   if options.groupId is None:
-    print 'Give the groupId for the group'
+    print('Give the groupId for the group')
     parser.print_help()
     return
 
@@ -134,7 +135,7 @@
 
   if (options.whoCanInvite or options.whoCanJoin or options.whoCanPostMessage
       or options.whoCanPostMessage or options.whoCanViewMembership) is None:
-    print 'No access parameters given in input to update access permissions'
+    print('No access parameters given in input to update access permissions')
     parser.print_help()
   else:
     settings = {'whoCanInvite': options.whoCanInvite,
@@ -152,7 +153,7 @@
   credentials = storage.get()
 
   if credentials is None or credentials.invalid:
-    print 'invalid credentials'
+    print('invalid credentials')
     # Save the credentials in storage to be used in subsequent runs.
     credentials = run(FLOW, storage)
 
diff --git a/samples/plus/plus.py b/samples/plus/plus.py
index ce3e712..cc7d146 100755
--- a/samples/plus/plus.py
+++ b/samples/plus/plus.py
@@ -18,6 +18,7 @@
 """Simple command-line sample for the Google+ API.
 
 Command-line application that retrieves the list of the user's posts."""
+from __future__ import print_function
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
@@ -36,9 +37,9 @@
   try:
     person = service.people().get(userId='me').execute()
 
-    print 'Got your ID: %s' % person['displayName']
-    print
-    print '%-040s -> %s' % ('[Activitity ID]', '[Content]')
+    print('Got your ID: %s' % person['displayName'])
+    print()
+    print('%-040s -> %s' % ('[Activitity ID]', '[Content]'))
 
     # Don't execute the request until we reach the paging loop below.
     request = service.activities().list(
@@ -48,7 +49,7 @@
     while request is not None:
       activities_doc = request.execute()
       for item in activities_doc.get('items', []):
-        print '%-040s -> %s' % (item['id'], item['object']['content'][:30])
+        print('%-040s -> %s' % (item['id'], item['object']['content'][:30]))
 
       request = service.activities().list_next(request, activities_doc)
 
diff --git a/samples/prediction/prediction.py b/samples/prediction/prediction.py
index 50c1eba..b0092d9 100644
--- a/samples/prediction/prediction.py
+++ b/samples/prediction/prediction.py
@@ -33,6 +33,7 @@
 
   $ python prediction.py --logging_level=DEBUG
 """
+from __future__ import print_function
 
 __author__ = ('jcgregorio@google.com (Joe Gregorio), '
               'marccohen@google.com (Marc Cohen)')
@@ -66,9 +67,9 @@
   '''Format and print header block sized to length of line'''
   header_str = '='
   header_line = header_str * len(line)
-  print '\n' + header_line
-  print line
-  print header_line
+  print('\n' + header_line)
+  print(line)
+  print(header_line)
 
 
 def main(argv):
@@ -89,14 +90,14 @@
     # List models.
     print_header('Fetching list of first ten models')
     result = papi.list(maxResults=10, project=flags.project_id).execute()
-    print 'List results:'
+    print('List results:')
     pprint.pprint(result)
 
     # Start training request on a data set.
     print_header('Submitting model training request')
     body = {'id': flags.model_id, 'storageDataLocation': flags.object_name}
     start = papi.insert(body=body, project=flags.project_id).execute()
-    print 'Training results:'
+    print('Training results:')
     pprint.pprint(start)
 
     # Wait for the training to complete.
@@ -104,7 +105,7 @@
     while True:
       status = papi.get(id=flags.model_id, project=flags.project_id).execute()
       state = status['trainingStatus']
-      print 'Training state: ' + state
+      print('Training state: ' + state)
       if state == 'DONE':
         break
       elif state == 'RUNNING':
@@ -114,14 +115,14 @@
         raise Exception('Training Error: ' + state)
 
       # Job has completed.
-      print 'Training completed:'
+      print('Training completed:')
       pprint.pprint(status)
       break
 
     # Describe model.
     print_header('Fetching model description')
     result = papi.analyze(id=flags.model_id, project=flags.project_id).execute()
-    print 'Analyze results:'
+    print('Analyze results:')
     pprint.pprint(result)
 
     # Make some predictions using the newly trained model.
@@ -130,13 +131,13 @@
       body = {'input': {'csvInstance': [sample_text]}}
       result = papi.predict(
         body=body, id=flags.model_id, project=flags.project_id).execute()
-      print 'Prediction results for "%s"...' % sample_text
+      print('Prediction results for "%s"...' % sample_text)
       pprint.pprint(result)
 
     # Delete model.
     print_header('Deleting model')
     result = papi.delete(id=flags.model_id, project=flags.project_id).execute()
-    print 'Model deleted.'
+    print('Model deleted.')
 
   except client.AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run '
diff --git a/samples/searchforshopping/histograms.py b/samples/searchforshopping/histograms.py
index 6a78418..c5ecac7 100644
--- a/samples/searchforshopping/histograms.py
+++ b/samples/searchforshopping/histograms.py
@@ -4,6 +4,7 @@
 # Copyright 2014 Google Inc. All Rights Reserved.
 
 """Query with ranked results against the shopping search API"""
+from __future__ import print_function
 
 from googleapiclient.discovery import build
 
@@ -37,7 +38,7 @@
   # Pick the first and only facet for this query
   facet = response['facets'][0]
 
-  print '\n\tHistogram for "%s":\n' % facet['property']
+  print('\n\tHistogram for "%s":\n' % facet['property'])
 
   labels = []
   values = []
@@ -49,9 +50,9 @@
   weighting = 50.0 / max(values)
 
   for label, value in zip(labels, values):
-    print label, '#' * int(weighting * value), '(%s)' % value
+    print(label, '#' * int(weighting * value), '(%s)' % value)
 
-  print
+  print()
 
 
 if __name__ == '__main__':
diff --git a/samples/searchforshopping/main.py b/samples/searchforshopping/main.py
index 93b58c3..1f6ca67 100644
--- a/samples/searchforshopping/main.py
+++ b/samples/searchforshopping/main.py
@@ -8,6 +8,7 @@
 
 Command-line application that does a search for products.
 '''
+from __future__ import print_function
 
 __author__ = 'aherrman@google.com (Andy Herrman)'
 
@@ -22,7 +23,7 @@
             developerKey='AIzaSyDRRpR3GS1F1_jKNNM9HCNd2wJQyPG3oN0')
 
   # Search over all public offers:
-  print 'Searching all public offers.'
+  print('Searching all public offers.')
   res = p.products().list(
       country='US',
       source='public',
@@ -31,8 +32,8 @@
   print_items(res['items'])
 
   # Search over a specific merchant's offers:
-  print
-  print 'Searching Google Store.'
+  print()
+  print('Searching Google Store.')
   res = p.products().list(
       country='US',
       source='public',
@@ -45,8 +46,8 @@
   googleId = res['items'][0]['product']['googleId']
 
   # Get data for the single public offer:
-  print
-  print 'Getting data for offer %s' % googleId
+  print()
+  print('Getting data for offer %s' % googleId)
   res = p.products().get(
       source='public',
       accountId='5968952',
@@ -59,9 +60,9 @@
 def print_item(item):
   """Displays a single item: title, merchant, link."""
   product = item['product']
-  print '- %s [%s] (%s)' % (product['title'],
+  print('- %s [%s] (%s)' % (product['title'],
                           product['author']['name'],
-                          product['link'])
+                          product['link']))
 
 
 def print_items(items):
diff --git a/samples/translate/main.py b/samples/translate/main.py
index 72bed44..d79fca2 100644
--- a/samples/translate/main.py
+++ b/samples/translate/main.py
@@ -19,6 +19,7 @@
 
 Command-line application that translates some text.
 """
+from __future__ import print_function
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
@@ -32,11 +33,11 @@
   # to get an API key for your own application.
   service = build('translate', 'v2',
             developerKey='AIzaSyDRRpR3GS1F1_jKNNM9HCNd2wJQyPG3oN0')
-  print service.translations().list(
+  print(service.translations().list(
       source='en',
       target='fr',
       q=['flower', 'car']
-    ).execute()
+    ).execute())
 
 if __name__ == '__main__':
   main()
