> ## 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.

# Find availability

> Find common fixed-duration free slots across Google calendars.

`findAvailability` turns free/busy data into candidate slots that are clear on
every selected calendar.

## Example

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

export default automation("Find interview slots", () => {
  onHttpRequest({ scope: "automation" })

  findAvailability({
    calendars: ["recruiter@example.com", "room-1@example.com"],
    timeMin: "2026-08-10T09:00:00-07:00",
    timeMax: "2026-08-10T17:00:00-07:00",
    durationMinutes: 45,
    stepMinutes: 15,
    limit: 10,
  })
})
```

## Inputs

`calendars` (1–50), RFC 3339 `timeMin`/`timeMax`, and `durationMinutes` (1–1,440)
are required. `stepMinutes` controls the candidate-start increment and defaults
to `15`; `limit` defaults to `20` and accepts 1–1,000. `timeZone` and `account`
are optional.

## Output

Returns `Signal<Array<{ start: string; end: string; durationMinutes: number }>>`
in chronological order. Times are ISO instants. Overlapping busy periods from
all calendars are merged before candidates are tested. The action can return
overlapping candidates when `stepMinutes` is shorter than `durationMinutes`.
