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

# Google Calendar

> Find events in your user's Google Calendar

export const ConnectView = ({integration, image}) => {
  return <Frame caption={`Hyperspell Connect lets your users easily connect their ${integration} account.`}><svg width="565" height="264" viewBox="0 0 565 264" fill="none" xmlns="http://www.w3.org/2000/svg">
        <rect width="565" height="264" fill="#F5F5F5" />
        <rect width="565" height="264" fill="#FBFBFC" />
        <text fill="#23272E" font-family="Finlandica" font-size="20" letter-spacing="0em"><tspan x="33" y="49">This app uses Hyperspell to securely connect to your data.</tspan></text>
        <rect x="34.5" y="103.5" width="497" height="56" rx="7.5" fill="white" stroke="#E5E7EB" />
        <rect x="34.5" y="178.5" width="497" height="56" rx="7.5" stroke="#E5E7EB" />
        <text fill="#23272E" font-family="Finlandica" font-size="16" letter-spacing="0em"><tspan x="34" y="82.1">Please connect the following accounts to continue:</tspan></text>
        <text fill="#23272E" font-family="Finlandica" font-size="16" letter-spacing="0em"><tspan x="90" y="137.1">{integration}</tspan></text>
        <text fill="#23272E" font-family="Finlandica" font-size="16" letter-spacing="0em"><tspan x="90" y="212.1">Return to app</tspan></text>
        <path d="M503 133H513" stroke="#697282" stroke-width="1.5" stroke-linecap="round" />
        <path d="M508.5 128.5L513 133L508.5 137.5" stroke="#697282" stroke-width="1.5" stroke-linecap="round" />
        <svg x="48" y="117" width="32" height="32">
            <image href={image} width="32" height="32" />
        </svg>
        <path d="M60 207.5L73 207.5C74.1046 207.5 75 206.605 75 205.5L75 203" stroke="#697282" stroke-width="1.5" stroke-linecap="round" />
        <path d="M64.5 212L60 207.5L64.5 203" stroke="#697282" stroke-width="1.5" stroke-linecap="round" />
    </svg></Frame>;
};

export const LiveSearch = () => <Tooltip tip="Live search uses AI to search your integrations native APIs in real-time. This is slower than indexed search and often not as accurate, but does not store any data on Hyperspell's servers and is always up to date.">
        <span className="text-emerald-600">
            <Icon icon="bolt" size={14} color="#009966" iconType="solid" /> Live Search</span>
    </Tooltip>;

# Overview

The Google Calendar integration lets you find events in your user's Google Calendar. It only supports <LiveSearch />.

## Authentication

The Google Calendar integration requires an OAuth connection, and is availble in [Hyperspell Connect](/usage/connect) without any additional setup:

<ConnectView integration="Google Calendar" image="https://app.nango.dev/images/template-logos/google-calendar.svg" />

## Search Options

Following options are available for the `options` parameter of `google_calendar`:

<ParamField body="calendar_id" type="string">
  ID of the calendar to query. If not provided, the user's primary calendar will be used.
</ParamField>

## Resources

The Web Crawler integration returns `CalendarEvent` resources:

<Expandable title="CalendarEvent Schema">
  <ResponseField name="resource_id" type="string" required>
    The unique identifier of the event.
  </ResponseField>

  <ResponseField name="source" type="string" required>
    The provider that fetched the event, which is `google_calendar` if this integration is used to query it.
  </ResponseField>

  <ResponseField name="start_at" type="datetime" required={false}>
    The start time of the event.
  </ResponseField>

  <ResponseField name="end_at" type="datetime" required={false}>
    The end time of the event.
  </ResponseField>

  <ResponseField name="title" type="string" required={false}>
    The title of the event.
  </ResponseField>

  <ResponseField name="description" type="string" required={false}>
    The description of the event.
  </ResponseField>

  <ResponseField name="location" type="string" required={false}>
    The location of the event.
  </ResponseField>

  <ResponseField name="meeting_url" type="string" required={false}>
    The URL for the meeting, if it's a virtual event.
  </ResponseField>

  <ResponseField name="attendees" type="person[]" required={false}>
    A list of people attending the event.
  </ResponseField>
</Expandable>

## Additional Endpoints

### Index a website before querying it

`GET /integrations/google_calendar/list`

Call this endpoint to list all calendars for the user.

<Expandable title="Calendar List Schema">
  <ResponseField name="id" type="calendar[]" required>
    A list of calendars.
  </ResponseField>
</Expandable>
