Google Ads Query Language (GAQL) Tools

October 24, 2025 · View on GitHub

TypeScript autocomplete and CLI tools for Google Ads Query Language (GAQL).

Packages

This is a monorepo containing the following packages:

@gaql/core

Core validation and schema logic for GAQL. This package provides:

  • Schema Management: Support for Google Ads API v19, v20, and v21
  • Query Validation: Validate GAQL queries with detailed error messages
  • Parser: Parse GAQL queries and provide completion suggestions
  • Type Definitions: TypeScript types for GAQL resources, fields, metrics, and segments

@gaql/cli

Command-line interface for GAQL validation.

# Install globally
npm install -g @gaql/cli

# Or use with npx
npx @gaql/cli validate query.ts

gaql-vscode

VS Code extension for GAQL with validation, autocomplete, IntelliSense, and diagnostics.

  • Search "Google Ads Query Language" in VS Code Extensions marketplace
  • Or install from VS Code Marketplace

Quick Start

CLI Usage

# Validate GAQL queries in a file
gaql validate query.ts

# Validate from stdin
echo "SELECT campaign.id FROM campaign" | gaql validate

# Specify API version
gaql validate query.ts --api-version 21

# Output in JSON format
gaql validate query.ts --format json

Programmatic Usage

import { validateQuery, setApiVersion } from '@gaql/core';

// Set API version
setApiVersion('21');

// Validate a query
const query = `
  SELECT
    campaign.id,
    campaign.name,
    metrics.clicks
  FROM campaign
  WHERE campaign.status = 'ENABLED'
`;

const result = validateQuery(query);
if (!result.valid) {
  console.error('Validation errors:', result.errors);
}

Features

  • Multi-version Support: Google Ads API v19, v20, and v21
  • Comprehensive Validation: Validate resources, fields, metrics, and segments
  • Detailed Error Messages: Get precise error locations with suggestions
  • VS Code Extension: Real-time validation, autocomplete, and IntelliSense
  • CLI Tool: Validate queries from files or stdin
  • JSON Output: Machine-readable validation results
  • Type-safe: Full TypeScript support
  • Multi-language: English and Japanese support

Development

This project uses:

  • Turborepo: Monorepo management
  • pnpm: Package manager
  • TypeScript: Type-safe development
  • Biome: Linting and formatting
  • Vitest: Testing framework
# Install dependencies
pnpm install

# Build all packages
pnpm build

# Run linter
pnpm lint

# Run tests
pnpm test

# Format code
pnpm format

Project Structure

google-ads-query-language/
├── packages/
│   ├── core/              # @gaql/core - Core validation & schema logic
│   ├── cli/               # @gaql/cli - CLI tool
│   └── vscode-extension/  # gaql-vscode - VS Code extension
├── turbo.json             # Turborepo config
├── package.json           # Root package.json
└── pnpm-workspace.yaml    # Workspace config

License

MIT