> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automate.ax/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Automate.ax automations are TypeScript programs.
> Use Bun for installation and command examples.
> Use Automate.ax for the product name and automate.ax for the package, CLI, and domain.
> Treat documented public APIs as current; do not invent transitional or deprecated names.

# List events

> List one page of Google Calendar events with filters and synchronization tokens.

`listEvents` returns one provider page and preserves pagination and incremental
sync tokens. Use it when you need explicit paging or maintain your own calendar
synchronization cursor.

## Example

```ts theme={null}
import { automation, onHttpRequest } from "automate.ax"
import { listEvents } from "automate.ax/google-calendar"

export default automation("List this week's events", () => {
  onHttpRequest({ scope: "automation" })

  listEvents({
    calendar: "Team Calendar",
    timeMin: "2026-08-10T00:00:00-07:00",
    timeMax: "2026-08-17T00:00:00-07:00",
    singleEvents: true,
    maxResults: 250,
  })
})
```

## Inputs

| Property                                            | Type                     | Required | Description                                                                                  |
| --------------------------------------------------- | ------------------------ | -------- | -------------------------------------------------------------------------------------------- |
| `calendar`                                          | `string`                 | No       | Exact title or ID; defaults to primary.                                                      |
| `maxResults`                                        | `number`                 | No       | Page size from 1 to 2,500.                                                                   |
| `pageToken`                                         | `string`                 | No       | `nextPageToken` from the previous page.                                                      |
| `query`                                             | `string`                 | No       | Google's free-text event search.                                                             |
| `timeMin`, `timeMax`, `updatedMin`                  | RFC 3339 `string`        | No       | Inclusive event-end lower bound, exclusive event-start upper bound, and minimum update time. |
| `singleEvents`                                      | `boolean`                | No       | Expand recurring series into instances and order by start time.                              |
| `includeDeleted`                                    | `boolean`                | No       | Include cancelled/deleted representations.                                                   |
| `eventTypes`                                        | `string[]`               | No       | Provider event types to include.                                                             |
| `privateExtendedProperty`, `sharedExtendedProperty` | `string[]`               | No       | `name=value` extended-property filters.                                                      |
| `syncToken`                                         | `string`                 | No       | Token from a completed earlier listing.                                                      |
| `timeZone`                                          | `string`                 | No       | IANA response timezone.                                                                      |
| `account`                                           | Google account reference | No       | Connected account; defaults to the project binding.                                          |

## Output

Returns `{ events: CalendarEvent[]; nextPageToken?: string; nextSyncToken?: string; timeZone?: string; updatedAt?: string }`. See [Get event](/reference/integrations/google-calendar/actions/get-event#output) for each event. Follow `nextPageToken` until absent; only then persist `nextSyncToken`. Google restricts which filters can be combined with a `syncToken`, and an expired token causes the provider request to fail so you can perform a full resync.
