Batch retrieve formatted address along with geometry (lat/long) and output to csv
Use the csv library


x.writerows(custom_tuple(row) for row in data['results'])

Grabbing mutable data from the global scope is, I'm pretty sure, poor form. You should pass data as an argument to search_output.


Just pass in data['results'] as results, not the whole data object.
Consider calling it output_search_results.
Consider using precise type hints.
The existing argument search is being used as a file-name, so call it filename.

Pass the csv-writer object in as an argument to output_search_results. 


Maybe this means introducing a middle-layer function to create the csv-writer; that's fine.
This is going to let you call output_search_results multiple times after opening the file once.

Encapsulate the code that fetches data from google in its own function.


Maybe even in its own class, if you're going to try to make more intelligent handlers for the failure cases.
Now you can easily build the functionality to fetch a "next page" of results based on the next-page-token. It'll be a sibling to the above function, or maybe an option to it.

From here you can either pass data['next_page_token'] as another (optional) parameter to output_search_results, which will call itself recursively, or you can call it in a while loop as you grab each next page.
You'll probably need to add some safety measures, such as what to do if a file already exists, etc.