Back to source list
Official
Airtable
This plugin is in preview.
The CloudQuery Airtable plugin pulls data from Airtable and loads it into any supported CloudQuery destination
Price
Free
Set up process #
brew install cloudquery/tap/cloudquery
1. Download CLI and login
2. Create source and destination configs
Plugin configurationOverview #
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.2.10
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.2.10
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.
Running in a Containerized Environment #
To run the Airtable plugin in a containerized environment, see the Using CloudQuery Docker Registry Plugins Inside a Containerized Environment guide.