Back to plugin list
airtable
Official

Airtable

This plugin is in preview.

The CloudQuery Airtable plugin pulls data from Airtable and loads it into any supported CloudQuery destination

Publisher

cloudquery

Repositorygithub.com
Latest version

v2.2.0

Type

Source

Platforms
Date Published

Price

Free

Set up process


brew install cloudquery/tap/cloudquery

1. Download CLI and login

See installation options

2. Create source and destination configs

Plugin configuration

cloudquery sync airtable.yml postgresql.yml

3. Run the sync

CloudQuery sync

Overview

The CloudQuery Airtable plugin pulls data from Airtable and loads it into any supported CloudQuery destination (e.g. PostgreSQL, BigQuery, Snowflake, and more).
The plugin discover all bases and tables in your account and syncs them to the destination.

Example Configuration

This example syncs from Airtable to a Postgres destination. The (top level) source spec section is described in the Source Spec Reference.
kind: source
# Common source-plugin configuration
spec:
  name: airtable
  registry: docker
  path: docker.cloudquery.io/cloudquery/source-airtable:v2.1.0
  tables: ["*"]
  destinations: ["postgresql"]
  # airtable-specific configuration
  spec:
    access_token: "${AIRTABLE_ACCESS_TOKEN}" # required
    # endpoint_url: "https://api.airtable.com" # Optional, defaults to `https://api.airtable.com`
    # concurrency: 10000 # Optional, defaults to `10000`

Authentication

In order to fetch information from Airtable, cloudquery needs to authenticate using a personal access token for Airtable's API. Follow the instructions on the Airtable website and create a read-only token with data.records:read and schema.bases:read scopes.

Tables naming convention

In Airtable base names are not unique, and table names are unique within a base. The plugin uses the following naming convention for tables: <lowercase_base_id>__<snake_case_base_name>__<snake_case_table_name>. This ensures table names are unique across all bases (note the separator between name parts is __).
To sync only specific base(s) or table(s) you can use wildcard matching for the tables option, for example:
kind: source
spec:
  name: airtable
  registry: docker
  path: docker.cloudquery.io/cloudquery/source-airtable:v2.1.0
  tables:
    # Sync all tables under bases matching the name `base_name_to_sync`
    - "*__<base_name_to_sync>__*"
    # Sync all tables matching the name `table_name_to_sync`
    - "*__*__<table_name_to_sync>"
    # Sync all tables matching the name `table_name_to_sync` under bases matching the name `base_name_to_sync`
    - "*__<base_name_to_sync>__<table_name_to_sync>"
  ...

Configuration Reference

This is the (nested) spec used by the Airtable source plugin:
  • access_token (string) (required)
    Your Airtable API personal access token.
  • endpoint_url (string) (optional) (default: https://api.airtable.com)
    The endpoint URL to fetch data from.
  • concurrency (integer) (optional) (default: 10000)
    Best effort maximum number of tables to sync concurrently.


Subscribe to product updates

Be the first to know about new features.