To give form creators more control over who can respond, we're introducing granular controls for responders. Forms created with the API after January 31, 2026 will have an unpublished state by default. To learn more, see API changes to Google Forms.
Which form responses to return. Currently, the only supported filters are:
timestamp > N
which means to get all form responses submitted after (but not at) timestamp N. *
timestamp >= N
which means to get all form responses submitted at and after timestamp N.
For both supported filters, timestamp must be formatted in RFC3339 UTC "Zulu" format. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
pageSize
integer
The maximum number of responses to return. The service may return fewer than this value. If unspecified or zero, at most 5000 responses are returned.
pageToken
string
A page token returned by a previous list response. If this field is set, the form and the values of the filter must be the same as for the original request.
Request body
The request body must be empty.
Response body
Response to a ListFormResponsesRequest.
If successful, the response body contains data with the following structure:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-27 UTC."],[],["To list form responses, use a `GET` request to the specified URL, including the form's ID in the path. Utilize optional query parameters like `filter`, `pageSize`, and `pageToken` to refine the results. The request body must be empty. The response includes an array of form responses and a `nextPageToken` if additional responses are available. Authorization requires specific OAuth scopes like `drive`, `drive.file`, or `forms.responses.readonly`.\n"],null,["# Method: forms.responses.list\n\n- [HTTP request](#body.HTTP_TEMPLATE)\n- [Path parameters](#body.PATH_PARAMETERS)\n- [Query parameters](#body.QUERY_PARAMETERS)\n- [Request body](#body.request_body)\n- [Response body](#body.response_body)\n - [JSON representation](#body.ListFormResponsesResponse.SCHEMA_REPRESENTATION)\n- [Authorization scopes](#body.aspect)\n- [Try it!](#try-it)\n\nList a form's responses.\n\n### HTTP request\n\n`GET https://forms.googleapis.com/v1/forms/{formId}/responses`\n\nThe URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.\n\n### Path parameters\n\n| Parameters ||\n|----------|------------------------------------------------------------|\n| `formId` | `string` Required. ID of the Form whose responses to list. |\n\n### Query parameters\n\n| Parameters ||\n|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `filter` | `string` Which form responses to return. Currently, the only supported filters are: - `timestamp \u003e `*N* which means to get all form responses submitted after (but not at) timestamp *N*. \\* `timestamp \u003e= `*N* which means to get all form responses submitted at and after timestamp *N*. For both supported filters, timestamp must be formatted in RFC3339 UTC \"Zulu\" format. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\". |\n| `pageSize` | `integer` The maximum number of responses to return. The service may return fewer than this value. If unspecified or zero, at most 5000 responses are returned. |\n| `pageToken` | `string` A page token returned by a previous list response. If this field is set, the form and the values of the filter must be the same as for the original request. |\n\n### Request body\n\nThe request body must be empty.\n\n### Response body\n\nResponse to a ListFormResponsesRequest.\n\nIf successful, the response body contains data with the following structure:\n\n| JSON representation |\n|----------------------------------------------------------------------------------------------------------------------------------------|\n| ``` { \"responses\": [ { object (/workspace/forms/api/reference/rest/v1/forms.responses#FormResponse) } ], \"nextPageToken\": string } ``` |\n\n| Fields ||\n|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `responses[]` | `object (`[FormResponse](/workspace/forms/api/reference/rest/v1/forms.responses#FormResponse)`)` The returned form responses. Note: The `formId` field is not returned in the `FormResponse` object for list requests. |\n| `nextPageToken` | `string` If set, there are more responses. To get the next page of responses, provide this as `pageToken` in a future request. |\n\n### Authorization scopes\n\nRequires one of the following OAuth scopes:\n\n- `https://www.googleapis.com/auth/drive`\n- `\n https://www.googleapis.com/auth/drive.file`\n- `\n https://www.googleapis.com/auth/forms.responses.readonly`\n\nFor more information, see the [Authorization guide](/workspace/guides/configure-oauth-consent)."]]