Why Google’s Updated API & Billing Structure Should Matter To You

Categories

News flash

Well, it was good while it lasted. Google’s recent changes to its Maps API products might shock you – and your wallet. The search engine giant has restructured and repriced their Google Platform APIs, raising its prices over 1,400%.

Google Maps Platform

A few weeks ago, Google rolled out significant changes requiring customers to pay more for map product usage and making it necessary to have an official API key connected to a credit card to even use their APIs. With the new changes, customers will get the first $200 of monthly usage for free; however this credit will now only cover 28,000 page loads per month. This is important to understand, especially if you’re using Dynamic Maps, because previously Google allowed 25,000 free page loads per day. No, your eyes are not deceiving you – the change they made went from per day to per month. Furthermore, previously if the amount of requests or loads exceeded 25,000 you were charged $.50 for every 1,000 additional requests. This update will charge a whopping $7.00 for every 1,000 additional requests.

So what does that mean for you? It means that if you already have an API key attached to a billing account, you should absolutely check your credit card statement and Google Cloud account to see if there have been any substantial charges since the change took effect. To protect yourself from any massive, unexpected charges in the future, you can set a daily limit on the number of requests per day that your app will accept. The downside to this however is that once the limit is reached your users will see a blank space where the map should be.

One bright spot here is that if you’re a nonprofit, crisis responder, news media organization or startup, you can apply for additional Maps platform credit by following the instructions Google provides on how to enroll.

Google has stated that this change has come from listening to their audience – developers and business owners. “We’ve heard that you want simple, easy to understand pricing that gives you access to all our core APIs. That’s one of the reasons we merged our Standard and Premium plans to form one pay-as-you go pricing plan for our core products.”   While it’s true that this merger has created a simplification of their 18 individual APIs into three products – Maps, Routes, and Places, it could also be a huge financial hit for many and will undoubtedly send many developers looking for open-source alternatives.

In the likely event that this sounds like a foreign language leaving you scratching your head, let us know! Our tech-savvy experts are equipped with the knowledge to help you navigate these changes.

Related Posts

2022 Facebook Update: Big Changes at Meta with Job Postings

Beginning this week, Meta (Facebook) will be making some changes to their Facebook Jobs offerings.  The job openings we post will now only appear on your Facebook page itself. Job seekers used to be able search for and find jobs throughout Facebook and within the Marketplace; now, they’ll need to navigate to your company’s individual Facebook […]

Keep Reading
facebook pixel data

How the Apple iOS 14 Release May Affect Your Facebook Ads

Apple announced back in May 2018 that it will provide users with an opt-in prompt on each app which will allow them to choose whether the user consents to third-party sites like Facebook to track their user data. As an advertiser we needed to dig into how this change would potentially affect how and where […]

Keep Reading

What is Proximity Marketing?

Proximity marketing is a great way for businesses to get noticed by local clients and customers. Simply put, proximity marketing is a system of strategies that use your customers’ or clients’ locations to deliver targeted advertising that’s catered to their needs. While local search marketing can target a general area, proximity marketing takes that one […]

Keep Reading
[gravityform id="4" title="true" description="true" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gravity-theme' id='gform_wrapper_4' style='display:none'><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <h2 class="gform_title">Reviews Demo</h2> <span class='gform_description'></span> <p class='gform_required_legend'>&quot;<span class="gfield_required gfield_required_asterisk">*</span>&quot; indicates required fields</p> </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/blog/google-updates-api-and-billing-structure/#gf_4' novalidate novalidate="novalidate"> <input type='hidden' class='gforms-pum' value='{"closepopup":false,"closedelay":0,"openpopup":false,"openpopup_id":0}' /> <div class='gform_body gform-body'><div id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><div id="field_4_1" class="gfield gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible gsurvey-survey-field " data-field-class="gsurvey-survey-field" data-js-reload="field_4_1"><label class='gfield_label' >How Are We Doing<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container gsurvey-rating-wrapper'><div class='gsurvey-rating' id='input_4_1'><input name='input_1' type='radio' value='grating1f1243827' id='choice_4_1_0' /><label for='choice_4_1_0' title='Excellent'>Excellent</label><input name='input_1' type='radio' value='grating191e3fd08' id='choice_4_1_1' /><label for='choice_4_1_1' title='Pretty good'>Pretty good</label><input name='input_1' type='radio' value='grating1159873a9' id='choice_4_1_2' /><label for='choice_4_1_2' title='Neutral'>Neutral</label><input name='input_1' type='radio' value='grating1a835fb08' id='choice_4_1_3' /><label for='choice_4_1_3' title='Not so great'>Not so great</label><input name='input_1' type='radio' value='grating1874123fa' id='choice_4_1_4' /><label for='choice_4_1_4' title='Terrible'>Terrible</label></div></div></div><div id="field_4_2" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >How can we improve your experience?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_2' id='input_4_2' class='textarea small' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div></div><div id="field_4_3" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_3"><label class='gfield_label' for='input_4_3' >Email<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_3' id='input_4_3' type='email' value='' class='large' aria-required="true" aria-invalid="false" /> </div></div><div id="field_4_4" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_4"><label class='gfield_label' for='input_4_4' >Comments</label><div class='ginput_container'><input name='input_4' id='input_4_4' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_4'>This field is for validation purposes and should be left unchanged.</div></div></div></div> <div class='gform_footer top_label'> <button type="submit" id="gform_submit_button_4" class="gform_button button" onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }'>Submit</button> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=1&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsIjNjZTc3NGZlZGQ2NTBmZTZiNDI5MDNiMmZmNzU0NmZlIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="142"/><script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script type="text/javascript"> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://www.brawnmediany.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://www.brawnmediany.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>