I created a script before that does something like this. I'm not able to share the full script at this time, but I can share some details about the process I used.
In my case, there was a survey created using Classic Canvas Quizzes that was added to a select set of courses that were piloting a new program and they wanted to aggregate the results.
To start, my script would read in a CSV file with the courses that I needed to get the data from. I used the provisioning report and filtered it to just the courses that needed to be included.
For each Canvas course ID, I then used the List quizzes in a course endpoint to get the quizzes in the course. I set the search_term query parameter to the expected name of the survey/quiz. *Note, if faculty change the name the appropriate quiz may not be found and if duplicates are created there may be multiple results found. There is also a chance some quizzes that aren't relevant are included if the search_term for the quiz name isn't sufficiently unique from other quiz names in a course.
After getting the quizzes, I then processed over all the found quizzes in the courses to get the questions from the quiz using the List questions in a quiz or submission endpoint. *Note, if changes are made to questions after some students already submitted, you may need to handle this differently. Since it seemed unlikely for questions to be edited on these standardized surveys, I used this approach so I only had to make the call once for each quiz rather than getting the questions for each submission.
I then used the Get all quiz submissions endpoint to get the submissions for each quiz in each course. For the include[] query parameter I used submission, submission_history, and user. *Note, 'submission_history' isn't documented as a valid query parameter so it may eventually no longer work, but for now it allows retrieving the actual student responses to the questions within the submission.
I then extracted and formatted the data that I needed for the requested report and wrote the data to a new CSV file.